- 稍微复杂一点的SPA,都需要路由
- vue-router 也是 vue 全家桶的标配之一
vue-router的路由模式
hash
h5 history
网页 url 组成部分
// http://127.0.0.1:8881/01-hash.html?a=100&b=20#/aaa/bbblocation.protocol // http:location.hostname // 127.0.0.1location.host // 127.0.0.1:8881location.port // 8881location.pathname // /01-hash.htmllocation.search // ?a=100&b=20location.hash // #/aaa/bbb
hash 的特点
hash 变化会触发网页跳转,即浏览器的前进、后退
hash 变化不会刷新页面,SPA必须的特点
hash 永远不会提交到 server 端(前端自生自灭)
/*hash 变化,包括:· JS 修改 url· 手动修改 url 的 hash· 浏览器前进、后退*/// window.onhashchangewindow.addEventListener('hashchange', (event) => {console.log(`old url:${event.oldURL}`)console.log(`new url:${event.newURL}`)console.log(`hash:${location.hash}`)})// 页面初次加载、获取hashdocument.addEventListener('DOMContentLoaded', () => {console.log(`hash:${location.hash}`)})// JS 修改 urldocument.getElementById('btn1').addEventListener('click', () => {location.href = '#/user'})
初次打开,没有hash的页面
点击修改hash的按钮
然后手动修改url的hash,页面也不刷新,但是会触发
同时浏览器也可以前进后退。这个就是vue-router或者react-router实现hash的基本原理
