Vue-cli项目中路由的使用

一.什么是路由:

简单的来说,Vue-router就相当于一个导航系统,输入一个页面地址,它会通过路由表,指挥加载哪一个模块显示在该页面上,实现vue模块的复用。

二.如果创建项目时未加载vue-router,需手动下载依赖

1.加载依赖
npm install vue-router
2.在srcc目录下创建一个router目录,并创建一个index.js文件,列子如下(参照下面的app.vue):
import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

const router=new Router({
  mode:"history",//路由模式,hash和history,history为模仿html5中的history api
  routes: [
    //添加静态路由
    {
    //根路径
      path:"/",
      name:"Top_Navbar",//路由名称
      components:{//加载多个组件,别名+懒加载模式,对应下面app.vue,只能有一个default
        default:resolve=>require(['../components/indexPage/Top_Navbar'],resolve),
        Carousel:resolve=>require(['../components/indexPage/Carousel'],resolve),
        Products:resolve=>require(['../components/indexPage/Products'],resolve),
        Jumbotron:resolve=>require(['../components/indexPage/Jumbotron'],resolve),
        Footer:resolve=>require(['../components/indexPage/Footer'],resolve)
      }
  ]
})

export default router

对应App.vue

<template>
  <div>
    <router-view></router-view>//default组件入口
    <div class="index">
      <router-view name="Carousel"></router-view>//Carousel组件入口
      <router-view name="Products"></router-view>//Products组件入口
      <router-view name="Jumbotron"></router-view>//Jumbotron组件入口
      <router-view name="Footer"></router-view>//Footer组件入口
    </div>
  </div>
</template>

<script>
export default {
  name: 'App'
}
</script>

三.全局前置守卫:BeaforeEach((to,from,next)=>{})
在每次跳转地址的时候,都会先进入BeaforeEach进行处理,如果符合要求才跳转到该页面

router.beforeEach((to,from,next)=>{
  next();//相当于收费站的放行,意思是你可以走了,**必须加上**
})

注:to表示到哪里去,from表示从哪里来,next()表示是否放行,如果让它跳转到跟页面,直接使用next(’/’)

**列如:**
router.beforeEach((to,from,next)=>{
//如果传入的地址在路由表中没有找到,则跳转到/404
  if(to.matched.length==0){
    next('/404')
  }
  next();//找到,放行
})

四.动态路由 :addRoute()
如果想要限制用权限,比如:用户在未登录的时候,不能跳转到购物车页面,此时你可以将购物车路由从静态路由表中拿出来,用户就无法访问到该页面,当用户登录成功后,用addRoute将该路由地址动态的添加到路由表中,用户就可以访问到该页面。

router.beforeEach((to,from,next)=>{
  //用户登录成功后需要重新刷新页面,使用windows.location.href来进行登录成功后动态添加shoppingCart页面
  if(sessionStorage.getItem('user')&&!store.state.login.login){/
    store.dispatch('login/reLogin')
    router.addRoutes([{path:'/shoppingCart',name:"Cart",components:{
      default:resolve=>require(['../components/indexPage/Top_Navbar'],resolve),
      Cart:resolve=>require(['../components/shoppingCart/ShoppingCart'],resolve)
    }}])
    next({...to,replace:true})
  }
  next();
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值