vuejs全局路由守卫和组件内守卫的基础使用

1、安装vue-router

npm install vue-router

2、在需要使用组件引入

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)

接下来就可以开始一些基础的使用啦~

3、全局使用场景

一般来说,想要进入某个网站或者系统的个人中心页面都是需要用户先进行登录操作的,我们暂时先用这个来举个小例子吧!这里用token来验证是否登录

// router文件
// index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import Index from 'components/Index/index.vue'
import Center from 'components/Login/index.vue'
import Detail from 'components/Index/detail.vue'
// 根据自己的项目需要引入文件
Vue.use(VueRouter)
export default new vueRouter({
  routes: [{
    path: '/',
    component: Index
  }, {
    path: '/Detail',
    component: Detail,
    meta: {
      requireLogin: 2
    }
  }, {
    path: '/Center',
    component: Center,
    meta: {
      requireLogin: 1
    }
  }]
})

一般来说,想要进入某个网站或者系统的个人中心页面都是需要用户先进行登录操作的,我们暂时先用这个来举个小例子吧!这里用token来验证是否登录

// main.js
// 全局路由守卫
// 这是你书写所需要的路由的文件路径,把它引过来
import router from './router'
router.beforeEach((to, from, next) => {
  // 这个token是存储在localStorage
  let token = window.localStorage.getItem('token')
  if (to.meta.requireLogin && to.meta.requireLogin === 1) {
	if (token) {
	  next()
	} else {
	  next('/')
	}
  } else if (to.meta.requireLogin && to.meta.requireLogin === 2) {
     if (token) {
       next('/center')
     } else {
       next()
     }
  } else {
  	next()
  }
})

**meta是路由元信息

4、组件内使用场景

依然依赖上面的router文件

// js部分
// 随便你写点啥,头尾就先省略吧~
<script>
export default {
  data () {
    return {
      // 内容就省啦~重点往下看
    }
  },
  beforeRouteEnter: (to, from, next) => {
    // 组件内守卫
    next(vm => {
      // judge login
      let token = window.localStorage.getItem('token')
      if (to.meta.requireLogin && to.meta.requireLogin === 1) {
        if (token) {
          next()
        } else {
        // 不满足条件就要去进行登录操作
          next('/login')
        }
      } else if (to.meta.requireLogin && to.meta.requireLogin === 2) {
        if (token) {
          next('/')
        } else {
          next()
        }
      } else {
        next()
      }
    })
  }
}
</script>

emmmm,暂时就先来这两个吧~其他的后面有空了再加上来。
有不妥之处,大佬有更好的代码优化建议希望大佬不吝告知。不喜勿喷~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值