require.context

文章介绍了webpack的require.contextAPI,这是一个用于自动化遍历和导入指定文件夹中模块的工具。通过提供目录路径、是否遍历子目录及文件匹配规则,可以获取文件列表并加载其内容。文中示例展示了如何加载特定JS文件并将模块数据添加到原型链中,简化了前端工程中频繁引用模块的处理过程。
摘要由CSDN通过智能技术生成

1、什么是 require.context

一个 webpack 的 api ,通过该函数可以获取一个上下文,从而实现工程自动化(遍历文件夹的文件,从中获取指定文件,自动导入模块)。

在前端工程中,如果一个文件夹中的模块需要频繁引用时可以使用该中方式一次性引入

2、使用

参数类型说明
dirnameString需要读取模块的文件的所在目录
useSubdirectoriesBoolean是否遍历子目录
RegExpRegExp匹配的规则(正则表达式)

 3、返回结果

属性类型说明
resolveFunction接受一个参数request,request为文件夹下面匹配文件的相对路径,返回这个匹配文件相对于整个工程的相对路径
keysFunction返回一个数组,由匹配成功的文件所组成的数组
idString执行环境的 id

4、自动加载目录下特定 js 文件,并将模块数据添加进原型链属性中

// api/index.js
const path = require('path');
const moduleList = {};
const dirname = "@/api"
reqContext(dirname);
function reqContext(dir) {
  // 匹配特定 js 文件
  const fileList = require.context(dir , true, /(api).js$/);
  let files = fileList.keys();
  if(!files.length) return ;
  files.forEach( paths => {
    let content = require(`${dir}/${path.join(paths)}`);
    assignment(content);
  });
}
// 将模块的数据加载进 moduleList 对象中
function assignment(obj) {
  if(!Object.keys(obj).length) return ;
  let arr = Object.keys(obj);
  arr.forEach( key => {
    moduleList[key] = obj[key];
  })
}
module.exports = moduleList;
// index.js
import moduleList from '@/api';
import vue from 'vue';

vue.prototype.$moduleList = moduleList;

在这里插入图片描述

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值