vue3使用vue-router及路由權(quán)限攔截方式
使用vue-router及路由權(quán)限攔截
vue3 使用 vue-router 的方式和 vue2 基本一樣,只不過初始化路由時(shí)需要用到一些函數(shù)來定義而已,另外 vue-cli 工具本身在創(chuàng)建 vue3 項(xiàng)目時(shí)就可以根據(jù)提示來進(jìn)行安裝配置 vue-router , 所以本篇只是針對(duì)那些忘記安裝的小伙伴。
第一步肯定是要先安裝啦:
npm install vue-router@4
接著我們?cè)诟夸?src 下創(chuàng)建 router 目錄并定義 index.js
下面是 src/router/index.js 的代碼
// 1. 引入這兩個(gè)函數(shù)來初始化路由
import { createRouter, createWebHashHistory } from "vue-router"
// 2. 配置路由
const routes = [
{
path: '/info',
name: 'info',
component: () => import('@/pages/info'),
// 路由元信息,隨你怎么定義,筆者一般采用這種方式來定義路由權(quán)限然后結(jié)合路由攔截,
// 下面的 auth:true 表示需要授權(quán)登錄才可以進(jìn)入此頁面。
meta: {
auth: true,
},
},
{
path: '/login',
name: 'login',
component: () => import('@/pages/login'),
meta: {
auth: false,
},
}
]
// 3. 創(chuàng)建路由實(shí)例
const router = createRouter({
history: createWebHashHistory(), // 表示使用 hash 模式,即 url 會(huì)有 # 前綴
routes
})
// 4. 你還可以監(jiān)聽路由攔截,比如權(quán)限驗(yàn)證。
router.beforeEach((to, from, next) => {
// 1. 每個(gè)條件執(zhí)行后都要跟上 next() 或 使用路由跳轉(zhuǎn) api 否則頁面就會(huì)停留一動(dòng)不動(dòng)
// 2. 要合理的搭配條件語句,避免出現(xiàn)路由死循環(huán)。
const token = cookies.get('token')
if (to.meta.auth) {
if (!token) {
return router.replace({
name: 'login'
})
}
next()
} else {
next()
}
})
export default router
接下來在項(xiàng)目的入口文件 main.js 里面引入 router/index.js
// main.js
import { createApp } from 'vue'
import router from '@/router/index.js' // 引入
import App from '@/App.vue'
const app = createApp(App)
app
.use(router)
.mount('#app')
export default app至此就完成啦
vue3使用vue-router講解
cnpm i vue-router@next -D
創(chuàng)建Router對(duì)象和路由配置——routerIndex.js
import {createRouter, createWebHashHistory, createWebHistory} from "vue-router"
// 1. 定義路由組件, 注意,這里一定要使用 文件的全名(包含文件后綴名)
import countIndex from "../pages/count/countIndex.vue";
import langshanIndex from "../pages/langshan/langshanIndex.vue";
// 2. 定義路由配置
const routes = [
{
path: "/",
redirect: '/countIndex'
},
{ path: "/countIndex", component: countIndex },
{ path: "/langshanIndex", component: langshanIndex },
];
// 3. 創(chuàng)建路由實(shí)例
const router = createRouter({
// 4. 采用hash 模式
history: createWebHashHistory(),
// 采用 history 模式
// history: createWebHistory(),
routes, //使用上方定義的路由配置
});
export default router
//導(dǎo)出router
Router 當(dāng)做插件引用進(jìn)來——main.js
import { createApp } from 'vue'
import routerIndex from './router/routerIndex' ?// 引入路由對(duì)象實(shí)例
import App from './App.vue'
const app = createApp(App)
// 使用配置的路由
app.use(routerIndex)
app.mount('#app')以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vite打包只生成了一個(gè)css和js文件問題的解決方法
今天整了一個(gè)項(xiàng)目,試了下打包,發(fā)下打包后只生成了一個(gè)css文件,和一個(gè)js文件,這樣肯定是不行的,因?yàn)檫@樣這個(gè)文件的包大小很大,第一次訪問會(huì)導(dǎo)致白屏問題,所以本文給大家介紹了vite打包只生成了一個(gè)css和js文件問題的解決方法,需要的朋友可以參考下2024-05-05
electron?vue?模仿qq登錄界面功能實(shí)現(xiàn)
這篇文章主要介紹了electron?vue?模仿qq登錄界面,首先使用vuecli創(chuàng)建vue項(xiàng)目,安裝electron,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
Vue?export?default中的name屬性有哪些作用
這篇文章主要介紹了Vue?export?default中的name屬性有哪些作用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
vue使用exif獲取圖片旋轉(zhuǎn),壓縮的示例代碼
這篇文章主要介紹了vue使用exif獲取圖片旋轉(zhuǎn),壓縮的示例代碼,幫助大家更好的利用python處理圖片,感興趣的朋友可以了解下2020-12-12
vue element-ui table組件動(dòng)態(tài)生成表頭和數(shù)據(jù)并修改單元格格式 父子組件通信
這篇文章主要介紹了vue element-ui table組件動(dòng)態(tài)生成表頭和數(shù)據(jù)并修改單元格格式 父子組件通信,需要的朋友可以參考下2019-08-08
巧用Vue.js+Vuex制作專門收藏微信公眾號(hào)的app
這篇文章主要為大家詳細(xì)介紹了vue自定義指令三步如何實(shí)現(xiàn)數(shù)據(jù)拉取更新,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11

