路由
路由是一种对应关系
什么是后端路由
客户端请求的 url 地址和服务端对该地址的处理函数的对应关系
什么是前端路由
路由是根据不同的 url 地址展示不同的内容或页面
前端路由就是把不同路由对应不同的内容或页面的任务交给前端来做,之前是通过服务端根据 url 的不同返回不同的页面实现的
hash
history
什么时候使用前端路由
在单页面应用,大部分页面结构不变,只改变部分内容的时候使用
前端路由有什么优缺点
-
优点:
用户体验好,不需要每次都从服务器全部获取,快速展现给用户
-
缺点:
-
不利于 SEO
-
使用浏览器的前进,后退键的时候会重新发送请求,没有合理利用缓存
-
单页面无法记住之前滚动的位置,无法在前进,后退的时候记住滚动的位置
-
vue 中路由基本使用
-
通过 script 标签引入 vue-router
-
定义组件
-
实例化路由对象 new VueRouter
-
配置路由的规则
#/home ---> 组件
-
挂载路由
设置路由和 vue 的关系
-
渲染路由
router-view
router-link
路由高亮
-
router-link-active
-
linkActiveClass: 'active'
路由重定向、404
- redirect
{
path: '/',
redirect: '/home'
}'
- 404
{
path: '*',
component: NotFoundPage
}'
路由传参
-
query
#/home?name=fly&age=18
-
params
#/home/fly/18
{ path: '/home/:name/:age', component: Home }'
路由编程式导航
this.$router.push()
嵌套路由
{
path: '/home',
component: Home,
children: [
{
path: '/home/recomment',
component: Recomment
}
]
}
命名视图路由
{ path: '/', components: { default: Header, main: Main, footer: Footer } }
<router-view></router-view>
<router-view name="main"></router-view>
<router-view name="footer"></router-view>
路由进阶
-
beforeEach
全局路由前置守卫
router.beforeEach((to, from, next) => {}); -
afterEach()
全局路由后置守卫
-
路由独享守卫
beforeEnter()
-
组件内置守卫
beforeRouteEnter(to,from,next) {
}
methods、watch、computed 有什么区别
-
methods:适合用于业务逻辑处理
多次调用的时候不会缓存
-
watch:比较适合侦听单个数据,或者是路由
可以侦听实例上的任意属性
-
computed:适合计算多个属性的结果
可以缓存数据方便下次使用
watch 的两种用法
-
浅层侦听
-
深度侦听