原创翻译,转载请注明出处。
原文地址: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 --
相关推荐
【压缩包子文件的文件名称列表】中的`README.MD`通常包含了项目的基本信息、使用指南、安装步骤等,是理解项目的重要文档。而`node_modules`是Node.js项目的依赖库目录,其中包含`node-sass`模块以及其他可能的依赖...
"PyPI 官网下载 | rucio-webui-1.14.7.tar.gz" 这个标题表明我们正在讨论一个从Python Package Index (PyPI) 官网上获取的软件包,名为 "rucio-webui" 的版本1.14.7。PyPI是Python开发者发布和分享他们编写的软件库...
8. **文档**:可能包含`.md`格式的文档,介绍项目架构、使用方法、开发指南等。 9. **示例**:可能有示例代码或示例应用,展示如何在实际场景中使用Laravel Jos的功能。 10. **其他**:如`package.json`(如果项目...
- [Webpack 官方文档](https://webpack.js.org/) - [Webpack 中文指南](https://zhcn.webpack.js.org/) #### 六、总结 Webpack 作为一款强大的前端打包工具,在现代前端开发中扮演着重要的角色。通过合理配置和...
1. **Laravel 文档**:官方文档是学习 Laravel 的最佳资源,涵盖了从入门到高级的全面教程。 2. **社区与资源**:Laracasts 提供丰富的视频教程,Stack Overflow 和 Laravel.io 社区可以解决开发中的疑问。 3. **...
- **错误排查**: 查阅Webpack官方文档或社区资源寻找解决方案。 - **优化策略**: 如代码拆分、缓存机制等提升构建速度。 #### 三、Webpack进阶 - **模块化标准**: - **CommonJS**: 节点环境的模块化标准。 - *...
6. **依赖库**:可能会有一个 `package.json` 文件,列出了项目依赖的npm模块,以及它们的版本信息。 通过研究这个源码,开发者可以了解到以下知识点: - **微信小程序开发规范**:学习微信小程序的文件结构、API...
1. `bin` 目录:包含了可执行文件,如 `node.exe`(Node.js 解释器)和 `npm.cmd`(Node Package Manager,用于管理 Node.js 应用的依赖包)。 2. `include` 目录:包含了 Node.js 的头文件,供 C++ 扩展模块使用。 ...
8. **yarn.lock**: Yarn是另一种JavaScript包管理器,它的lock文件确保所有依赖包版本的一致性,避免因为不同时间安装包导致的依赖混乱。 9. **README.md**: 这是一个Markdown格式的文件,通常用来介绍项目的基本...
- **官方文档**:[Webpack官网](https://webpack.js.org/) - **中文指南**:[Webpack中文指南](https://zhcn.webpack.js.org/) - **社区资源**:GitHub、Stack Overflow等社区讨论。 ### 结语 Webpack作为一个强大...
2. **文档**:一般会包含用户指南、API参考、开发者手册等,帮助用户快速上手并了解Pluto的工作原理和最佳实践。 3. **示例应用**:为了展示Pluto的功能和用法,可能会提供一些预构建的应用示例,用户可以通过这些...
此文件定义了 Webpack 如何处理项目中的依赖和输出结果。 5. `.eslintrc.js` - ESLint 是一个代码质量工具,用于检测并修复代码中的潜在问题。这个文件是 ESLint 的配置文件,指定了代码风格规则和错误检查。 6. `...
3. **示例或文档**:可能包括HTML文件,展示如何在实际项目中使用这些组件,以及README文件,提供安装和配置指南。 4. **图表现象**:SVG图标或其他图形资源,用于组件的视觉元素。 5. **测试文件**: Jest、Mocha或...
1. **README.md**:这是一个Markdown格式的文件,通常用于介绍项目的基本信息,包括项目的目的、如何安装和运行、贡献指南等。 2. **LICENSE**:此文件会规定该项目的开源许可协议,如MIT、Apache 2.0或GPL等,定义...
4. **依赖管理**:查看package.json(Node.js项目)、requirements.txt(Python项目)或build.gradle(Java项目)等文件,可以获取项目所依赖的外部库和版本信息。 5. **数据库集成**:如果项目涉及到数据存储,...
5. `README.md`:项目说明文档,可能会包含安装、使用、贡献指南等内容。 在开发和使用这个基于 Element 的组件库时,你可能需要了解以下知识点: - Vue CLI:Vue.js 的命令行工具,用于快速搭建项目环境,构建和...
- 项目可能使用Gradle、Maven(Java)、Webpack或Rollup(JavaScript)等构建工具,进行代码编译、依赖管理、打包等工作。 - 配置文件如`build.gradle`或`package.json`会提供编译和打包的细节。 8. **文档**: -...
7. **README.md**: 项目说明文档,可能包含项目简介、安装和运行指南、开发说明等内容。 8. **webpack.config.js**: Webpack 配置文件,用于处理项目打包构建过程中的各种设置,如模块加载、代码分割、热重载等。 ...
6. **文档**:`.md`文件可能包含项目说明、API参考或开发者指南。 7. **构建和脚本文件**:如`.gitignore`(忽略某些文件在版本控制中)、`package.json`(定义项目依赖和构建命令)等。 为了实际操作这个项目,你...