路由目录结构
src
└── router
└── index.js
路由配置 - 路由懒加载
import App from '../App'
const login = r => require.ensure([], () => r(require('../views/login/login')), 'login')
const join = r => require.ensure([], () => r(require('../views/join/join')), 'join')
const usercenter = r => require.ensure([], () => r(require('../views/usercenter/usercenter')), 'usercenter')
const notfound = r => require.ensure([], () => r(require('components/error/404')), 'notfound');
export default [{
path: '/',
component: App,
children: [
{ path: '/index', component: index, meta: { title: '首页' } },
{ path: '/login', component: login, meta: { title: '登录' } },
{ path: '/join', component: join, meta: { title: '注册' } },
{ path: '/usercenter', component: usercenter, meta: { title: '个人中心', requireAuth: true } }
]
}]
创建 router 实例 - 简单版
- 创建 router 实例,然后传
routes 配置
import Vue from 'vue'
import VueRouter from 'vue-router'
import routes from './router'
Vue.use(VueRouter)
const router = new VueRouter({
routes
})
new Vue({
router
}).$mount('#app')
路由权限及标题 - 进阶版
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const router = new VueRouter({
routes,
mode: 'history'
})
if(localStorage.getItem('userToken')) {
store.commit(types.RECORD_USERTOKEN, localStorage.getItem('userToken'))
}
router.beforeEach((to, from, next) => {
document.title = to.meta.title ? to.meta.title : '东湖大数据交易中心'
let token = store.getters.userToken
if(to.matched.some(r => r.meta.requireAuth)) {
if(token) {
checkLogin({ 'token': token }).then(res => {
if(res.status != '0') {
next({ path: '/login', query: { redirect: to.fullPath } })
} else {
next()
}
}).catch(error => {
Vue.$vux.alert.show({ content: '错误:' + error.message + ',请稍后再试!' })
})
} else {
next({ path: '/login', query: { redirect: to.fullPath } })
}
} else {
next()
}
})
new Vue({
router
}).$mount('#app')