一、Webpack 基本介绍
Webpack
是一个强大的静态资源打包工具。它以一个或多个文件作为入口,对整个项目的所有文件进行编译和组合,最终输出一个或多个文件。这些输出的文件是经过编译的,可以在浏览器端顺利运行,我们将 Webpack
输出的文件称为 bundle
。这种打包方式能有效处理项目中的各种依赖关系和模块语法,让前端项目在浏览器环境中更好地运行。
二、代码演示
/ (项目根目录)
├── main.js # 源代码中的主JavaScript文件
├── js/ # JavaScript源文件目录
│ └── hello.js
├── dist/ # 构建后的文件目录
│ └── main.js # 构建或编译后的主JavaScript文件
├── index.html # HTML文件(项目入口点)
└── package.json # 项目依赖和配置文件
- main.js
import { hello } from './js/hello';
hello();
这里我们在main.js
中导入了hello
函数,展示了 ES6 模块的导入语法。这种语法在现代 JavaScript 开发中很常见,但浏览器并不完全支持。
- js/hello.js
export function hello() {
console.log('hello')
}
hello.js
文件定义了hello
函数,并通过export
关键字将其暴露出来,以便其他模块使用。
- index.html
<!DOCTYPE html>
<html>
<head>
<!--<script src="./main.js"></script>-->
<script src="./dist/main.js"></script>
</head>
<body></body>
</html>
在index.html
中,我们可以看到有两种引入脚本的方式,这里要注意直接引入main.js
会出现问题,原因后续会解释。
- package.json
{
"name": "webpack-test",
"version": "1.0.0",
"description": "",
"scripts": {
"build": "npx webpack ./main.js --mode=production",
"build:dev": "npx webpack ./main.js --mode=development",
"start": "echo ok"
},
"dependencies": {
"webpack": "^5.96.1",
"webpack-cli": "^5.1.4"
}
}
package.json
文件定义了项目的基本信息、脚本命令和依赖。其中build
和build:dev
脚本用于调用 Webpack 进行不同模式下的构建。
三、webpack使用
-
首先,在项目中安装 webpack 相关依赖。在项目根目录下打开终端,执行
npm install
命令。这一步会根据package.json
中的配置安装 Webpack 及其相关的命令行工具。 -
然后,在项目目录下分别执行命令
npm run build
和npm run build:dev
。npm run build
用于生产环境构建,它会对main.js
进行优化和编译,生成适合生产环境的dist/main.js
文件。npm run build:dev
则用于开发环境,生成的代码更便于调试。这些命令会处理main.js
中的模块语法,将其编译成浏览器可以识别和运行的 JavaScript 代码。 -
在
index.html
中引入相关脚本文件。如前文所述,如果直接引入main.js
会无法运行,因为它包含了浏览器无法直接处理的模块语法。而引入dist/main.js
则可以正常运行,这是因为 Webpack 已经将这些语法转换为了浏览器兼容的形式。 -
最后,我们可以观察
dist/main.js
的内容,会发现它与原始的main.js
有很大不同,这就是 Webpack 打包和编译的结果。
四、总结
以上展示了webpack
最基本的功能:将项目中的脚本文件,打包成浏览器可以直接运行的文件。