require.context的作用

1、什么是 require.context

一个 webpack 的 api ,通过该函数可以获取一个上下文,从而实现工程自动化(遍历文件夹的文件,从中获取指定文件,自动导入模块)。
在前端工程中,如果一个文件夹中的模块需要频繁引用时可以使用该中方式一次性引入

2、使用

参数 类型 说明
dirname String 需要读取模块的文件的所在目录
useSubdirectories Boolean 是否遍历子目录
RegExp RegExp 匹配的规则(正则表达式)
//遍历svg目录下的所有svg文件
const req = require.context('./svg', false, /\.svg$/)

3、返回结果

属性 类型 说明
resolve Function 接受一个参数request,request为文件夹下面匹配文件的相对路径,返回这个匹配文件相对于整个工程的相对路径
keys Function 返回一个数组,由匹配成功的文件所组成的数组
id String 执行环境的 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;

在这里插入图片描述

相关推荐

  1. js中()作用

    2024-01-09 12:10:03       36 阅读
  2. undo作用

    2024-01-09 12:10:03       39 阅读
  3. bean作用范围

    2024-01-09 12:10:03       35 阅读
  4. volatile作用

    2024-01-09 12:10:03       32 阅读
  5. BindingResult作用

    2024-01-09 12:10:03       26 阅读
  6. C++ access 作用

    2024-01-09 12:10:03       31 阅读
  7. key值作用

    2024-01-09 12:10:03       18 阅读
  8. nextTick作用

    2024-01-09 12:10:03       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-09 12:10:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-09 12:10:03       18 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-09 12:10:03       17 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-09 12:10:03       20 阅读

热门阅读

  1. leetcode每日一题43

    2024-01-09 12:10:03       39 阅读
  2. LeetCode——447. 回旋镖的数量

    2024-01-09 12:10:03       35 阅读
  3. LeetCode 每日一题 2024/1/1-2024/1/7

    2024-01-09 12:10:03       36 阅读
  4. MySQL C API的使用

    2024-01-09 12:10:03       32 阅读
  5. 【C++之单例模式】

    2024-01-09 12:10:03       23 阅读
  6. 设计模式之单例模式

    2024-01-09 12:10:03       33 阅读
  7. XGBoost(eXtreme Gradient Boosting)

    2024-01-09 12:10:03       39 阅读