初识webpack
根据官网介绍,
webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 bundles,它们均为静态资源,用于展示你的内容。
这么说可能有点抽象,用过vue
的同学可以这样想,vue
框架中组件是以.vue
结尾的,但是浏览器并不认识这类文件,需要把.vue
文件译成浏览器能识别的代码,这就需要webpack
打包工具了。webpack
中有一个重要的概念,即万物皆模块,前端的所有资源文件(js/json/css/img/less…)都会作为模块处理。
五个核心概念
- Entry:入口文件,指示webpack应该使用哪个模块来作为构建其内部依赖图的开始
- Output:告诉webpack在哪里输出它所创建的bundles,以及如何命名这些文件,默认值为
./dist/
- Loader:让webpack能处理那些非
js
和json
文件 - Plugins:可以用于执行范围更广的任务,插件的范围包括从打包优化到压缩,一直到重新定义环境中的变量等
- Mode:模式,有生产模式
production
和开发模式development
准备
在开始学习webpack
之前,需要:
- 安装
node.js
。webpack
是用node.js
写的,使用时需要node
环境,安装后自带npm
包管理器 - 使用
npm init -y
初始化工程,会生成一个package.json
文件 - 开发环境下下载依赖包
npm i webpack webpack-cli -D
- 点开
package.json
文件,可以看到下面一行:
main
对应的index.js
表示webpack
在打包时默认以src
目录下的index.js
为入口文件,因此需要在根目录下创建src
目录,再创建index.js
文件:
在index.js
中添加以下代码:
function add(a, b) {
console.log(a + b)
}
add(1, 2)
在命令行项目根目录下输入npx webpack
进行打包操作,会出现dist
目录,其中的main.js
就是打包完成的输出文件
可见代码已经被处理过。
- 在
src
目录下再创建a.js
文件,以commonJS
规范写入以下代码:
const say = function() {
console.log('say')
}
module.exports = {
say
}
在index.js
中引入a.js
文件:
再输入npx webpack
打包一次,查看main.js
:
可见代码被压缩,即打包模式默认是生产环境,也就是mode
取值为production
。mode
的另一个取值为development
,即将打包模式指定为开发环境,开发环境下代码不会被压缩。
- 创建
index.html
文件,引入main.js
,打开浏览器,打包后的代码可以直接在浏览器中运行:
如果直接引入带有commonJS
语法规范的index.js
,浏览器会解析不了,报错:
将commonJS
规范换成ESM
规范,同样会报错:
说明使用webpack
可以将高级的js
语法翻译成浏览器认识的代码。
本篇笔记是看了B站up主“左耳击水兽”的讲解视频记录下来,感兴趣的同学可以直接看他视频哦。