对webpack的初步研究1
一、概念:
1、webpack的核心是用于现代JavaScript应用程序的静态模块捆绑器。当webpack处理您的应用程序时,它会在内部构建一个依赖关系图,它映射您的项目所需的每个模块并生成一个或多个包。
- Entry
- Output
- Loaders
- Plugins
二
- Entry
一个入口点指示哪个模块的WebPack应该使用开始建立了其内部的依赖关系图。webpack将确定入口点所依赖的其他模块和库(直接和间接)。
默认情况下,其值为./src/index.js,但您可以通过在webpack配置中配置entry属性来指定不同的(或多个入口点)。例如:
webpack.config.js
module.exports = {
entry: './path/to/my/entry/file.js'
};
Output
该输出属性告诉的WebPack哪里发出束它创建以及如何命名这些文件。它默认./dist/main.js为主输出文件和./dist任何其他生成文件的文件夹。
您可以通过output在配置中指定字段来配置此过程的这一部分:
webpack.config.js
const path = require('path');
module.exports = {
entry: './path/to/my/entry/file.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'my-first-webpack.bundle.js'
}
};
Loaders
开箱即用,webpack只能理解JavaScript文件。装载机允许的WebPack处理其他类型的文件,并将其转换为有效的模块,可以通过您的应用程序消耗并添加到依赖关系图。
请注意,import任何类型的模块(例如.css文件)的功能都是特定于webpack的功能,其他捆绑器或任务运行器可能不支持。我们认为这种语言的扩展是有保证的,因为它允许开发人员构建更准确的依赖图。
在较高级别,加载器在您的webpack配置中有两个属性:
- 该
test属性标识应转换的文件。 - 该
use属性指示应使用哪个加载程序进行转换。
webpack.config.js
const path = require('path');
module.exports = {
output: {
filename: 'my-first-webpack.bundle.js'
},
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
}
};
上面的配置rules为具有两个必需属性的单个模块定义了一个属性:test和use。这告诉webpack的编译器如下:
“嘿webpack编译器,当你遇到解析为
require()/importstatement语句中'.txt'文件的路径时,在将它添加到bundle之前使用它raw-loader来转换它。”
重要的是要记住,在webpack配置中定义规则时,您要在其下定义规则,module.rules而不是rules。为了您的利益,webpack会在不正确的情况下发出警告。
在装载程序部分中包含装载程序时,可以检查进一步的自定义。
Plugins
虽然加载器用于转换某些类型的模块,但可以利用插件执行更广泛的任务,如捆绑优化,资产管理和环境变量注入。
查看插件界面以及如何使用它来扩展webpacks功能。
要使用插件,您需要将require()其添加到plugins数组中。大多数插件都可以通过选项进行自定义。由于您可以在配置中多次使用插件用于不同目的,因此您需要通过使用new运算符调用它来创建它的实例。
webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm
const webpack = require('webpack'); //to access built-in plugins
module.exports = {
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
},
plugins: [
new HtmlWebpackPlugin({template: './src/index.html'})
]
};
Mode
By setting the mode parameter to either development, production or none, you can enable webpack's built-in optimizations that correspond to each environment. The default value is production.
module.exports = {
mode: 'production'
};
Browser Compatibility
webpack支持所有符合ES5标准的浏览器(不支持IE8及以下版本)。的WebPack需要Promise的import()和require.ensure()。如果要支持旧版浏览器,则需要在使用这些表达式之前加载polyfill。
、
对webpack的初步研究1的更多相关文章
- 对webpack的初步研究8
模块 编辑文档 在模块化编程中,开发人员将程序分解为称为模块的离散功能块. 每个模块的表面积小于完整程序,使验证,调试和测试变得微不足道.编写良好的模块提供了可靠的抽象和封装边界,因此每个模块在整个应 ...
- 对webpack的初步研究7
Configuration 您可能已经注意到很少有webpack配置看起来完全相同.这是因为webpack的配置文件是导出对象的JavaScript文件.然后,webpack根据其定义的属性处理此对象 ...
- 对webpack的初步研究6
Plugins 插件是webpack 的支柱.webpack本身构建在您在webpack配置中使用的相同插件系统上! 它们也是这样做的目的别的,一个装载机无法做到的. Anatomy webpack ...
- 对webpack的初步研究5
Loaders 加载器是应用于模块源代码的转换.它们允许您在处理import或“加载” 文件时预处理文件.因此,加载器有点像其他构建工具中的“任务”,并提供了处理前端构建步骤的强大方法.加载器可以将文 ...
- 对webpack的初步研究4
Mode string module.exports = { mode: 'production' }; webpack --mode=production The following string ...
- 对webpack的初步研究3
Output配置output配置选项告诉webpack如何将编译后的文件写入磁盘.请注意,虽然可以有多个entry点,但只output指定了一个配置. A filename to use for th ...
- 对webpack的初步研究2
Entry Points 如“ 入门”中所述,有多种方法可以entry在webpack配置中定义属性.我们会告诉你,你的方法可以配置的entry属性,除了解释为什么它可能对你有用 Single Ent ...
- iOS多线程的初步研究(六)
iOS多线程的初步研究(六) iOS平台提供更高级的并发(异步)调用接口,让你可以集中精力去设计需完成的任务代码,避免去写与程序逻辑无关的线程生成.运行等管理代码.当然实质上是这些接口隐含生成线程和管 ...
- iOS多线程的初步研究3
iOS多线程的初步研究(三) 弄清楚NSRunLoop确实需要花时间,这个类的概念和模式似乎是Apple的平台独有(iOS+MacOSX),很难彻底搞懂(iOS没开源,呜呜). 官网的解释是说run ...
随机推荐
- GTID复制模式切换与传统主从复制间切换
GTID复制模式切换到传统主从复制主从复制环境:主库:10.18.10.11从库:10.18.10.12MySQL5.7.22 切换之前查看下主从gitd_mode参数值主服务器:gtid_mode值 ...
- 【tensorflow使用笔记二】:tensorflow中input_data.py代码有问题的解决方法
由于input_data网页打不开,因此从博客找到代码copy: https://blog.csdn.net/weixin_43159628/article/details/83241345 将代码放 ...
- 杂项-职位-DBA:DBA
ylbtech-杂项-职位-DBA:DBA 数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第5节 线程池_1_线程池的概念和原理
线程的底层原理 集合有很多种,线程池的集合用LinkedList最好
- Navicat Premium for Mac 非官方版不能启动的解决方案
Ps:这篇有点杂记的感觉,就说点废话也没什么影响.废话主要有两点: 1.建议读者也开始写博客,为什么呢?其实我也没有这种写作的习惯,我最开始写博客的时候,感觉我写的东西网上都有,需要的时候找一下肯定能 ...
- 【BASIS系列】SAP 批量锁住用户和TCODE的方法
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BASIS系列]SAP 批量锁住用户和TCOD ...
- 【MM系列】SAP MM中的委外加工与信息记录
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM中的委外加工与信息记录 ...
- 应用安全-CTF-格式串漏洞
主要影响c库中print家族函数 - > printf,sprintf,fprintf等 利用: SIP请求URI中格式串
- 绕过安全狗Apache4.0版本
参数拦截:script.空格and空格.空格or空格.union select.user() 绕过: and.order by绕过: 内联注释 union select绕过: union%23%0a ...
- FormData模拟表单上传图片
[node]---multer模块实现图片上传---FORMDATA 1.安装muterl第三方模块 cnpm install multer --save 2.使用 multer在解析完成后,会向 ...