Vue-router 进阶

Posted the-last

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue-router 进阶相关的知识,希望对你有一定的参考价值。

Vue-router 进阶

路由 元信息

在定义路由的时候,可以定义 meta 字段

 

children: [

     

         path: ‘bar‘,

         component: Bar,

         // a meta field  元信息

         meta: requiresAuth: true   这里路由提示需要认证

     

 ]

然后, 如何使用这个meta呢?

路由中匹配到的路径都被称为路由记录,每个路由记录都会被存在 $route.metched 中

所以,可以通过访问$route.metched 遍历数组,获得meta值。

在 路由守卫的参数中也有对应的meta值

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

 if (to.matched.some(record => record.meta.requiresAuth))

   // 检查登录装太

   // 未登录,就跳到登录页

   if (!auth.loggedIn())

     next(

       path: ‘/login‘,

       query: redirect: to.fullPath

     )

    else

     next()

   

  else

   next() // 确保一定要调用 next()

 

)

 

基于路由的动画效果

技术图片

 

 

获取数据

一般是两种:

1,在路由跳转后组件渲染时获取数据,可以loading,每个视图可以用自己的loading

2,可以在 beforeRouteEnter  beforeRouteUpdate 中获取数据,和路由同步或者获取不到数据后不next().

 

 

滚动行为

 

切换路由路径,对应不同页面,同时vue-router还可以保留滚动的位置信息,但仅限于支持pushState的浏览器。

scrollBehavior (to, from, savedPosition)

    1,返回跳转到的指定的页面的位置,锚点记录selector

 

    if (to.hash)

        return

            selector:to.hash

        ;

   

    2, 返回保留的位置

    if (savedPosition)

         returnsavedPosition;

   

    3, 返回置顶,也是 default

    return x:0, y:0 ;

 

异步滚动 (2.8.0新增)

 

返回一个promise 得出一个预期的位置

scrollBehavior (to, from, savedPosition)

    return new Promise(resolve, reject)
        setTimeout( () =>

             resolve(x: 0, y: 0);

        ,  2000);    // 接收 promise 传值
   

以上是关于Vue-router 进阶的主要内容,如果未能解决你的问题,请参考以下文章

路由vue-router进阶

vue-router进阶篇

02.vue-router的进阶使用

vue-router的进阶使用

Vue-router高级进阶知识

Vue-router高级进阶知识