- 原理:
vue-router的原理就是更新视图而不重新请求页面。
- Hash模式:
默认是hash模式,基于浏览器history api,使
用window.addEventListener('hashchange',callback,false)
对浏览器进行监听,当调用push时,把新路由添加到浏览器访问历史
的栈顶。使用replace时,把浏览器访问历史的栈顶路由替换成新路由。
hash值等于url#及其以后的内容。浏览器时根据hash值得变化,
将页面加载到相应得DOM位置。锚点得变化只是浏览器得行为,每次
锚点变化后依然会在浏览器中留下一个历史记录,可以通过浏览器得
后退按钮回到上一个位置。
- History模式:
history模式,基于浏览器history API,使用window.onpopstate
对浏览器地址进行监听。对浏览器history API中pushState()、replaceState()
进行封装,当方法调用,会对浏览器历史栈进行修改。从而实现URL的跳转而无需重新
加载页面。
但是它的问题在于刷新页面会走后端的路由,所以需要服务器端的辅助来进行兜底,
避免URL无法匹配到资源时能返回页面。