dva webpack 利用require.context加載多個model

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模塊了。

相關文章
相關標籤/搜索