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) 不用每次寫頁(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,用于存放模塊路由代碼。
二、編寫模塊路由
在index.route.js文件下編寫,
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
三、編寫總路由
找到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 // 展開數(shù)組 ]})
這樣就完畢了,源代碼地址
到此這篇關(guān)于Vue路由的模塊自動(dòng)化與統(tǒng)一加載實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Vue路由模塊自動(dòng)化與統(tǒng)一加載內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. python利用os模塊編寫文件復(fù)制功能——copy()函數(shù)用法2. php測(cè)試程序運(yùn)行速度和頁(yè)面執(zhí)行速度的代碼3. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究4. 三個(gè)不常見的 HTML5 實(shí)用新特性簡(jiǎn)介5. 無(wú)線標(biāo)記語(yǔ)言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁(yè)6. ajax請(qǐng)求添加自定義header參數(shù)代碼7. Python使用jupyter notebook查看ipynb文件過程解析8. 解決Python 進(jìn)程池Pool中一些坑9. 解決python腳本中error: unrecognized arguments: True錯(cuò)誤10. IntelliJ IDEA創(chuàng)建普通的Java 項(xiàng)目及創(chuàng)建 Java 文件并運(yùn)行的教程
