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

 

转载于:https://www.cnblogs.com/juexin/p/9401078.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值