模块方法之 requireContext

发布于 2025-01-07 01:24:01 字数 1920 浏览 9 评论 0

语法

const context = require.context(
  (directory: String),
  (includeSubdirs: Boolean) /* 可选的,默认值是 true */,
  (filter: RegExp) /* 可选的,默认值是 /^\.\/.*$/,所有文件 */,
  (mode: String)  /* 可选的, 'sync' | 'eager' | 'weak' | 'lazy' | 'lazy-once',默认值是 'sync' */
)

如果 mode 设置为 lazy,基础模块将以异步方式加载

var context = require.context('locales', true, /\.json$/, 'lazy')
context('localeA').then((locale) => {
  // do something with locale
})

创建出一个 context,其中文件来自 template 目录,不搜寻子目录,request 以 .js 结尾

const requireContext = require.context('./template', false, /\.js$/)
// 创建出一个 context,其中文件来自 template 目录,不搜寻子目录,request 以 `.js` 结尾。

require.context 返回值

console.log(requireContext)
// ƒ webpackContext(req) {
//   var id = webpackContextResolve(req);
//   return __webpack_require__(id);
// }

requireContext.resolve

返回 request 被解析后得到的模块 id

console.log(requireContext.resolve)
// ƒ webpackContextResolve(req) {
//   if(!__webpack_require__.o(map, req)) {
//     var e = new Error("Cannot find module '" + req + "'");
//     e.code = 'MODULE_NOT_FOUND';
//     throw e;
//   }
//   return map[req];
// }

requireContext.keys

由所有可能被此 context module 处理的模块 id

console.log(requireContext.keys)
// ƒ webpackContextKeys() {
//   return Object.keys(map);
// }

加载这个上下文的所有文件

function importAll (r) {
  r.keys().forEach(r)
}
importAll(requireContext)

requireContext.id

context module 的模块 id

console.log(requireContext.id)
// ./src/template sync \.js$

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

羁绊已千年

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文