require.context()

require.context()

require.context 是一个 webpack 的 api ,主要是用于获取一个文件中的所有文件,不过需要有过滤参数。这个是用来实现自动化导入模块,在前端实现的过程中,我们是有时候会导入挺多的文件,可以不需要 import app from ‘./modules/app’ , 使用这个api了, 自动导入

我一般会在store中使用这个api

我的文件目录

在使用这个api的时候,我们可以直接在index.js这个文件中写入,这里就省略了多余的 import app from ‘./modules/app’

下面使用

const modulesFiles = require.context('./modules', true, /\.js$/)

const modules = modulesFiles.keys().reduce((modules, modulePath) => {
  // set './app.js' => 'app'
  const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
  const value = modulesFiles(modulePath)
  modules[moduleName] = value.default
  return modules
}, {})

// 下面导出的时候直接使用modules 就好了

require.context()
这个接受3个参数

directory // 目录文件
useSubdirectories = true // 标记表示是否还搜索其子目录 这个值是Boolean 类型
regExp = /^\.\/.*$/ // 匹配文件的正则表达式

写法

require.context(
  directory,
  (useSubdirectories = true),
  (regExp = /^\.\/.*$/)
);

示例

require.context('./test', false, /\.test\.js$/);
//(创建出)一个 context,其中文件来自 test 目录,request 以 `.test.js` 结尾。

这里需要注意的是,require.context() 返回的是一个函数,这个函数有3个属性

1、resolve {Function} -接受一个参数request,request为test文件夹下面匹配文件的相对路径,返回这个匹配文件相对于整个工程的相对路径

2、keys {Function} -返回匹配成功模块的名字组成的数组

3、id {String} -执行环境的id,返回的是一个字符串,主要用在module.hot.accept,应该是热加载?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值