Vue路由(VueRouter)学习知识点总结

1、tag="li"把<outer-link转变为li标签,active-class="active"bootstrap的样式
<ul class="nav nav-pills">
  <router-link to="/" tag="li" active-class="active" exact><a>Home</a></router-link>
  <router-link to="/user" tag="li" active-class="active"><a>User</a></router-link>
</ul>

2、路由传递参数::id  to="/user/10" 中的10就是作为ID传递给下个页面,用this.$route.params.id接收
{path: '/user/:id',component: User}
<router-link to="/user/10" tag="li" active-class="active"><a>User</a></router-link>
data() {
  return {
      id: this.$route.params.id
  }
},
3、路由一旦切换就会刷新,不切换时要监听路由参数变化 to代表路由
watch: {
  '$route': function(to){
    this.id = to.params.id;
  }
},
4、路由传递参数
<router-link tag="button"  :to="{name: 'userEdit',params:{id:'45'},query:{id:100,name:'zhangsan'}}" class="btn btn-primary">Edit User</router-link>
点击效果等同于:http://localhost:8080/user/45/edit?id=100&name=zhangsan
5、重定向:
在浏览器输入http://localhost:8080/redirect-me,自动只想name=home的页面
{path: '/redirect-me',redirect: {name: 'home'}}
在浏览器输入http://localhost:8080/redirect-me,自动只想path=/user的页面
{path: '/redirect-me',redirect: { '/user'}}
当输入的连接上面都无法匹配时,设置通配符*,指向默认页面
  {path: '*',redirect: '/'}
6、路由命名
<router-link to="/" tag="li" active-class="active" exact><a>Home</a></router-link>
<router-link to="/user" tag="li" active-class="active"><a>User</a></router-link>

<router-view name="headerTop"></router-view>
<router-view></router-view>
<router-view name="headerBottom"></router-view>

{path: '',name: 'home',components:{
    default: Home,
    headerTop: Header
  }},
{path: '/user',component: User,components:{
  default: User,
    headerBottom: Header
  }},
7、判断路由是否能访问3种方法
  1):main.js中设置beforeEach,该设置为全局设置,访问任何路由都要判断
    router.beforeEach((to,from,next)=>{
      console.log("every router before");
      next();
    });
  2):routes.js设置beforeEnter,该设置只对UserDetail有效
    {path: ':id', component: UserDetail,beforeEnter:(to,from,next)=>{
        console.log("UserDetail routes router before");
        next();
    }},
  3):在vue文件中设置beforeRouteEnter,该设置只对UserDetail本文件有效
    export default {
        beforeRouteEnter(to,from,next) {
            console.log("UserDetail UserDetail.vue router before");
            next();
        }
    }
    后台输出顺序为:
    every router before
    UserDetail routes router before
    UserDetail UserDetail.vue router before

7、判断路由是否能离开:
  export default {
      data() {
          return {
              confirm: false
          }
      },
      beforeRouteLeave(to,from,next){
          if(this.confirm){
              next();
          }else {
              if(confirm("是否确认离开?")){
                  next();
              }else{
                  next(false);
              }
          }
      }
  }
8、路由懒加载:在router.js设置。最后的user为组名,即其中一个加载的时候,所有组名为user的路由同时加载,不加组名,只加载自己
const User = resolve => {
    require.ensure(['./components/user/User.vue'], () => {
        resolve(require('./components/user/User.vue'));
    }, 'user');
};
const UserStart = resolve => {
    require.ensure(['./components/user/UserStart.vue'], () => {
        resolve(require('./components/user/UserStart.vue'));
    }, 'user');
};
const UserEdit = resolve => {
    require.ensure(['./components/user/UserEdit.vue'], () => {
        resolve(require('./components/user/UserEdit.vue'));
    }, 'user');
};
const UserDetail = resolve => {
    require.ensure(['./components/user/UserDetail.vue'], () => {
        resolve(require('./components/user/UserDetail.vue'));
    }, 'user');
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章