dva redux數據管理都在models,根據業務不一樣models可能會有幾十甚至上百的 【模塊.js】,webpack
每次在index.js使用 app.model(require('./models/example').default); 引入 Model 可能要寫多個,web
那麼如何優雅的擴展model,不去重複的require model呢,利用 require.context就能夠作到。正則表達式
require.context是什麼redux
你能夠使用該require.context()
函數建立本身的上下文。app
它容許您傳入一個目錄進行搜索,一個標誌指示是否應該搜索子目錄,還有一個正則表達式來匹配文件。函數
webpack require.context()
在構建時解析代碼ui
語法以下:spa
require.context(directory, useSubdirectories = false, regExp = /^\.\//);
directory 目錄,如當前目錄下的test: './test' useSubdirectories是否使用子目錄, regExp 正則匹配test文件夾下的文件 如匹配js文件 /\.js$/code
以下 取出當前目錄下的js文件,並過濾掉index.js文件,再用map遍歷文件名,context返回default方法:blog
const context = require.context('./', false, /\.js$/); export default context .keys() .filter(item => item !== './index.js') .map(key => context(key));
index.js文件引用models:
require('./models').default.forEach(key => { app.model(key.default); });
其餘使用是同樣的,只是不用一個個去require模塊了。