错误之处,欢迎指正,持续更新中。
1. 如何避免webpack
打包静态资源失败?
有时候在npm run build
之后,会发现静态资源js、css、图片等文件都报了404
的错误。
- 在不进行
publicPath
配置的时候的情况,生成的index.html
文件中:
<link href="/css/app.bc1355b8.css">
/
代表的是根目录,也就是在根目录下面寻找css
文件夹,路径出现错误了。
-
publicPath
配置为./
的时候,生成的index.html文件中:
<link href="./css/app.bc1355b8.css">
./
代表的是当前目录,我们先看一下dist
文件夹中的结构:
此时在
index.html
中的./
就代表着要在dist
文件夹下搜索css/app.bc1355b8.css
,路径正确无误。
2. 为什么要用webpack
打包项目?
当开发时模块细分过多时,会有较多的js
文件,浏览器请求的js
文件过多,会影响效率。webpack
是一款构建工具,让开发者在开发时,只关注代码层面的问题,然后利用这个工具将开发时编写的代码转化为运行时所期望的。
3. webpack
打包的时候如何处理css
文件?
使用css-loader
将css
代码转换为js
代码,因为webpack
默认只解析javascript
代码;再使用style-loader
将css
样式放到style
标签中。
4. 简述webpack
编译过程。
- 初始化
webpack
将cli
参数、配置文件、默认配置进行融合,形成最终的一个配置对象。 - 编译
- 创建
chunk
chunk
是webpack
在构建中产生的一个概念,译为块,它表示通过某个入口找到的所有依赖的文件的总称。 - 构建依赖模块
从入口模块开始,进行抽象语法树分析,然后从模块的内容中找出依赖关系,并把转换后的代码存入chunk
中。最终形成多个模块的表格:
./src/index.js 转换后的内容
./src/a.js 转换后的内容
-
chunk assets
将chunk
表格中的代码整合,组成新的表格:
./dist/main.js 整合后的内容
- 合并
合并所有chunk assets
,形成总的资源列表。
- 输出
根据总的资源列表,生成相应的文件。这一步,是指一个chunk
生成对应的一个文件,也就是入口对应出口。