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

dva redux數據管理都在models,根據業務不同models可能會有幾十甚至上百的 【模塊.js】,

每次在index.js使用 app.model(require('./models/example').default);  引入 Model 可能要寫多個,

那麼如何優雅的擴展model,不去重複的require model呢,利用 require.context就可以做到。

require.context是什麼

你可以使用該require.context()函數創建自己的上下文

它允許您傳入一個目錄進行搜索,一個標誌指示是否應該搜索子目錄,還有一個正則表達式來匹配文件。

webpack require.context()構建時解析代碼

語法如下:

require.context(directory, useSubdirectories = false, regExp = /^\.\//);

directory 目錄,如當前目錄下的test: './test' useSubdirectories是否使用子目錄, regExp 正則匹配test文件夾下的文件 如匹配js文件 /\.js$/

如下 取出當前目錄下的js文件,並過濾掉index.js文件,再用map遍歷文件名,context返回default方法:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章