vue——vue-router(路由)

路由就是通过互联网的网络把信息从源地址传输到目的地址的活动

生活中的路由器是做什么的?
  • 它提供了两种机制:路由和转送
    • 路由是决定数据包从来源到目的地的路径
    • 转送将输入端的数据转移到合适的输出端
  • 路由中有一个路由表,路由表本质上就是一个映射表,决定数据包的指向

vue-router 是基于组件和路由的。它的实现原理是SPA(单一页面应用程序),它在加载页面时,不会加载整个页面,而是更新某个指定的容器中的内容。


vue-router的基本使用
  • 导入插件 import VueRouter from ‘vue-router’

  • 通过Vue.use(插件)安装插件 Vue.use(VueRouter)

  • 创建路由对象,配置路由和组件之间的应用关系

  • router配置默认路径

    path: '',
    // 重定向
    redirect:'/home' 
    
  • 通过代码跳转路由

    this.$router.push('/home')
    或者
    this.$router.replace('/home') //不能返回上一级
    

router-link 属性
  • tag :router-link默认渲染成a标签,tag属性让router-link渲染成指定元素
  • replace:不会留下history记录,后退键不能返回到上一个页面
  • active-class:当对应的路由匹配成功时,会自动给当前元素设置一个router-link-active的class,设置 active-class 可以修改默认的名称。也可以通过router实例的属性linkActiveClass进行修改

动态路由
  • 当跳转页面路径不确定时可以使用动态路由

  • 配置路径时添加想要传递的参数

    path: '/user/:userId'
    //使用,用v-bind动态绑定
    <router-link :to = "'/user/'+userId">用户</router-link>
    //在跳转目的页面获取
    this.$route.params.userId
    

路由的懒加载
  • 路由中通常会定义很多不同的页面,然后打包放在一个js文件中,如果有很多页面的话,js文件就会非常大,当我们一次性从服务器请求时,会有点费时。为了避免这种情况,就可以使用路由懒加载。我们可以把不同对应的组件分割成不同的代码块,然后当路由被访问时才加载对应组件,这样就更加高效了。

  • // 未使用懒加载
    import Home from '../components/Home'
    
    // 使用懒加载
    const Home = () => import('../components/Home.vue')
    

嵌套路由
  • //配置 
    {
            path: '/home',
            component: Home,
            meta:{
                title: '首页'
            },
            children: [
                {
                  // 路径不加斜杠  
                    path:'news',
                    component: News
                },
                {
                    path: 'message',
                    component: Message
                }
            ]
        }
    //使用时要写完整路径
     <router-link to="/home/news">新闻</router-link>
     <router-link to="/home/message">消息</router-link>
    

参数传递
  • 方式一:params,动态路由配置路径时添加想要传递的参数(使用方式看上面)

  • 方式二:query,配置路由格式:/router;传递方式:对象中使用query的key作为传递方式;传递后形成的路径:/router?userId=123

    this.$router.replace({
            path: '/profile',
            query:{
              name: 'ashelly',
              age: 20
            }
    })
    

$route 和 $router的区别
  • $route: 当前router跳转对象,是一条路由,里面可以获取name,path,query,params等
  • $router: VueRouter实例对象,是一个机制,相当于一个管理者,由它来管理路由

导航守卫
  • 全局守卫
// 前置守卫(guard) => 回调  跳转之前调用,可以用于登录验证
router.beforeEach((to, from, next) => {
    // 从from 跳到 to
    document.title = to.matched[0].meta.title
    next()
})

// 后置钩子(hook) => 回调 跳转之后调用
router.afterEach((to, from) => {})
  • 路由独享守卫
    • 配置路由时添加beforeEnter属性
  • 组件内守卫
    • 配置组件时添加beforeRouteEnter属性

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

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值