最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3.0基于views批量實(shí)現(xiàn)動態(tài)路由的方法(示例代碼)

 更新時間:2024年12月17日 11:19:41   作者:kirinlau  
以前vue項目中也有很多實(shí)現(xiàn)動態(tài)路由的方法,比如有一些項目涉及權(quán)限的可能會使用api請求路由數(shù)據(jù)在來createRouter,或者本地構(gòu)建使用routes.push來動態(tài)構(gòu)建路由, 今天介紹一種新的方式來基于某個文件夾批量構(gòu)建動態(tài)路由的方法,感興趣的朋友一起看看吧

以前vue項目中也有很多實(shí)現(xiàn)動態(tài)路由的方法,比如有一些項目涉及權(quán)限的可能會使用api請求路由數(shù)據(jù)在來createRouter,或者本地構(gòu)建使用routes.push來動態(tài)構(gòu)建路由, 今天介紹一種新的方式來基于某個文件夾批量構(gòu)建動態(tài)路由的方法:
假如項目scr基礎(chǔ)目錄偽代碼如下:

src
├── views
│   ├── Home.vue
│   ├── About.vue
│   └──...(其他組件.vue文件)
├── main.js
└── router
    └── index.js

配置router

src/router/index.js(路由配置文件,路徑可根據(jù)實(shí)際情況調(diào)整)中進(jìn)行如下基礎(chǔ)配置:

import { createRouter, createWebHistory } from 'vue-router'
import.meta.glob('../views/*.vue') // 用于動態(tài)導(dǎo)入組件
const routes = []
const router = createRouter({
  history: createWebHistory(),
  routes
})
export default router

動態(tài)生成路由

import { createRouter, createWebHistory } from 'vue-router'
import.meta.glob('../views/*.vue')
const routes = []
const addRoutesFromViewsFolder = () => {
  const componentModules = import.meta.glob('../views/*.vue')
  for (const path in componentModules) {
    const componentName = path.split('/').pop().replace('.vue', '')
    const routePath = `/${componentName.toLowerCase()}`
    const routeConfig = {
      path: routePath,
      name: componentName,
      component: componentModules[path],
      meta: {
        title: obj.componentName,
        needToken: obj.needToken
      }
    }
    routes.push(routeConfig)
  }
}
addRoutesFromViewsFolder()
const router = createRouter({
  history: createWebHistory(),
  routes
});
export default router;

在 main.js 中使用路由

import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
const app = createApp(App);
app.use(router);
app.mount('#app');

總結(jié):

  • 首先通過import.meta.glob(‘…/views/*.vue’)獲取views文件夾下所有.vue組件的模塊引用
  • 然后遍歷這些模塊引用,分割提取出組件名稱,并根據(jù)一定規(guī)則生成路由配置對象,包含path(路由路徑)、name(路由名稱)以及component(對應(yīng)的組件)
  • 接著將這些路由配置對象添加到routes數(shù)組中,并基于這個routes數(shù)組創(chuàng)建vue-router實(shí)例
  • 這樣,Vue 3 應(yīng)用就可以根據(jù)views文件夾下的組件動態(tài)生成路由了,當(dāng)添加新的組件到views文件夾時,只要符合上述掃描規(guī)則,就會自動被添加到路由配置中,無需手動逐個去配置路由,也無須知道別人添加了什么路由

注意:

  • 代碼中的路徑等都是基于常見的項目結(jié)構(gòu)示例,實(shí)際項目中你可能需要根據(jù)真實(shí)的文件夾結(jié)構(gòu)和組件命名等情況來調(diào)整相關(guān)代碼,比如import.meta.glob中的路徑部分。
  • 另外菜單渲染遍歷使用的是meta最好能寫個映射表,這樣就可以和當(dāng)前的routes對象自動對應(yīng)
  • 還有就是對于更復(fù)雜的路由需求,比如路由嵌套、路由參數(shù)傳遞等,還需要進(jìn)一步在路由配置和組件中進(jìn)行相應(yīng)的擴(kuò)展和實(shí)現(xiàn)。

備注:vue3中引入了import.meta.的概念可以有很多的用法比如環(huán)境變量、當(dāng)前url、當(dāng)前組件等

到此這篇關(guān)于vue3.0基于views批量實(shí)現(xiàn)動態(tài)路由的方法(示例代碼)的文章就介紹到這了,更多相關(guān)vue動態(tài)路由內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3報錯提示找不到模塊“./XXX.vue”或其相應(yīng)的類型聲明問題

    vue3報錯提示找不到模塊“./XXX.vue”或其相應(yīng)的類型聲明問題

    這篇文章主要介紹了vue3報錯提示找不到模塊“./XXX.vue”或其相應(yīng)的類型聲明問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue中?$forceUpdate的使用解析

    vue中?$forceUpdate的使用解析

    這篇文章主要介紹了vue中?$forceUpdate的使用解析,該方案是比較好的一種方式,比如說我們嘗試直接給某個??object??增加一個屬性,發(fā)現(xiàn)頁面上沒有效果;直接將length變成0來清空數(shù)組,下文詳細(xì)資料需要的小伙伴可以參考一下
    2022-04-04
  • vue3 Element-Plus el-backtop無效問題及解決

    vue3 Element-Plus el-backtop無效問題及解決

    這篇文章主要介紹了vue3 Element-Plus el-backtop無效問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • uniapp開發(fā)打包多端應(yīng)用完整方法指南

    uniapp開發(fā)打包多端應(yīng)用完整方法指南

    這篇文章主要介紹了uniapp開發(fā)打包多端應(yīng)用完整流程指南,包括了uniapp打包小程序,uniapp打包安卓apk,uniapp打包IOS應(yīng)用,需要的朋友可以參考下
    2022-12-12
  • VUE3中實(shí)現(xiàn)拖拽與縮放自定義看板vue-grid-layout詳解

    VUE3中實(shí)現(xiàn)拖拽與縮放自定義看板vue-grid-layout詳解

    想實(shí)現(xiàn)桌面自由拖拽布局的效果,找到了vue-grid-layout柵格布局插件,可以完美解決,下面這篇文章主要給大家介紹了關(guān)于VUE3中實(shí)現(xiàn)拖拽與縮放自定義看板vue-grid-layout的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 搭建vue開發(fā)環(huán)境

    搭建vue開發(fā)環(huán)境

    這篇文章主要介紹了搭建vue開發(fā)環(huán)境的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • vue實(shí)現(xiàn)簡單的MVVM框架

    vue實(shí)現(xiàn)簡單的MVVM框架

    這篇文章給大家分享了基于vue實(shí)現(xiàn)一個簡單的MVVM框架的相關(guān)內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。
    2018-08-08
  • Vue圖片放大鏡組件的封裝使用詳解

    Vue圖片放大鏡組件的封裝使用詳解

    這篇文章主要為大家詳細(xì)介紹了Vue圖片放大鏡組件的封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue學(xué)習(xí)教程之帶你一步步詳細(xì)解析vue-cli

    vue學(xué)習(xí)教程之帶你一步步詳細(xì)解析vue-cli

    這篇文章的主題是vue-cli的理解?;蛟S,很多人在開發(fā)vue的時候,我們會發(fā)現(xiàn)一個問題——只會去用,而不明白它的里面的東西?,F(xiàn)在的框架可以說是足夠的優(yōu)秀,讓開發(fā)者不用為搭建開發(fā)環(huán)境而煩惱。但是有時候,我們還是得回到原始生活體驗(yàn)一下,才能夠讓自己更上層樓。
    2017-12-12
  • 解決Vue + Echarts 使用markLine標(biāo)線(precision精度問題)

    解決Vue + Echarts 使用markLine標(biāo)線(precision精度問題)

    這篇文章主要介紹了解決Vue + Echarts 使用markLine標(biāo)線(precision精度問題),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評論

涪陵区| 通海县| 盐山县| 遵义市| 闻喜县| 桃园市| 榕江县| 乌兰浩特市| 清水河县| 渭源县| 鄯善县| 上犹县| 安宁市| 山东省| 西乌珠穆沁旗| 连江县| 岳池县| 萨嘎县| 淮滨县| 洛隆县| 榆树市| 前郭尔| 饶平县| 罗山县| 依兰县| 乾安县| 皮山县| 白玉县| 双鸭山市| 宁化县| 阿拉尔市| 黎平县| 淮北市| 仙游县| 白玉县| 翼城县| 开平市| 罗城| 铜陵市| 四川省| 曲阳县|