1. 程式人生 > >歷史管理與router路由

歷史管理與router路由

1.router路由管理

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>router</title>
</head>
<body>
<script>
    //歷史管理
    //路由  路徑->路由 獲取路由  對路由進行分發
    //頁面路由會進行跳轉window.location.href = 'http://hao123.com'
    /*
    hash路由,不會跳轉,能夠實現無重新整理的頁面的功能
    利用的框架打包上線,都會用hash
    如果頁面,也就意味者所有的資料要重新進行渲染,
    如果不用hash路由,那麼路由要在服務端進行渲染(如果沒有服務端渲染,那麼重新整理頁面,就會出現404)
    前端的框架都遵循前後端分離的思想

     */
window.location.hash = '#home'; //H5 window.history.pushState('name','無效的標題','/path'); //推進一個歷史狀態 //替換一個歷史狀態 window.history.replaceState('name','無效的標題','/path'); </script> </body> </html>

2.歷史管理

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset=
"UTF-8"> <title>歷史管理</title> <style> *{ margin:0; padding:0; } body{ background:#ddd; -webkit-user-select:none; user-select:none; } li{ list-style:none; }
#box{ width: 80%; height: 500px; border:1px solid white; margin: 150px auto 0; display:flex; justify-content: space-around; align-items:center; text-align:center } ul{ width: 150px; } li{ line-height: 35px; border:1px solid #000; margin-bottom: 15px; } #con{ width: calc( 80% - 200px ); height: 300px; border:1px solid white; } </style> </head> <body> <div id='box'> <ul id='list'></ul> <div id='con'></div> </div> <script src="data.js"></script> <script> let con = document.getElementById('con'); let str = ''; for(let key in data){ str += '<li data-name="'+key+'">'+key+'</li>' } list.innerHTML = str; let aLi = document.querySelectorAll('li'); aLi.forEach(function (item,index) { item.onclick = function () { console.log(this.dataset['name']); //列印key console.log(data[this.dataset['name']]); //列印value console.log(window.history); //歷史管理 //點選li新增歷史記錄,有歷史記錄就可以,點選前進後退按鈕 let name = decodeURI(this.dataset['name']); //進行解碼,防止中文報錯 if(window.history&&window.history.pushState){ //追加雜湊路由管理 window.history.pushState(name,'追夢','#path='+name); } } }); //點選前進 後退按鈕 window.onpopstate = function (e) { console.log(e.state); //列印key值 if(e.state){ con.innerHTML = data[e.state]; } } window.onhashchange = function () { console.log(window.location.hash); } // 在PC ‘移動端 瀏覽器 都有 前進後退的按鈕 // 但是 app 裡沒有的 // app 都是div模擬的 // 點選div 去實現返回上一個頁面 或 去到下一頁面 自己寫 // window.history.go( -1 ) 這是後退按鈕 // window.history.go( 1 ) 這是前進按鈕 // window.history.go( 0 ) 這是重新整理頁面 // window.history.back() 返回上一個頁面 // window.history.forward() 去到下一個頁面 </script> </body> </html>