亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue使用require.context實(shí)現(xiàn)動(dòng)態(tài)注冊(cè)路由

 更新時(shí)間:2020年12月25日 10:51:29   作者:紫藤蘿yu  
這篇文章主要介紹了vue使用require.context實(shí)現(xiàn)動(dòng)態(tài)注冊(cè)路由的方法,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下

需求場(chǎng)景:

在日常的功能練習(xí)和調(diào)試過(guò)程中,需要一個(gè)demo項(xiàng)目進(jìn)行功能測(cè)試,由于頻繁.vue頁(yè)面的同時(shí),又要再router.js文件里面注冊(cè)路由,感覺(jué)有點(diǎn)無(wú)聊和枯燥?;诖顺霭l(fā)點(diǎn),考慮能否自動(dòng)讀取文件夾下的文件進(jìn)行路由注冊(cè)。

借鑒思路:

參考vue的功能基礎(chǔ)組件的自動(dòng)化全局注冊(cè),看到一個(gè)require.context方法,可以讀取某個(gè)文件夾下的文件信息。因此考慮,使用這個(gè)方法,獲取views文件夾下的.vue頁(yè)面,文件夾名稱作為路由名稱

require.context的使用介紹:

一個(gè)webpack的api,通過(guò)執(zhí)行require.context函數(shù)獲取一個(gè)特定的上下文,主要用來(lái)實(shí)現(xiàn)自動(dòng)化導(dǎo)入模塊,在前端工程中,如果遇到從一個(gè)文件夾引入很多模塊的情況,可以使用這個(gè)api,它會(huì)遍歷文件夾中的指定文件,然后自動(dòng)導(dǎo)入,使得不需要每次顯式的調(diào)用import導(dǎo)入模塊

頁(yè)面代碼:

如下圖示,views文件夾下的內(nèi)容,都需要進(jìn)行路由注冊(cè)。

文件的路徑有2種,(1)簡(jiǎn)單的vue功能頁(yè)面,直接掛在views文件夾下;(2)復(fù)雜的頁(yè)面,在views下在新建文件夾進(jìn)行處理。

目前需要自動(dòng)注冊(cè)的路由頁(yè)面,是針對(duì)“直接掛在views文件夾”下的頁(yè)面。(因?yàn)関iews下的二級(jí)頁(yè)面,暫時(shí)沒(méi)有想到好的方案)

router/index.js頁(yè)面代碼

心路歷程:

(1)一開(kāi)始的想法,是想著用數(shù)組對(duì)象的方式定義好,路由名稱和引入的路徑地址,但是覺(jué)得還是不夠自動(dòng)化,新建.vue文件的時(shí)候還是需要手動(dòng)添加;

(2)后來(lái)想到用使用require.context方法得到fileName,然后根據(jù)字符串裁減和拼接,得到我所需的url和文件相對(duì)路徑;

  例如: component: () =>import(【變量】),但是后來(lái)發(fā)現(xiàn),import()里面,不能使用變量!!!!!!!!!

  原因:根據(jù)es6module語(yǔ)法,由于import是靜態(tài)執(zhí)行,所以不能使用表達(dá)式和變量這些只有在運(yùn)行時(shí)才能得到結(jié)果的語(yǔ)法結(jié)構(gòu)。

(3)由由于import的使用限制,不能動(dòng)態(tài)使用() =>import的語(yǔ)法,因此在考慮,能否直接替換掉這種異步加載引入的寫(xiě)法。經(jīng)過(guò)分析,得出pathConfig字段里面有一個(gè)屬性的內(nèi)容,是指定的vue頁(yè)面的default模塊內(nèi)容。經(jīng)測(cè)試,可以使用。

  pathConfig的打印內(nèi)容如下示:

(4)因此“views”文件夾下的".vue"文件,引入成功,并用變量routerAry存儲(chǔ)起來(lái),使用concat方法把其他需要手動(dòng)注冊(cè)的路由信息,連接起來(lái),進(jìn)行路由注冊(cè)。

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)


// 查詢指定文件夾下的vue頁(yè)面,自動(dòng)注冊(cè)路由
// 僅適用于:一個(gè)文件夾下的多個(gè)路由頁(yè)面。用于簡(jiǎn)單的頁(yè)面的注冊(cè)
// pathConfig.default的內(nèi)容,是指定的vue頁(yè)面的default模塊內(nèi)容,等同于: () => import('xxxx')
const contextInfo = require.context('../views', false, /.vue$/);
let routerAry = []
contextInfo.keys().forEach(fileName => {
  const pathConfig = contextInfo(fileName)
  let path = "/" + fileName.substring(2,fileName.length-4)
  routerAry.push({
    path,
    component: pathConfig.default
  })
})

const routerList = [
  {
    path: "/",
    redirect: "/animate",
  },
  {
    path: "/openlayers",
    component: () => import('../views/openlayers/openlayers')
  },{
    path: "/render",
    component: () => import('../views/render/render')
  },{
    path: '/vuex',
    component: () => import('../views/vuex/vuex')
  },{
    path: "/echarts",
    component: () => import('../views/echarts/echarts')
  },{
    path: "/ztree",
    component: () => import('../views/ztree/ztree')
  },{
    path: "/ocxplayer",
    component: () => import('../views/ocxplayer/ocxplayer')
  },{
    path: "/animation",
    component: () => import('../views/animation/animation')
  },
]
const newRouterAry = routerList.concat(routerAry)
const router = new VueRouter({
  routes: newRouterAry
})
export default router

以上就是vue使用require.context實(shí)現(xiàn)動(dòng)態(tài)注冊(cè)路由的詳細(xì)內(nèi)容,更多關(guān)于vue 動(dòng)態(tài)注冊(cè)路由的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue?+?ele?實(shí)現(xiàn)下拉選擇框和下拉多選選擇框處理方案

    vue?+?ele?實(shí)現(xiàn)下拉選擇框和下拉多選選擇框處理方案

    這篇文章主要介紹了vue?+?ele?實(shí)現(xiàn)下拉選擇框和下拉多選選擇框處理方案,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • vue-resource 攔截器interceptors使用詳解

    vue-resource 攔截器interceptors使用詳解

    這篇文章主要介紹了vue-resource 攔截器interceptors使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Vue實(shí)現(xiàn)紅包雨小游戲的示例代碼

    Vue實(shí)現(xiàn)紅包雨小游戲的示例代碼

    紅包也叫壓歲錢,是過(guò)農(nóng)歷春節(jié)時(shí)長(zhǎng)輩給小孩兒用紅紙包裹的禮金。本文將通過(guò)Vue制作一個(gè)紅包雨小游戲,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-01-01
  • 記一次用vue做的活動(dòng)頁(yè)的方法步驟

    記一次用vue做的活動(dòng)頁(yè)的方法步驟

    這篇文章主要介紹了記一次用vue做的活動(dòng)頁(yè)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Vue項(xiàng)目查看當(dāng)前使用的elementUI版本的方法

    Vue項(xiàng)目查看當(dāng)前使用的elementUI版本的方法

    今天小編就為大家分享一篇Vue項(xiàng)目查看當(dāng)前使用的elementUI版本的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Vue3 中的數(shù)據(jù)偵測(cè)的實(shí)現(xiàn)

    Vue3 中的數(shù)據(jù)偵測(cè)的實(shí)現(xiàn)

    這篇文章主要介紹了Vue3 中的數(shù)據(jù)偵測(cè)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Vue如何基于vue-i18n實(shí)現(xiàn)多國(guó)語(yǔ)言兼容

    Vue如何基于vue-i18n實(shí)現(xiàn)多國(guó)語(yǔ)言兼容

    這篇文章主要介紹了Vue如何基于vue-i18n實(shí)現(xiàn)多國(guó)語(yǔ)言兼容,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • vue3版本網(wǎng)頁(yè)小游戲設(shè)計(jì)思路

    vue3版本網(wǎng)頁(yè)小游戲設(shè)計(jì)思路

    最近火爆全網(wǎng)的羊了個(gè)羊小程序,背景是根據(jù)官方介紹,“羊了個(gè)羊”是一款闖關(guān)消除小游戲,通關(guān)率不到0.1%。主要玩法為重疊的各類方塊,需要在下方7個(gè)欄內(nèi)完成消除,其特點(diǎn)就是“極難”,也因此成為熱門(mén)挑戰(zhàn),對(duì)vue3版本網(wǎng)頁(yè)小游戲設(shè)計(jì)思路感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • 由淺入深講解vue2和vue3的區(qū)別

    由淺入深講解vue2和vue3的區(qū)別

    最近發(fā)現(xiàn)很多要求Vue3的技術(shù)了,不得不說(shuō)it技術(shù)的更新真的太快了,作為vue2老用戶,我們?cè)趯W(xué)習(xí)Vue3前應(yīng)該了解他們的區(qū)別以及背后的原因,下面這篇文章主要給大家介紹了關(guān)于vue2和vue3區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 詳解vee-validate的使用個(gè)人小結(jié)

    詳解vee-validate的使用個(gè)人小結(jié)

    本篇文章主要介紹了詳解vee-validate的使用個(gè)人小結(jié),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-06-06

最新評(píng)論