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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM