require.context 使用

6,981 阅读1分钟

查找记录挖掘的一部分内容,如有错误,欢迎指出

require.context 在webpack中的链接;当在其他环境使用时,可以单独引入一个模块,参考npmjs里面的链接

require.context 是webpack的一个api,通过执行require.context()函数,来获取指定的文件夹内的特定文件,在需要多次从同一个文件夹内倒入的模块,使用这个函数可以自动倒入,不用每个都显示的写import来引入。

require.context(directory,useSubdirectories,regExp) 需要的参数

const requireComponent = require.context(
  // 其组件目录的相对路径
  './base',
  // 是否查询其子目录
  false,
  // 匹配基础组件文件名的正则表达式
  /Base[A-Z]\w+\.(vue|js)$/
)

可以参考github项目的src/main.js对应的require.context内容

require.context(directory, useSubdirectories = true, regExp = /^\.\/.*$/, mode = 'sync');
三个参数分别为:
1. directory{String} : 需要读取的目录文件夹
2. useSubdirectories{Boolean} : 是否遍历文件的子目录(true遍历,false否)
3. regExp{RegExp} : 匹配文件的正则表达式

require.context() 返回的结果是一个函数,该函数包含3个属性

require.context

3个属性分别为:

  • resolve{Function} : 是一个函数,返回已分析请求的模块id
  • keys : 返回上下文模块可以处理的所有可能请求的数组的函数
  • id : 是上下文模块的模块id。这可能对module.hot.acce有用

主要是使用keys,requireComponent.keys()对应如下图

keys