vue-路由

193 阅读2分钟

什么是路由?

设备和ip的映射关系

接口和服务的映射关系

路径和组件的映射关系

为何使用路由

单页面应用(SPA):所有功能在一个html页面上实现

前端路由作用:实现业务场景切换

优点:

  • 整体的页面都是不刷新
  • 数据传输容易,运行效率高

缺点:

  • 开发成本高
  • 首次加载会比较慢一点,不利于seo优化

组件分为那两类:

页面组件 页面展示配合路由使用

复用组件

vue-router使用(步骤):

1.下载vue-router模块到当前工程

      ```
      yarn add vue-router
      ```

2.在main.js中引入VueRouter函数

     ```js
     import vueRouter from 'Vue-router'
     ```

3.在Vue.use()升上-注册全局RouterLink和RouterView组件

```js
    Vue.use(vueRouter)
```

4.创建路由规则数据-路劲和组件名对应关系

例如:
 let routes=[{
 path:'/my',
 component:''//先引入组价再把组件放这
 }]

5.用规则生成路由对象

let router=new VueRouter({
routes:声明的路由规则名
})

6.把路由对象注入到new Vue实例中

 ```
 new Vue({
 router:路由对象
 })
 ```

7.用router-view作为挂载点,切换不同的页面

使用<router-view></router-view>占位

声明式导航:

可用组件router-link来代替a标签

  • vue-router提供了一个全局组件router-link
  • router-link实质上最终会渲染成a链接同时性等价于提供href属性 (to无需#)
  • router-link提供了声明式导航高亮的功能(自带类名)
//接收参数
接 $route.query.属性名 query传
接 $route.params.属性名   params

重定向: 用redirect配置项,值为强制切换

404匹配规则:path:"*"

component:NotFound

路由模式:hash / history

hash:路径上有#

history:

编程式导航:

路由跳转

this.$router.push({
path:'路由路径',
name:"路由名字",
//传参
query:{
"参数名":值
},
params:{
"参数名":值
}
})

传参:

推荐使用name+params或name+query传参数

//接收参数
接 $route.query.属性名 query传
接 $route.params.属性名   params

路由嵌套和守卫:

二级路由如何配置:

创建需要的耳机页面组件

路由规则里children中配置二级路由规则对象

一级页面中设置router-view显示二级路由页面

二级路由要注意什么?

二级路由path一般不写跟路径/

自动添加的2个类名的区别?

router-link-exact-active-url的hash值和href完全匹配

router-link-active-url的hash值包含href路径匹配

路由守卫:

路由跳转之前,会触发一个函数 叫前置守卫

语法:

router.beforeEach((to,from,next)=>{})

to:到哪里去,

from:从哪里来

next:next函数,调用这个函数是否放行

next支持传入跳转对象类似push({})

组件的缓存:

Vue内置的keep-alive组件 包起来要频繁要切换的组件

新的钩子函数:

activated(){},//已激活,被缓存的组件激活时触发钩子

deactivated(){} //取消激活状态 必须要放在keep-alive里面才能触发

匹配缓存:

语法:

  • keep-alive组件的include舒心和exclude舒心

    • 先给对应组件设置name属性名
    • 再把名字填写到include/exclude位置
  • include(包含-缓存)

  • exclude(不包含-不缓存)