1.为什么要有前端路由:
对于 Vue 这类渐进式前端开发框架,为了构建 SPA(单页面应用),需要引入前端路由系统,这也就是 Vue-Router 存在的意义。前端路由的核心,就在于 —— 改变视图的同时不会向后端发出请求。
优点:
用户体验好,用户操作更方便
完全的前端组件化
缺点:
首次加载大量资源 -->解决:按需加载
对SEO不友好 -->解决:服务端渲染nuxt
特点:当有不同的请求时,在同一个页面渲染不同的组件
原理:前后端分离(后端专注数据,前端专注交互与可视化)+ 前端路由
2.浏览器目前提供了两种路由:
- hash —— 即地址栏 URL 中的 # 符号(此 hash 不是密码学里的散列运算)。 比如这个
URL:http://www.abc.com/#/hello,hash 的值为 #/hello。它的特点在于:hash 虽然出现在 URL
中,但不会被包括在 HTTP 请求中,对后端完全没有影响,因此改变 hash 不会重新加载页面。
Hash 路由(也就是锚点#),本质是是改变location的hash属性
利用 URL 上的 hash,当 hash 改变不会引起页面刷新,可以触发相应的 hashchange 回调函数配置路由(VueRouter会自动监听)
window.onhashchange = function()