Vue3+vite路由配置優(yōu)化(自動(dòng)化導(dǎo)入)
今天在維護(hù)優(yōu)化公司中臺(tái)項(xiàng)目時(shí),發(fā)現(xiàn)路由的文件配置非常多非常亂,只要只中大型項(xiàng)目,都會(huì)進(jìn)入很多的路由頁面,規(guī)范一點(diǎn)的公司還會(huì)吧路由進(jìn)行模塊化導(dǎo)入,但是依然存在很多文件夾的和手動(dòng)導(dǎo)入的問題。
于是我想到了我之前使用vuex時(shí)進(jìn)行的模塊化自動(dòng)導(dǎo)入js文件,能不能使用到自動(dòng)導(dǎo)入.vue文件中去,答案是可以!
只需要 15行代碼就優(yōu)化 300行路由配置并且在也不用去后期手動(dòng)添加路由配置!解放之鼓啊,廢話不多說直接上核心代碼。
注意:如果你view下面有組件,那么你需要給組件的文件命名:components/組件.vue,不限制層級你可以在view下任意地方創(chuàng)建components開發(fā)你的私有組件
1.核心代碼
// 自動(dòng)路由配置(自動(dòng)導(dǎo)入views文件下所有的文件內(nèi)的.vue文件進(jìn)行注冊到路由,除了文件名叫components下的vue文件不會(huì)被注冊進(jìn)行路由,默認(rèn)這是一個(gè)組件文件夾) const routeFiles = import.meta.glob('../views/**/*.vue'); // 獲取所有views文件下的.vue文件 const routesList = [] // 儲(chǔ)存符合路由頁面的對象內(nèi)容 // 會(huì)有一些頁面不需要自動(dòng)注冊,需要我們手動(dòng)添加的就在這里上路徑 const notRead = ['../views/index.vue','../views/login.vue','../views/index-data.vue','../views/notFound.vue.vue']; Object.keys(routeFiles).forEach(key => { if (key.indexOf('components') === -1 && notRead.indexOf(key) === -1) {// 排除組件 和 不需要自動(dòng)注冊的路由 const name = key.match(/\.\/(.+)\.vue$/)[1]; const component = routeFiles[key]; routesList.push({ path: `/${name.toLowerCase()}`, component: component.default || component, name: name }); } });
2.完整代碼
import { createRouter, createWebHashHistory } from 'vue-router'; import storage from '@/utils/sessionStore.js'; import { defineAsyncComponent, h } from 'vue' // 自動(dòng)路由配置(自動(dòng)導(dǎo)入views文件下所有的文件內(nèi)的.vue文件進(jìn)行注冊到路由,除了文件名叫components下的vue文件不會(huì)被注冊進(jìn)行路由,默認(rèn)這是一個(gè)組件文件夾) const routeFiles = import.meta.glob('../views/**/*.vue'); // 獲取所有views文件下的.vue文件 const routesList = [] // 儲(chǔ)存符合路由頁面的對象內(nèi)容 // 會(huì)有一些頁面不需要自動(dòng)注冊,需要我們手動(dòng)添加的就在這里上路徑 const notRead = ['../views/index.vue','../views/login.vue','../views/index-data.vue','../views/notFound.vue.vue']; Object.keys(routeFiles).forEach(key => { if (key.indexOf('components') === -1 && notRead.indexOf(key) === -1) {// 排除組件 和 不需要自動(dòng)注冊的路由 const name = key.match(/\.\/(.+)\.vue$/)[1]; const component = routeFiles[key]; routesList.push({ path: `/${name.toLowerCase()}`, component: component.default || component, name: name }); } }); const routes = [ { path: '/', name: 'login', component: () => import('@/views/login.vue') }, { path: '/index', name: 'index', component: () => import('@/views/index.vue'), children: [ { path: '/index-data', name: 'index-data', component: () => import('@/views/index-data.vue'), }, ...routesList // 自動(dòng)配置在這個(gè)路由下(可以根據(jù)自己的需求進(jìn)行調(diào)整) ] }, { path: '/404', name: '404', component: () => import('@/views/notFound.vue') }, ]; const router = createRouter({ history: createWebHashHistory(), routes }); router.beforeEach((to, from, next) => { next() }); export default router
3.路由地址說明
直接通過文件夾路徑層級來寫訪問路由即可 列如:
/views/device/grouping
/views/device/list
/views/device/index/appList
后期直接創(chuàng)建文件夾與vue文件即可 不需要再去維護(hù)路由配置文件
到此這篇關(guān)于Vue3+vite路由配置優(yōu)化(自動(dòng)化導(dǎo)入)的文章就介紹到這了,更多相關(guān)Vue3 vite路由配置優(yōu)化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決vue?vite啟動(dòng)項(xiàng)目報(bào)錯(cuò)ERROR:?Unexpected?“\x88“?in?JSON?的問題
這篇文章主要介紹了vue?vite啟動(dòng)項(xiàng)目報(bào)錯(cuò)ERROR:?Unexpected?“\x88“?in?JSON?原因,本文給出出現(xiàn)此類問題的原因所在并給出解決方法,需要的朋友可以參考下2022-09-09vue+element項(xiàng)目實(shí)時(shí)監(jiān)聽div寬度的變化
這篇文章主要介紹了vue+element項(xiàng)目里實(shí)時(shí)監(jiān)聽某個(gè)div寬度的變化,然后執(zhí)行相應(yīng)的事件,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-08-08vue2中Print.js的使用超詳細(xì)講解(pdf、html、json、image)
項(xiàng)目中有用到打印功能,網(wǎng)上就找了print.js,下面這篇文章主要給大家介紹了關(guān)于vue2中Print.js使用(pdf、html、json、image)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03在antd Form表單中select設(shè)置初始值操作
這篇文章主要介紹了在antd Form表單中select設(shè)置初始值操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11vue element插件this.$confirm用法及說明(取消也可以發(fā)請求)
這篇文章主要介紹了vue element插件this.$confirm用法及說明(取消也可以發(fā)請求),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10vue實(shí)現(xiàn)驗(yàn)證用戶名是否可用
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)驗(yàn)證用戶名是否可用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01vue左右側(cè)聯(lián)動(dòng)滾動(dòng)的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue左右側(cè)聯(lián)動(dòng)滾動(dòng)的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06