文档
webpack的官方文档地址:https://webpack.js.org
webpack的中文文档地址:https://webpack.docschina.org
安装
打开命令行界面,输入以下命令来安装
1 | npm install webpack -g |
建议也安装webpack-cli
1 | npm install webpack-cli -g |
安装完成之后我们就可以使用webpack
命令来进行一系列的操作了,例如输入webpack -h
可以查看每个命令的帮助,输入webpack -v
可以查看版本号
webpack模块化打包尝鲜
webpack可以使用cli命令行来进行打包,也可以使用配置文件的方式来打包
命令行
1 | webpack <entry> [<entry>] -o <output> |
配置文件
默认配置文件名为webpack.config.js
1 | module.exports = { |
mode
是配置相应模式的内置优化 详情点击entry
是配置相应的入口,指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始 详情点击output
是配置相应的出口,可以控制 webpack 如何向硬盘写入编译文件 详情点击
简单示例
首先新建我们的入口文件app.js
,然后新建一个模块文件sum.js
接下来在sum.js
中写入如下内容
1 | function sum(a, b) { |
然后再在app.js
中引入该模块
1 | // 使用 import ... from 引入模块 |
这时候虽然代码已经写好了,但是并不能直接被浏览器解析运行,需要通过webpack打包成能别浏览器解析运行的代码,为了让webpack打包我们的代码,我们需要新建一个webpack.config.js
配置文件,写入如下内容
1 | module.exports = { |
然后打开命令行界面输入webpack
命令即可打包成功,成功后会输出一个名为app.bundle.js
的文件
为了看到输出结果,我们需要再新建一个index.html
,并引入app.bundle.js
,
用浏览器打开index.html
,然后打开控制台,如果看到输出了sum(1, 2) = 3
就代表成功了
模块化规范
在上面那个简单示例
中,使用的是es module
模块化规范,除此之外还有很多,例如CommonJS
、CMD
、AMD
等,这里就不一一介绍了,只介绍几个流行的
ESM (EcmaScript Module)
- 一个文件为一个模块
- 通过
export
暴露模块接口 - 通过
import
引入模块 - 是同步执行的
CommonJS
- 一个文件为一个模块
- 通过
module.exports
暴露模块接口 - 通过
require
引入模块 - 是同步执行的
CMD (Common Module Definition)
- 一个文件为一个模块
- 使用
define
来定义一个模块 - 使用
require
来加载一个模块 - 尽可能懒执行
其实CMD与AMD规范并没什么本质的区别,区别在于他们对依赖模块的执行时机处理不同。虽然两者都是异步加载模块,但是AMD依赖前置,一次性将所有的依赖都加载完了再使用;而CMD是就近依赖,需要使用这个依赖模块时,再加载进来使用,也就是尽可能懒加载。