天天看點

vue3 - 批量注冊元件

目的: 自動的批量注冊元件。

大緻步驟:

  • 使用 require 提供的函數 context 加載某一個目錄下的所有 .vue 字尾的檔案。
  • 然後 context 函數會傳回一個導入函數 importFn
  • 它又一個屬性 keys() 擷取所有的檔案路徑 通過檔案路徑數組,
  • 通過周遊數組,再使用 importFn 根據路徑導入元件對象
  • 周遊的同時進行全局注冊即可

手動注冊元件

vue3 - 批量注冊元件

批量注冊元件

// 導入library檔案夾下的所有元件
// 批量導入需要使用一個函數 require.context(dir,deep,matching)
// 參數:1. 目錄  2. 是否加載子目錄  3. 加載的正則比對
const importFn = require.context('./', false, /\.vue$/)
// 比對到的檔案名數組
// console.log('檢視比對到的檔案名數組', importFn.keys()) 
export default {
  install (app) {
  	// 批量注冊全局元件
    // 周遊檔案名數組
    importFn.keys().forEach(item => {
      // 導入函數根據檔案名,導入檔案内容
      const component = importFn(item).default
      // console.log(component)
      // 根據導入的元件檔案,實作自動全局注冊
      app.component(component.name, component)
    })
  }
}
           

總結:

require.context() 是webpack提供的一個自動導入的API
參數1:加載的檔案目錄
參數2:是否加載子目錄
參數3:正則,比對檔案
傳回值:導入函數 fn
keys() 擷取讀取到的所有檔案清單