vue後台怎麼動態配置路由
A. vue-router怎麼動態配置,比如根據用戶許可權不同顯示路由
你這個要求很簡單,一旦有故障才走電信,那就是說電信是完全備份線路,你更改路由的metric就可以選擇一個默認優先,另一個備份
...可以啊.若你能配置核心...vue-router怎麼動態配置,比如根據用戶許可權不同顯示路由
B. vue項目實現動態路由和動態菜單搭建插件式開發框架免費源碼
以往我們在開發vue項目的時候,總是通過將路徑和路由寫在route/index.js文件中,然後直接進行訪問即可,一般實現許可權匹配都是通過菜單下面的許可權參數和路由守衛進行一個驗證攔截和許可權匹配,然而這樣安全性仍然不足。因為我們在route/index.js中已經寫滿了所有的路由,這樣子不僅造成靜態路由內容過多、修改困難,同時當靜態路由內容過多的時候,我們在路由中的內容就顯得極其復雜。
而後端對前端的控制也顯得較為無力,無法實現嚴格性的控制。
由此我們發現通過動態路由控制是必然的,此時我們只需要通過後端獲取數據菜單和路由信息json,然後動態添加路由並生成菜單,使菜單與動態路由內容進行一個匹配,這樣子我們可以實現由後端控制前端的菜單和路由,我們的項目往往只需要內置幾個組件無需許可權的公共頁面如登陸、注冊、忘記密碼和404錯誤這幾個常用頁面組件。
我們只需要將寫好的組件放置到我們的view視圖下,然後我們通過動態的路由和菜單實現路由添加和菜單進行匹配,我們便可實現對插件進行訪問,我們減少了對route/index.js內容寫入,同時也有利於減少內存的佔用。
我們通過動態路由的形式,我們生成的菜單許可權更加的完善,不僅實現依靠菜單與路由守衛攔截實現鑒權,也可以通過動態路由實現動態載入vue文件,控制更加深度
我們通過動態路由的形式,我們可以將項目分給不同的人進行完成,便於組建一個開發團隊,因為他們所開發的組件,我們只需要在具備基本的javascript庫的情況下。我們直接進行動態路由的一個掛載和菜單生成便可完成項目合作,減少了對route/index.js文件的操作,保證項目的完整性。
最後我發現在非node環境的開發條件下,我們可以實現遠程的vue文件載入,這不僅為我們開發提供了便利,同時也有利於我們及時修改文件,以達到項目的需求,更有利於保障安全,實現伺服器vue文件載入。
Vue:2.6.11。
Vue-route:3.2.0。
主頁
聊天
第一通過後端返回的一個路由json數據,我們通過前端生成符合路由路由靜態內容數組的一個數組,然後再通過addRoute進行一個循環添加,我們以此生成動態路由。在登陸時獲取後端返回的菜單信息,我們進行菜單的一個循環生成,由此我們的一個動態項目就已經完成。
第二怎樣對動態路由和菜單項目進行一個管理。
我們首先可以通過搭建一個組件通過添加路由信息和管理菜單實現二者的動態匹配。我們只需要對路由信息進行一個添加和修改,並和菜單相互間進行匹配,我們便可實現簡單的路由掛載。
組件管理
菜單管理
此時將數據提交的後端由後端進行數據保存,我們此時的組件只需要放在views文件夾下,添加路由進行文件載入,我們便可實現路由管理。
第一登陸頁面配置。
我們需要在靜態文件夾下創建一個menu.json和route.json。兩個json文件模擬伺服器登錄時返回的數據。
我們在登錄頁面模擬獲取數據之後,我們通過菜單的一個方法進行生成菜單,通過路由的方法生成路由數組並進行循環添加,然後執行路由跳轉。
第二配置路由初始化內容。我們將route/index.js的路由信息填為空是非常不理智的,而且會報錯,因為路由初始化在載入前已經完成。有些頁面完全不需要許可權便可訪問,比如登錄、注冊、找回密碼和404錯誤,這種不需要許可權的頁面,我們還是需要將其直接以靜態的形式寫在route/index.js文件中。
Index初始數據
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue . use ( VueRouter )
const routes = [{
path: '/' , //訪問url
name: 'login' , //路由名稱
component : () => import ( '@/unitui/pages/Login.vue' ), //載入模板文件
meta: {
show_site: 0 , //是否全屏顯示
web_title: "登錄" //網站標題
}
},
{
path: '/register' , //訪問url
name: 'register' , //路由名稱
component : () => import ( '@/unitui/pages/Register.vue' ), //載入模板文件
meta: {
show_site: 0 , //是否全屏顯示
web_title: "注冊" //網站標題
}
},
{
path: '/forget' , //訪問url
name: 'forget' , //路由名稱
component : () => import ( '@/unitui/pages/Forget.vue' ), //載入模板文件
meta: {
show_site: 0 , //是否全屏顯示
web_title: "找回密碼" //網站標題
}
},
{
path: '/404' , //訪問url
name: '404' , //路由名稱
component : () => import ( '@/unitui/pages/404.vue' ), //載入模板文件
meta: {
show_site: 0 , //是否全屏顯示
web_title: "404錯誤" //網站標題
}
},
]
const router = new VueRouter ({
routes
})
router . beforeEach (( to , from , next ) => {
document . title = to . meta . web_title
console . log ( to );
next ()
})
export default router
第三,關於防止刷新後丟失的問題。我們需要在app.vue文件中的methods方法中定義一個路由生成方法。
示例:
init_route () { //初始化路由,防止刷新丟失
if ( sessionStorage . getItem ( "route_data" ) != null ) { //只有後端已經返回數據的情況下才允許生成
const route_data = JSON . parse ( sessionStorage . getItem ( "route_data" )); //獲取路由信息
const data = []; //默認路由數組
for ( let index = 0 ; index < route_data . length ; index ++) { //生成路由信息
data [ index ] = {
path: route_data [ index ]. path , //訪問url
name: route_data [ index ]. name , //路由名稱
component : resolve =>
require ([ `@/views/ ${ route_data [ index ]. component } ` ], resolve ), //載入模板文件
meta: {
show_site: route_data [ index ]. meta . show_site , //是否全屏顯示
web_title: route_data [ index ]. meta . web_title //網站標題
}
};
}
for ( let index = 0 ; index < data . length ; index ++) { //循環添加路由
this . $router . addRoute ( data [ index ]);
}
}
}
在mounted中進行方法調用,防止刷新的時路由丟失,導致發生錯誤。該方法內容基本和登陸頁面的菜單出路由初始內容基本相同,但我們唯一差別的是,我們需要判斷登陸所獲取的路由信息是否存在,只有在存在的時候及後端已經返回了路由信息,即證明登錄成功的時候,我們才會動態添加路由。
第一在刷新之後,默認跳轉到path:』*』的一個路由界面中去,此時我們解決方法只需要將path:』*』路由進行一個刪除,將其刪除就變可正常訪問。
第二動態路由跳轉時發生Cannot find mole xxx錯誤。
意思是無法載入我們指定的一個vue文件,這是由於route3.0版本後import方式不支持傳入變數,此時我們只需要將其改為require方式便可。
我們此次動態vue項目開發已經基本完成,我的開發的項目是基於element-ui進行,那麼如果你需要源碼參考。可以私信回復unit便可獲取。