原创翻译,转载请注明出处。
原文地址:https://webpack.js.org/concepts/loaders/
加载器是应用于你的应用里源代码,实现转换。它们是函数(运行于Node.js),用源文件作为参数,生成新文件。
例子
例如,使用加载器来告诉webpack加载CSS文件,或者把TypeScript转换为Javascript。
首先,安装对应的加载器:
npm install --save-dev css-loader npm install --save-dev ts-loader
然后,在webpack.config.js里进行配置,对每一个.css文件使用css-loader,类似的对.ts文件使用ts-loader。
module.exports ={ module:{ rules:[ {test:/\.css$/, use: 'css-loader'}, {test:/\.ts$/, use: 'ts-loader'} ] } };
注意,根据配置选项的定义,下面的方式定义了同样的加载器用法:
{test:/\.css$/, loader:'css-loader'} // or equivalently {test:/\.css$/, use:'css-loader'} // or equivalently {test:/\.css$/, use:{ loader:'css-loader', options:{} }}
配置
在你的应用里使用加载器有三种方式:
- 通过配置
- 在require声明里详述
- 通过CLI
通过webpack.config.js
module.rules允许你在webpack配置里指定多个加载器。这是一个简洁的显示加载器的方法,并且可以帮助你维护整洁的代码。它也提供了每一个加载器的整体概述。
module:{ rules:[ { test:/\.css$/, use:[ { loader: 'style-loader'}, { loader: 'css-loader', options:{ modules:true } } ] } ] }
通过require
可以通过require声明来制定加载器(或者define, require.ensuse等等)。用!(叹号)分割出加载器,每一个部分都是相对于当前目录被解析。
require('style-loader!css-loader?modules!./styles.css');
规则整体加前缀!(叹号),就可以覆盖在配置里定义的任何加载器。
选项可以通过查询参数来传递,就像在互联网上(?key=value&foo=bar
)。还可以使用json对象(?{"key":"value","foo":"bar"})。
通过CLI
还有一种选择,你可以通过CLI使用加载器。
webpack --module-bind jade-loader --module-bind 'css=style-loader!css-loader'
对.jade文件使用jade-loader,对.css文件使用style-loader和css-loader.
加载器的特性
- 加载器可以链式使用,他们被适用于对应源代码的管道里。按照先后顺序来编译一个加载器链。加载器链里第一个加载器返回一个值给下一个加载器。Webpack期待最后一个加载器返回JavaScript。
- 加载器可以是同步的,也可以是异步的。
- 加载器运行在Node.js中。所以Node.js里可以实现的加载器都可以实现。
- 加载器接受查询参数,这可以被用作想加载器传递配置内容。
- 加载器还可以使用options对象来配置。
- 标准模块可以通过package.json的loader字段导出一个除了标准main之外的加载器。
- 插件可以给加载器提供更多特性。
- 加载器可以生成额外的任意文件。
加载器通过预处理函数(加载器)可以在JavaScript生态系统中贡献更多。用户现在可以更灵活的加入诸如压缩,大包,翻译等细分处理。
解析加载器
加载器依从标准的模块解析。多数情况下你讲从模块路径(想想npm install, node_modules)里得到加载器。
怎样去写一个加载器?一个加载器模块会输出一个函数,并且在Node.js下完成,兼容JavaScript。通常情况下用npm管理加载器,但是也可以在你的应用里以文件形式实现加载器。
按照惯例,加载器通常被命名为xxx-loader,xxx是上下文名。例如,json-loader。
加载器的命名约定和优先查找顺序被定义在webpack配置API resolveLoader.moduleTemplates里。
-- End --
相关推荐
Webpack的核心概念包括入口(entry)、输出(output)、模块加载器(loaders)和插件(plugins)。在“神庙逃亡”的开发中,Webpack可能被用来处理Vue组件、JavaScript代码、样式文件和静态资源。例如,使用Babel loader将...
### webpack 官方中文文档知识点总结 #### 一、webpack简介 webpack是一个现代JavaScript应用程序的静态模块打包工具。它的核心功能在于构建一个依赖图(dependency graph),该图映射出项目所需的所有模块,并最终...
- 作为webpack的加载器,处理Vue组件文件,将模板、脚本和样式转换为可执行的JavaScript模块。 9. **key的作用**: - 在Vue的Diff算法中,`key`用于唯一标识每个节点,提高DOM更新效率。 10. **axios**: - 一...
Webpack的核心概念包括入口(entry)、输出(output)、加载器(loaders)和插件(plugins),其中插件用于扩展Webpack的功能,如jsdoc-webpack-plugin正是这样的一个插件。 **jsdoc-webpack-plugin** 是Webpack生态中的一...
根据给定文件的信息,本文将围绕Webpack 3的深入解析及其与...虽然本文档提到的是2018年的Webpack 3版本,但其中介绍的基本概念和技术仍然具有很高的参考价值,对于理解和学习Webpack 4及更高版本也有很好的铺垫作用。
### Webpack2 中文文档概览 #### Webpack 概述 Webpack 是一款现代前端项目的模块打包工具。它能够将项目中的多个独立模块按照依赖关系和规则打包成适合生产环境部署的静态资源,并且支持按需加载的代码分割功能。...
Webpack 是一个流行的模块打包工具,尤其在前端开发中被广泛使用。这个"webpackdemo只打包js、css"的项目是一个基础示例,演示了如何使用...对于更复杂的场景,建议查阅Webpack的官方文档以获取详细信息和最佳实践。
6. **学习与进阶**: 为了更深入地使用 "ceri-loader",开发者需要了解 Webpack 的基本概念、加载器和插件的工作原理,以及 Ceri 框架的核心概念。查阅官方文档、示例代码和社区讨论是学习的好途径。 7. **调试与...
4. **加载器(Loaders)**:Webpack 默认只能处理JavaScript模块,加载器则用于转换其他类型的文件,如`.css`、`.less`、`.png`等,使其能被Webpack处理。 5. **插件(Plugins)**:Webpack 插件可以执行更复杂的...
3. **事件驱动编程**:前端库常用于响应用户交互,因此理解DOM事件和事件监听器的概念很重要。ROSID Handler可能包含事件处理函数,用于在特定事件触发时执行相应的操作。 4. **Ajax和Fetch API**:ROSID Handler...
- **使用社区资源**:查阅Webpack文档、Stack Overflow、GitHub上的Issue等获取解决方案。 4. **Webpack工作流程**: - 分析入口点,找出所有依赖。 - 使用加载器处理不同类型的模块,如Babel处理ES6+语法。 - ...
- **自动化工作流**:利用Webpack插件和加载器(Loader)来实现自动化任务,比如代码压缩、图片优化等。 - **热模块替换(Hot Module Replacement, HMR)**:学习如何在不刷新页面的情况下实时更新应用中的模块。 #### ...
Webpack 的核心概念包括: 1. **入口(Entry)**:定义了应用的起点,Webpack 从这里开始构建模块图。 2. **输出(Output)**:指定打包后的文件路径和命名规则。 3. **加载器(Loaders)**:用于转换不同类型的模块...
这个压缩包"webpack-doc, 个人业余 webpack 1.x 文档翻译(非官方)(未完成).zip"包含了一个个人爱好者对Webpack 1.x版本的非官方文档翻译项目,尽管未完成,但依然能为学习和理解Webpack提供一些帮助。...
然后,在Webpack配置文件中,需要设置相应的加载器(如`webpack-loader`)来处理Three.js的模块。这样,Three.js的模块就能被Webpack正确解析并打包到最终的产出文件中。在JavaScript代码中,可以按需导入Three.js的...
3. **Vue Router**:Vue官方的路由管理器,实现SPA(单页应用)的页面切换和导航。 4. **Webpack**:模块打包工具,用于处理和打包项目中的JavaScript、CSS、图片等资源。 5. **Babel**:转换ES6+语法的工具,确保...
- **Loaders**:加载器,用于转换不同类型的模块,如将CSS文件转换为能在浏览器运行的格式。 - **Plugins**:插件,扩展Webpack功能,执行更复杂的任务,如自动添加版权信息、压缩代码等。 - **Module Resolution...
2. **加载器(Loaders)**:Webpack通过加载器将非JavaScript文件(如CSS、模板、图片等)转换为可被JavaScript处理的模块。 3. **插件(Plugins)**:插件可以扩展Webpack的功能,如优化、压缩代码、自动部署等。 4...
在 Webpack 2.2 中,核心概念包括入口(Entry)、输出(Output)、模块(Module)、加载器(Loaders)和插件(Plugins)。入口是构建过程的起点,定义了应用的主文件或模块。输出则指定了打包后的文件路径和命名规则...