一文浅析vue中的路由和多种守卫-百家乐凯发k8

用户登录
还没有账号?立即注册
用户注册
点击换图
投稿取消
文章分类:
还能输入300字

上传中....

一文浅析vue中的路由和多种守卫

5.使用router-view实现组件的呈现(类似于插槽)

          
            
            
            
          
注:1.路由组件通常存放在pages文件夹,所以不要往components文件夹里面放了
2.通过切换,“隐藏” 了的路由组件,默认是被销毁掉的,需要的时候再去挂载
3.每个组件都有自己的$route属性,里面存储着自己的路由信息。
4.整个应用只有一个router, 可以通过组件的$router属性获取到。

4.多级路由

在配置路由规则的以及路由里面进行配置下一级路由使用children:[ { } ]这种形式

    routes: [{
            path: '/about',
            component: about
        },
        {
            path: '/home',
            component: home,
            children: [{
                    path: 'news',
                    component: news
                },
                {
                    path: 'message',
                    component: message
                }
            ]
        },
    ]

5.路由传参

有两种方式,第一种就是直接再路径里面写query参数,第二种就是params传参

路由命名(简化代码)

再to的时候就不用写一大堆路径了

1.params

1. 配置路由声明接受params参数

                    children:[
                        {
                            name:'xiangqing',
                            path:'detail/:id/:title',// 使用占位符声明接收参数
                            component:detail,
                        }
                    ]

2.传递参数

        {{m.title}}
        
        {{m.title}}

3,接受参数

    
  • 消息:{{$route.params.id}}
  • 编号:{{$route.params.title}}

2.路由的props配置

一共有三种配置方法,分别是对象式布尔值式函数式目的是让路由组件更方便的接受到参数

children: [{
    name: 'xiangqing',
    // path: 'detail/:id/:title', // 使用占位符声明接收参数
    path: 'detail', // query不使用占位符声明接收参数
    component: detail,
    // props的第一种写法
    // props:{a:"1",b:"2"},
    // 第二种写法,值为布尔值,若布尔值为真,就会把该路由组件收到的所有params參数,以props的形式传给detail
    // props:true,
    // props的第三种写法,值为函数
    props($route) {// 使用解构赋值连续写法简化代码
        return {id:$route.query.id,title:$route.query.title}
    }
    // props({query:{id,title}}) {// 使用解构赋值连续写法简化代码
    //     return {id,title}
    // }
}]

3.的replace属性

1.作用:控制路由跳转时操作浏览器历史记录的模式

2.浏览器的历史记录有两种写入方式:分别为pushreplace,push 是追加历史记录,replace 是替换当前记录。路由跳转时候默认为push,所以为push的时候可以进行后退前进操作,而replace直接就是替换掉之前的那个地址所以在replace的里面智慧存在一个地址,也就是当前所呈现的那个地址,就好比做核算,push是排队的人,replace是做核酸的医务人员

3.如何开启replace模式:news即可


4.编程式路由导航

1.作用:不借助实现路由跳转,让路由跳转更加灵活

  methods: {
      //后退
    back() {
      this.$router.back();
    },
      //前进
    forward() {
      this.$router.forward();
    },
      //可以后退也可以前进
    test() {
      this.$router.go(-2);
    }
  }

5.缓存路由组件

1.作用:让不展示的路由组件保持挂载,不被销毁。

2.具体实现方法


k router-view>

两个新的生命周期钩子

1.作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态分别是activated 路由组件被激活时触发。deactivated 路由组件失活时触发。

6.路由守卫

作用:对路由进行权限控制

分类:全局守卫独享守卫组件内守卫

1.全局守卫

router.beforeeach((to, from, next) => {
    console.log(to, from);
    if (to.meta.isauth) {//判断是否需要鉴权
        if (localstorage.getitem('school') ==='shanyu') {
            next();
        } else {
            alert('该学校无权限查看此内容')
        }
    } else {
        next()
    }
})
// 后置路由守卫,切换路由后调用
router.aftereach((to, from) => {
    console.log(to, from);
    document.title=to.meta.title||'山鱼屋'
})

2.独享路由守卫

专门服务于一个路由的守卫

beforeenter: (to, from, next) => {
                        console.log(to, from);
                        if (to.meta.isauth) { //判断是否需要鉴权
                            if (localstorage.getitem('school') ==='shanyu') {
                                next();
                            } else {
                                alert('该学校无权限查看此内容')
                            }
                        } else {
                            next()
                        }
                    },

3.组件内守卫

在进入/离开组件时被激活

//进入守卫:通过路由规则,进入该组件时被调用
beforerouteenter (to, from, next) {
},
//离开守卫:通过路由规则,离开该组件时被调用
beforerouteleave (to, from, next) {
}

4.路由器的两种工作模式

对于一个url来说#其后面的内容就是hash值。

就是这个#后面的

hash的特点及使用

  • hash值不会带给服务器。

  • hash模式

1.地址中永远带着#号

2.若以后将地址通过第三方手机app分享,若app校验严格, 则地址会被标记为不合法。

3.兼容性较好。

3.history模式

1.地址干净,美观。

2.兼容性和hash模式相比略差。

3. 应用部署上线时需要后端人员支持,解决刷新页面服务端404的问题。

4.切换history模式

在route文件夹下面的index文件里添加 `mode: 'history'`这句代码即可(默认的是hash模式)

(学习视频分享:vuejs入门教程、编程基础视频)

以上就是一文浅析vue中的路由和多种守卫的详细内容,更多请关注其它相关文章!


  • 0
  • 0
  • 0
  • 0
网站地图