vue-router的元信息

2018-03-20  本文已影响0人  有田春雪

基本的vue-router

import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/components/Login/login'    // 登陆
import Home from '@/components/Home /home'    // 主页
Vue.use(Router)

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home,
  },
  {
    path: '/login',
    name: 'Login',
    component: Login
  }
]

export default router = new Router({
  routes
})

路由元信息

const routes = [
  {
    path: '/',
    name: 'Home',
    redirect: {name: 'Channel'},
    // 这就是路由元信息
    meta: { requiresAuth: true }
  }
]
import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/components/Login/login'    // 登陆
import Home from '@/components/Home /home'    // 主页
Vue.use(Router)

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home,
  },
  {
    path: '/login',
    name: 'Login',
    component: Login
  }
]

// 页面刷新时,重新赋值 user
if (window.localStorage.getItem('user')) {
  store.state.user = window.localStorage.getItem('user')
}

const router = new Router({
  routes
})

// 在路由更新之前都去遍历路由的meta元信息, 判断有没有requiresAuth
router.beforeEach((to, from, next) => {
  // 如果有requiresAuth, 则开始验证
  if (to.matched.some(record => record.meta.requiresAuth)) {
    // 如果验证不通过, 则重定向到login页面
    if (!store.state.user) {
      next({
        path: '/login',
        query: {
          redirect: to.fullPath
        }
      })
    } else {
      next()
    }
  } else {
    next()   // 这个 next() 不要忘记了
  }
})

export default router
上一篇 下一篇

猜你喜欢

热点阅读