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