webpack與vite環(huán)境下自動引入并注冊路由組件

問題

通常我們在開發(fā)業(yè)務(wù)時,一個文件夾下會有多個頁面路由組件,每當(dāng)添加一個頁面組件需要手動import該組件進(jìn)行注冊路由,這樣重復(fù)的工作著實(shí)讓人煩躁,那么有沒有更好的方式自動引入注冊呢。

如果是小項目還好,幾個頁面每次都手動import也不怎么費(fèi)事

webpack

使用require.context

暫沒找到官方文檔

  1. require.context接收三個參數(shù)
  • require.context(directory, useSubdirectories, regExp)
    • directory 要檢索的目錄
    • useSubdirectories 是否檢索子文件夾
    • regExp 匹配文件的正則表達(dá)式,通常是后綴文件名(.js/.vue)
  1. 示例
  • 如目錄views下有兩個vue組件 Aaa.vue和Bbb.vue


    views
  • 導(dǎo)入
    • require.png
  • 輸出modules
    • modules

modules輸出的信息是一個函數(shù)

  • 使用Object.keys查看該函數(shù)有些什么方法(keys)
    • keys

這里我們需要的是keys

  • 執(zhí)行modules.keys()
    • modules.keys

    此時拿到的是文件路徑,可把文件路徑作為key值拿到對應(yīng)的組件

  • 遍歷keys注冊路由
    • routes

routes就是我們要注冊的路由信息
組件通過modules[key]獲取
toLowerCase是為了給用戶看到的頁面pathname為小寫

vite

使用import.meta,其中import.meta下有兩個方法import.meta.glob和import.meta.globEager,這里使用import.meta.glob

import.meta是一個給JavaScript模塊暴露特定上下文的元數(shù)據(jù)屬性的對象。它包含了這個模塊的信息,比如說這個模塊的URL MDN

  • import.meta.glob,這里只接收一個參數(shù)directory 要檢索的目錄
    • modules

modules拿到的是一個對象,對象里每個key對應(yīng)一個函數(shù),對象的每個key也是文件路徑

  • 從modules中獲取keys
    • moduleKeys.png
  • 遍歷keys注冊路由
    • routes

本文完~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容