基于vue-cli使用vue-router

vue路由的基本使用

1.使用vue-cli构建项目 vue init webpack vue-router

2.我们在src目录下的component下创建page1.vue和page2.vue和notFound.vue


page1.vue


page2.vue
notFound.vue

3.修改router文件夹下的index.js文件

index.js

4.修改App.vue


app.vue

这样一个基本的vue路由就实现了

vue动态路由匹配

1.在src/component下创建user.vue


user.vue

2.修改router下的index.js


index.js

3.修改App.vue


app.vue

vue的嵌套路由

1.创建page1的子路由first.vue和second.vue


first.vue


second.vue

2.配置router下的index.js,在page1路由配置中添加子路由



index.js

3.在page1.vue中添加标签导航


page1.vue

这样我们的嵌套路由就完成了

vue路由传参

我们再来说说路由的传参

1.使用router-link进行路由导航,传递参数

在父组件page2中,使用<router-link to="/需要跳转的路由路径/需要传递的参数"></router-link>标签进行导航


page2

在子组件method1:使用this.$route.params.title来接收路由参数


method1

路由配置


router/index.js

2.直接调用$router.push 实现携带参数的跳转

在page2父组件中


子组件不变还是使用this.$route.params.title来接收路由配置也不变

3.通过路由属性中的name来确定匹配的路由,通过params来传递参数

在父组件中


page2

子组件中

method2

路由配置


router/index.js


地址栏不展示参数


4.使用path来匹配路由,然后通过query来传递参数,这种情况下 query传递的参数会显示在url后面?id=?

注:params 和 query 都是传递参数的,params不会在url上面出现,并且params参数是路由的一部分,是一定要存在的 query则是我们通常看到的url后面的跟在?后面的显示参数

父组件中


page2

子组件中


method3

路由配置


router/index.js


地址栏参数显示在?后

最后我们再说下路由守卫,路由守卫类似于拦截器,在进入路由之前进行拦截检查,再决定是否放行

路由守卫

vue-router一共给我们提供了三大类钩子函数来实现路由守卫:

1、全局钩子函数(beforeEach、afterEach)

2、路由独享的钩子函数(beforeEnter)

3、组件内钩子函数(beforeRouterEnter、beforeRouterUpdate、beforeRouterLeave)

 1.全局钩子函数:

beforeEach:

      beforeEach一共接收三个参数,分别是to、from、next;to:即将进入的路由对象;from:正要离开的路由对象;next:路由的控制参数;

      next一共有四种调用方式:

      next():一切正常调用这个方法进入下一个钩子;

      next(false):取消路由导航,这时的url显示的是正要离开的路由地址;

      next('/login'):当前路由被终止,进入一个新的路由导航(路由地址可以自由指定)

      next(error):路由导航终止并且错误会被传递到router.onError()注册过的回调中;

    我们一般是用全局钩子来控制权限,像什么进页面没有登录就跳登录页,需要用户达到什么级别才能访问当前页面都是属于页面权限控制,都是可以通过beforeEach钩子函数来实现

 AfterEach:

      AfterEach和beforeEach一样都是属于全局守卫钩子,都是在main.js中进行调用;其中AfterEach比beforeEach少一个next参数;

      to:即将要进入的路由对象;

      from:正要离开的路由对象;

      afterEach()我们一般用来重置页面滚动条位置:

      假如我们有一个页面很长,滚动后其中的某个位置后跳转,这时新的页面的滚动条位置就会在上一个页面停留的位置;这个时候我们就可以利用afterEach进行重置

我们来实现一下:


全局钩子函数我们一般是在main.js中进行书写


由于未登录,路由跳转到了login

login


2.路由独享的钩子函数:

beforeEneter:

      路由独享顾名思义就是指定的路由才有这些钩子函数,通常这类路由独享的钩子函数我们是在路由配置文件中进行配置,只能设置改变前的钩子,不能设置改变后的钩子

我们给路由page1添加一个钩子


page1的路由配置

这是我们由于设置了next(false),page1路由不能放行

3.组件内的钩子函数:

    beforeRouteEnter(to,from,next):

    在路由进入前调用,因为此时的vue实例还没有创建,所以beforeEnter是唯一一个不能使用this的钩子函数;

to:即将要进入的路由对象;

    from:正要离开的路由对象;

    next:路由控制参数

    beforeRouteUpdate(to,from,next):

    在路由发生修改的时候进行调用,比如我们上一篇文章讲到的动态路由传参,这种情况我们的beforeRouteUpdate也是会被调用的;

         to:即将要进入的路由对象;

     from:正要离开的路由对象;

     next:路由控制参数;

    beforeRouteLeave(to,from,next):

    在路由离开该组件时调用;

     to:即将要进入的路由对象;

     from:正要离开的路由对象;

     next:路由控制参数

我们在method1组件中试一下:


method1

自此vue-router的使用我们就讲完了

demo代码:https://github.com/langeyu/-vue-cli-vue-router.git

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容