Vue路由的模塊自動(dòng)化與統(tǒng)一加載實(shí)現(xiàn)
首先呢,我們來(lái)看看一般項(xiàng)目路由是怎么劃分的。
為什么這么劃分呢?如果大項(xiàng)目業(yè)務(wù)非常多,單純的單頁(yè)面很難維護(hù),我們只有這樣規(guī)范化,才能高效率。
模塊自動(dòng)化與統(tǒng)一加載的好處:
- 規(guī)范化命名(模塊名.業(yè)務(wù)名.vue)
- 不用每次寫(xiě)頁(yè)面都要去總路由引入組件
接下來(lái),我們實(shí)戰(zhàn)一波。
一、建立項(xiàng)目文件目錄以及文件夾
根據(jù)上面的要求建立,依次在src文件夾下的components文件夾下建立一個(gè)如名叫model1文件夾用于存放功能模塊(可以分別創(chuàng)建多個(gè)模塊文件夾,里面分別存放業(yè)務(wù)代碼)。在該文件夾下創(chuàng)建components文件夾
,用于存放組件。創(chuàng)建pages文件夾
,用于存放頁(yè)面。創(chuàng)建index.route.js
,用于存放模塊路由代碼。
二、編寫(xiě)模塊路由
在index.route.js
文件下編寫(xiě),
let router = require.context("./pages",true,/.vue/); // require.context()是webpack提供的方法,這個(gè)方法的第一個(gè)參數(shù)是require的一個(gè)文件夾,第二個(gè)參數(shù)是否遍歷子目錄,第三個(gè)參數(shù)是篩選什么類型的文件。 let arr = []; // router是一個(gè)方法,直接調(diào)用會(huì)出錯(cuò),router.keys()是router里的一個(gè)靜態(tài)方法。 console.log(router.keys()); // ["./model1.index.vue", "./model1.second.vue"] router.keys().forEach((key) => { let _keyarr=key.split("."); // 分割字符串。如"./model1.index.vue" if(key.indexOf("index")!=-1){ // 判斷每一項(xiàng)字符串是否有index,有即首頁(yè) arr.push({ path:_keyarr[1], component:router(key).default, // 相當(dāng)于import meta:{ title:_keyarr[1].replace('/','') // 刪除"/" } }) } else{ arr.push({ path:_keyarr[1]+"/"+_keyarr[2], component:router(key).default, meta:{ title:_keyarr[2] } }) } }); export default arr
三、編寫(xiě)總路由
找到router文件夾
下的index.js
文件
import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) let router = require.context("../components",true,/\.route\.js/); let arr=[]; router.keys().forEach((key) => { arr=arr.concat(router(key).default); // 拼接數(shù)組 }); export default new Router({ routes: [ ...arr // 展開(kāi)數(shù)組 ] })
這樣就完畢了,源代碼地址
到此這篇關(guān)于Vue路由的模塊自動(dòng)化與統(tǒng)一加載實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Vue路由模塊自動(dòng)化與統(tǒng)一加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue.js動(dòng)態(tài)數(shù)據(jù)綁定學(xué)習(xí)筆記
這篇文章主要為大家詳細(xì)介紹了vue.js動(dòng)態(tài)數(shù)據(jù)綁定學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Vue兩個(gè)同級(jí)組件傳值實(shí)現(xiàn)
Vue組件之間是有聯(lián)系的,避免不了組件之間要互相傳值,那么如何實(shí)現(xiàn)Vue兩個(gè)同級(jí)組件傳值,本文就來(lái)介紹一下,感興趣的可以了解一下2021-07-07vue中如何實(shí)現(xiàn)拖拽調(diào)整順序功能
這篇文章主要介紹了vue中如何實(shí)現(xiàn)拖拽調(diào)整順序功能問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05vue3.x使用swiperUI動(dòng)態(tài)加載圖片失敗的解決方法
這篇文章主要為大家詳細(xì)介紹了vue3.x使用swiperUI動(dòng)態(tài)加載圖片失敗的解決方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07Vue中使用vue-i18插件實(shí)現(xiàn)多語(yǔ)言切換功能
在基于vue-cli項(xiàng)目開(kāi)發(fā)過(guò)程中,多語(yǔ)言切換功能可使用vue-i18插件,這篇文章分步驟給大家介紹了Vue中使用vue-i18插件實(shí)現(xiàn)多語(yǔ)言切換功能,感興趣的朋友一起看看吧2018-04-04Vue2實(shí)現(xiàn)自適應(yīng)屏幕大小的兩種方法詳解
這篇文章主要為大家詳細(xì)介紹了Vue2實(shí)現(xiàn)自適應(yīng)屏幕大小的兩種方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03vue/cli3.0腳手架部署到nginx時(shí)頁(yè)面空白的問(wèn)題及解決
這篇文章主要介紹了vue/cli3.0腳手架部署到nginx時(shí)頁(yè)面空白的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10keep-Alive搭配vue-router實(shí)現(xiàn)緩存頁(yè)面效果的示例代碼
這篇文章主要介紹了keep-Alive搭配vue-router實(shí)現(xiàn)緩存頁(yè)面效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06