`

[译]webpack官网文档 :指南 -- 13.依赖管理

阅读更多

原创翻译,转载请注明出处。

原文地址:https://webpack.js.org/guides/dependency-management/

 

  • es6 modules
  • commonjs
  • amd

 通过表达式请求

模块请求里包含表达式的时候,就会创建一个上下文环境,所以在编译的时候还不知道确切的模块。

例子:

 

require("./template/"+ name +".ejs");

 

 

webpack分析require(),并提取一些信息:

 

Directory: ./template
Regular expression: /^.*\.ejs$/

 

 

上下文模块

会生成一个上下文模块,包含了这个路径里所有模块的引用,跟正则表达式匹配的请求可以使用它。上下文模块包含一个映射,包含请求和模块标识之间的对应关系。

例子:

 

{
    "./table.ejs":42,
    "./table-row.ejs":43,
    "./directory/folder.ejs":44
}

 

 

上下文模块还包含一些访问映射的运行时逻辑。

这就意味着支持动态的请求,但是所有有关联可能的模块都被打到包里了。

 

require.context

你可以使用require.context()函数创建自己的上下文。它允许你传入一个用于查找的路径参数,一个是否允许查找子目录的标识,和一个用来匹配文件的正则表达式。

webpack在编译的时候在代码里解析require.context()。

语法像这样:

 

require.context(directory, useSubdirectories =false, regExp =/^\.\//)

 

 

例子:

 

require.context("./test",false,/\.test\.js$/);
// a context with files from the test directory that can be required with a request endings with `.test.js`.

 

 

 

require.context("../",true,/\.stories\.js$/);
// a context with all files in the parent folder and descending folders ending with `.stories.js`.

 

 

 

上下文模块API

一个上下文模块导出一个 (require)函数,带有一个参数:request。

导出的函数带有三个属性:resolve, keys, id。

  • resolve:是一个函数,返回请求对应的模块id
  • keys:是一个函数,返回一个数组,包含了上下文模块能处理的所有请求。

这在你想请求一个目录里所有文件或匹配一个表达式时会有帮助,例子:

 

function importAll (r){
  r.keys().forEach(r);
}
importAll(require.context('../components/',true,/\.js$/));

 

var cache ={};
function importAll (r){
  r.keys().forEach(key => cache[key]=r(key));
}
importAll(require.context('../components/',true,/\.js$/));
// At build-time cache will be populated with all required modules.
  •  id:是上下文模块的id。对module.hot.accept有用。

 

-- End --

0
0
分享到:
评论

相关推荐

    compile-node-sass-0.0.3.zip

    【压缩包子文件的文件名称列表】中的`README.MD`通常包含了项目的基本信息、使用指南、安装步骤等,是理解项目的重要文档。而`node_modules`是Node.js项目的依赖库目录,其中包含`node-sass`模块以及其他可能的依赖...

    PyPI 官网下载 | rucio-webui-1.14.7.tar.gz

    "PyPI 官网下载 | rucio-webui-1.14.7.tar.gz" 这个标题表明我们正在讨论一个从Python Package Index (PyPI) 官网上获取的软件包,名为 "rucio-webui" 的版本1.14.7。PyPI是Python开发者发布和分享他们编写的软件库...

    Laravel开发-laravel-jos .zip.zip

    8. **文档**:可能包含`.md`格式的文档,介绍项目架构、使用方法、开发指南等。 9. **示例**:可能有示例代码或示例应用,展示如何在实际场景中使用Laravel Jos的功能。 10. **其他**:如`package.json`(如果项目...

    webpack 入门

    - [Webpack 官方文档](https://webpack.js.org/) - [Webpack 中文指南](https://zhcn.webpack.js.org/) #### 六、总结 Webpack 作为一款强大的前端打包工具,在现代前端开发中扮演着重要的角色。通过合理配置和...

    Laravel开发-laravel-kraken .zip.zip

    1. **Laravel 文档**:官方文档是学习 Laravel 的最佳资源,涵盖了从入门到高级的全面教程。 2. **社区与资源**:Laracasts 提供丰富的视频教程,Stack Overflow 和 Laravel.io 社区可以解决开发中的疑问。 3. **...

    webpack中文文档

    - **错误排查**: 查阅Webpack官方文档或社区资源寻找解决方案。 - **优化策略**: 如代码拆分、缓存机制等提升构建速度。 #### 三、Webpack进阶 - **模块化标准**: - **CommonJS**: 节点环境的模块化标准。 - *...

    WX-CLI-源码.rar

    6. **依赖库**:可能会有一个 `package.json` 文件,列出了项目依赖的npm模块,以及它们的版本信息。 通过研究这个源码,开发者可以了解到以下知识点: - **微信小程序开发规范**:学习微信小程序的文件结构、API...

    node-v14.15.1-win-x64

    1. `bin` 目录:包含了可执行文件,如 `node.exe`(Node.js 解释器)和 `npm.cmd`(Node Package Manager,用于管理 Node.js 应用的依赖包)。 2. `include` 目录:包含了 Node.js 的头文件,供 C++ 扩展模块使用。 ...

    vue-demo-pl-table.zip

    8. **yarn.lock**: Yarn是另一种JavaScript包管理器,它的lock文件确保所有依赖包版本的一致性,避免因为不同时间安装包导致的依赖混乱。 9. **README.md**: 这是一个Markdown格式的文件,通常用来介绍项目的基本...

    webpack 中文指南

    - **官方文档**:[Webpack官网](https://webpack.js.org/) - **中文指南**:[Webpack中文指南](https://zhcn.webpack.js.org/) - **社区资源**:GitHub、Stack Overflow等社区讨论。 ### 结语 Webpack作为一个强大...

    pluto-2.0.0-bundle.zip

    2. **文档**:一般会包含用户指南、API参考、开发者手册等,帮助用户快速上手并了解Pluto的工作原理和最佳实践。 3. **示例应用**:为了展示Pluto的功能和用法,可能会提供一些预构建的应用示例,用户可以通过这些...

    boss-driver-school-h5.zip

    此文件定义了 Webpack 如何处理项目中的依赖和输出结果。 5. `.eslintrc.js` - ESLint 是一个代码质量工具,用于检测并修复代码中的潜在问题。这个文件是 ESLint 的配置文件,指定了代码风格规则和错误检查。 6. `...

    s-ui-component.rar

    3. **示例或文档**:可能包括HTML文件,展示如何在实际项目中使用这些组件,以及README文件,提供安装和配置指南。 4. **图表现象**:SVG图标或其他图形资源,用于组件的视觉元素。 5. **测试文件**: Jest、Mocha或...

    sg-exam-master.zip

    1. **README.md**:这是一个Markdown格式的文件,通常用于介绍项目的基本信息,包括项目的目的、如何安装和运行、贡献指南等。 2. **LICENSE**:此文件会规定该项目的开源许可协议,如MIT、Apache 2.0或GPL等,定义...

    bilibilidaxue-main-源码.rar

    4. **依赖管理**:查看package.json(Node.js项目)、requirements.txt(Python项目)或build.gradle(Java项目)等文件,可以获取项目所依赖的外部库和版本信息。 5. **数据库集成**:如果项目涉及到数据存储,...

    ac-actor-master.zip

    5. `README.md`:项目说明文档,可能会包含安装、使用、贡献指南等内容。 在开发和使用这个基于 Element 的组件库时,你可能需要了解以下知识点: - Vue CLI:Vue.js 的命令行工具,用于快速搭建项目环境,构建和...

    viewer-snap-源码.rar

    - 项目可能使用Gradle、Maven(Java)、Webpack或Rollup(JavaScript)等构建工具,进行代码编译、依赖管理、打包等工作。 - 配置文件如`build.gradle`或`package.json`会提供编译和打包的细节。 8. **文档**: -...

    iview-project-3.0.zip

    7. **README.md**: 项目说明文档,可能包含项目简介、安装和运行指南、开发说明等内容。 8. **webpack.config.js**: Webpack 配置文件,用于处理项目打包构建过程中的各种设置,如模块加载、代码分割、热重载等。 ...

    big-data-view-master.zip

    6. **文档**:`.md`文件可能包含项目说明、API参考或开发者指南。 7. **构建和脚本文件**:如`.gitignore`(忽略某些文件在版本控制中)、`package.json`(定义项目依赖和构建命令)等。 为了实际操作这个项目,你...

Global site tag (gtag.js) - Google Analytics