今天在看vue-element-admin
,發現了一個很好的關於批量導入多個文件的作法,不須要手動import
同一文件夾下的多個文件,便於前端自動化配置,特此拿出來作一次分享。前端
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) // 知識點1: 可用於模塊的批量導入,類同於import引入同一文件夾下多個文件。 // require.context(directory, useSubdirectories = false, regExp = /^.//); // 參數: 1. 讀取文件的路徑 2. 是否遍歷文件的子目錄 3. 匹配文件的正則表達式 // 返回是一個函數,是該文件夾下的匹配文件的執行環境 // 該函數有三個屬性 // 1. resolve {Function} -接受一個參數request,request爲test文件夾下面匹配文件的相對路徑,返回這個匹配文件相對於整個工程的相對路徑 // 2. keys {Function} -返回匹配成功模塊的名字組成的數組 const modulesFiles = require.context('./modules', true, /\.js$/) // 知識點2:reduce(()=> {total, currentValue, currentIndex, arr}, initValue) // 參數: 1. 執行每條數據的函數 2. 傳遞給函數的初始值,可選(之前沒發現初始值的妙用-可用於統計個數、去重等) // 函數的參數 // 1. total 必需。初始值, 或者計算結束後的返回值。若是設置初始值就用初始值,不然就是函數的第一條數據 // 2. currentValue 必需。當前元素 const modules = modulesFiles.keys().reduce((modules, modulePath) => { // 忽略第1個js const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1') // 執行modulesFiles函數,返回一個對象{default: {// 文件內容}, _esModule: true} const value = modulesFiles(modulePath) modules[moduleName] = value.default return modules }, {}) const store = new Vuex.Store({ modules, getters }) export default store