Vue Router(二)

1、动态路由

router/index.js 中,有如下路由

{
  path: '/user/:userId',
  component: User
}

App.vue中

<router-link :to="'/user/'+userId" tag="button">用户</router-link>

在User组件中,想要获取到传来的路由参数

export default {
  name: "User",
  computed:{
    userId(){
        //this.$route 指的是当前正在活跃的路由
      return this.$route.params.userId
    }
  }
}

2、认识路由的懒加载

1、什么是路由懒加载?

当打包构建应用时,JavaScript包会变得非常大,影响页面加载

如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应的组件,这样就更加高效了

2、解释

clipboard

3、路由懒加载做了些什么

路由懒加载的主要作用是将路由对应的组件打包成一个个的js代码块

只有在这个路由被访问的时候,才加载对应的组件

4、路由懒加载的效果

路由懒加载对应的组件会单独打包成一个js

5、懒加载的方式

const Home = ()=> import('../components/Home')

3、路由的嵌套

1、认识嵌套路由

嵌套路由是一个很常见的功能

比如在home页面中,我们希望通过 /home/news 和 /home/message访问一些内容

一个路径映射一个组件,访问这两个路径也会分别渲染两个组件

路径和组件的关系如下

clipboard

2、实现路由嵌套

1)创建子组件

clipboard

2)在router/index.js中,导入组件并配置子组件的路径

//路由懒加载
const HomeNews = () => import('../components/HomeNews')
const HomeMessage = () => import('../components/HomeMessage')

clipboard

4、路由的参数传递

传递参数主要有两种类型: params和query

1、params的类型 (就是我们前面说的动态路由)

2、query类型:

1)传递参数

<router-link :to="{
  path: '/profile',
  query:{  //路由传递的参数
    name: 'houchen',
    age: 18,
    height: 1.88
  }
}" tag="button">档案</router-link>

clipboard

clipboard

2)取出参数

在profile组件中,通过$route.query取出路由传递的参数

clipboard

clipboard

$router 和 $route的区别

$router: 整个路由对象

$route:当前活跃的路由

5、导航守卫

【案例】 实现导航栏的title随着组件的跳转而变换

在 router/index 路径匹配上加上meta信息

{
  path: '/about',
  component: About,
  meta:{
    title: "关于"
  }
}

全局守卫

//全局守卫
// to: 即将要进入的目标的路由对象
// from:当前导航即将要离开的路由对象  
// next() : 调用该方法后才能进入下一个钩子
router.beforeEach((to,from,next) =>{
  console.log(to)
  document.title = to.matched[0].meta.title;
  next()
})

实现效果

clipboard

导航守卫的补充:

路由独享的守卫:

clipboard

6、vue-router-keep-alive及其他问题

keep-alive是Vue内置的一个组件,可以使被包含的组件保留状态,避免重新渲染

router-view 也是一个组件,如果直接被包在 keep-alive 里面,所有路径匹配到的视图组件都会被缓存

clipboard

keep-alive有两个非常重要的属性

include - 字符串或正则表达式,只有匹配的组件会被缓存

exclude - 字符串或正则表达式,任何匹配的组件都不会被缓存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值