基本的vue-router (router文件夾下的js)
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
const routes = [
{
path: '/',
redirect: '/login' // 重定向的地址
},
{
path: '/login',
name: 'login',
component: () => import('../views/Login.vue')
},
{
path: '/home',
name: 'home',
component: () => import('../views/Home.vue')
//在home下面加載二級(jí)路由
children: [
//默認(rèn)首頁
{
path: 'index',
name: 'index',
component: () => import('../views/Index.vue'),
}
]
]
// 根據(jù)路線配置,創(chuàng)建路由實(shí)例,并導(dǎo)出
export default router = new Router({
routes
})
路由元信息
const routes = [
{
path: '/',
name: 'home',
component: () => import('../views/Home.vue')
// 這就是路由元信息
meta: { requiresAuth: true}
}
]
- 用來標(biāo)記這個(gè)路由信息是否需要檢測(cè),true 表示要檢測(cè),false 表示不需要檢測(cè)
- requiresAuth 是自己起的字段名稱
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
const routes = [
{
path: '/',
name: 'home',
component: () => import('../views/Home.vue')
// 這就是路由元信息
meta: { requiresAuth: true}
}
]
// 頁面刷新時(shí),重新賦值 token
if (window.localStorage.getItem('token')) {
store.state.user = window.localStorage.getItem('token')
}
const router = new Router({
routes
})
// 在路由更新之前都去遍歷路由的meta元信息, 判斷有沒有requiresAuth
router.beforeEach((to, from, next) => {
// 如果有requiresAuth, 則開始驗(yàn)證
if (to.matched.some(record => record.meta.requiresAuth)) {
// 如果驗(yàn)證不通過, 則重定向到login頁面
if (!store.state.token) {
next({
path: '/login',
query: {
redirect: to.fullPath
}
})
} else {
next()
}
} else {
next() // 這個(gè) next() 不要忘記了
}
})
export default router
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。