• 每天一点点之vue框架开发


    路由别名
     
    在main.js中的路由中添加name来创建别名
    const routes = [
        {path:'/footer',name:footerLink,component:Footer}
    ]

    在组件中的路由中通过对象属性来实现路由

    <router-link :to="{name:homeLink}">Mirror微申</router-link>
    跳转
     
    1.跳转到上一次浏览的页面
    this.$router.go(-1)
    2.跳转到指定路由
    this.$router.replace(‘/footer’)
    // 还可以通过别名跳转
    this.$router.replace({name:’footerLink’})
     
    也可以通过push进行
    this.$router.push(‘/footer’)
    this.$router.push({name:’footerLink’})
     
    设置默认路由
     
    const routes = [
        {path:'/',redirect:'/home'},
        {path:'/home',name:homeLink,component:Home},
    ]

    或者在路由中添加

    const routes = [
        {path:'*',redirect:'/'},
    ]

    这样写有两个好处,一个是设置了默认访问路由,还有一个就是当用户在地址栏输入错误的时候跳转到首页

     
    二级路由
     
     
     
    剥离路由,单独写在一个文件中
     
    1.将路由提取到一个文件中,我把它放在了main.js 同目录到 ./assets/js/routes.js
    import Home from '../../components/home/Home';
    import Footer from "../../components/footer/Footer";
    
    export const routes = [
        { path: '/', name: 'homeLink', component: Home },
        { path: '/footer', name: 'footerLink', component: Footer },
        { path: '*', redirect: '/' },
    ]

    说明,使用 export 将数组暴露出去,import引入组件

    2.在main.js 中引入路由文件

    import { routes } from './assets/js/routes.js'

    路由守卫

    1.全局守卫 

    // 全局守卫
    router.beforeEach((to,from,next)=>{
      if(to.path == '/login' || to.path == '/register'){
        next();
      }else{
        alert("你还没有登录,请先登陆");
        next('/login');
      }
    })

    参数说明:

      to:去那

      from:到哪里

      next:跳转到哪里,回调函数

    2.后置钩子

    在路由之后出发,其实和全局守卫差不多

    router.afterEach((to,from) => {
      alert("后置钩子");
    })

     3.独享守卫

    就是在路由中添加 beforeEnter ,访问其他链接的时候,不会提示,只有在访问特定路由的时候才会触发

    { path: '/blogging', name: 'bloggingLink', component: Blogging ,beforeEnter: (to, from, next) => {
        if(to.path == '/login' || to.path == '/register'){
          next();
        }else{
          alert("你还没有登录,请先登陆");
          next('/login');
        }
      }}, 

     4.组件内守卫

    就是在组件内进行守卫,不能和路由守卫同用

    export default {
        data(){
            return {
                name:'Victor'
            }
        },
        // 组件进入
        beforeRouteEnter (to, from, next) {
            next(vm => {
                alert('Hello ' + this.name)
            })
        },
        // 组件离开
        beforeRouteLeave (to, from, next) {
            if(confirm('确认离开吗?') == true) {
                next();
            }else{
                next(false);
            }
        }
    }

    说明:在 beforeRouteEnter 中如果想访问data,需要在回调中访问

     
     
  • 相关阅读:
    记一次文件上传报错解决过程The temporary upload location is not vali
    Redis反序列化LocalDateTime时报错
    Redis连接池Lettuce Jedis 区别
    Java获取时间打印到控制台
    Java多线程之volatile关键字
    Java多线程之Future,有返回值的线程
    ccf集合竞价
    增广路径求解最大流
    2016年9月ccf
    hash表的建立和查找
  • 原文地址:https://www.cnblogs.com/cap-rq/p/10101237.html
Copyright © 2020-2023  润新知