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