Webpack学习笔记(2)

1.什么是loader?

上图是Webpack打包简易流程,webpack本身只能理解js和json这样的文件,loader可以让webpack解析其他类型文件,并且将文件转换成模块供我们使用。

test识别出那些文件被转换,use定义转换时使用哪个loader转换

上图意思为:若要解析一个.txt后缀的文件时,在对这个文件进行打包之前,使用raw-loader转换一下。

2.加载css文件

使用css-loader,style-loader。style-loder是将样式放在head的style标签里

index.js中按照下图引用:

预处理工具sass,less等文件。

解析.less文件安装less-loader,less。

index.js中按照下图导入:

style.less:

3.抽离和压缩css

把style中的代码从html文件抽离出来为一个单独文件,安装插件 mini-css-extract-plugin。

mini-css-extract-plugin用于将 CSS 从 JavaScript 文件中分离出来的 Webpack 插件。所以不使用style-loader了。

引入插件后可自定义生成css文件位置和文件名:

最后就会新建一个styles下存放一个随机哈希数.css的文件存放样式,并且会在index.html中通过上述插件加入link引入样式。

发现css文件没有压缩,压缩可以提高效率,所以安装插件css-minimizer-webpack-plugin.

配置这个插件使用的是optimization配置,同时mode需要修改为production:

原因:

  • 生产环境通常需要更小的文件来优化加载速度。
  • 开发环境中通常不需要压缩,因为压缩会使得调试更加困难。

设置后style文件夹下的css变为:

4.加载images图像

在css内部加载图片资源。

在style.css中:

可以看到style文件下的css正确拿到了图片:

5.加载iconfonts图标

在css内部加载图标字体资源。asset Moudle资源模块来实现。

webpack.config.js中配置:

style.css:

index.js中使用到页面中:

页面中显示:

6.加载数据

其他数据如xml,csv,tsv等资源,使用loader加载,分别是xml-loader,csv-loader,安装后修改配置。

webpack.config.js中配置:

在index.js中引入并打印:

控制台可以看到,xml文件转换为对象输出,csv文件转换为数组:

7.自定义parser模块

将src文件下的toml,yaml,json5的文件导入。

yaml:有key,有value,靠缩进完成子项设置;

toml:通过key=value的格式,子项使用【】;

json5:可以加注释,key不用加引号,值可以用单引号,也可以使用转义字符;

安装:npm install yaml toml json5 -D

webpack.config.js中配置:

index.js中使用一下:

控制台中正确打印:

tips

Webpack 提供了三种模式:

  • development:启用开发环境的配置,专注于提高构建速度和调试体验。
  • production:启用生产环境的配置,专注于优化性能和输出更小的文件。
  • none:不启用任何默认配置。

当你将 mode 设置为 production 时,Webpack 会自动启用以下优化:

  • 代码压缩 :JavaScript 文件会被 TerserWebpackPlugin 插件压缩。
  • 文件优化:CSS 文件和其他资源文件也会被自动优化。
  • Tree Shaking:移除未使用的代码。
  • 缓存优化:输出文件会带上哈希值,以便更好地利用浏览器缓存。
相关推荐
OopspoO几秒前
qcow2镜像大小压缩
学习·性能优化
A懿轩A24 分钟前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
居居飒33 分钟前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin
kkflash31 小时前
提升专业素养的实用指南
学习·职场和发展
Hejjon1 小时前
SpringBoot 整合 SQLite 数据库
笔记
1 9 J2 小时前
数据结构 C/C++(实验五:图)
c语言·数据结构·c++·学习·算法
6.943 小时前
Scala——身份证号码查询籍贯
学习·scala
爱吃西瓜的小菜鸡3 小时前
【C语言】矩阵乘法
c语言·学习·算法
西洼工作室4 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式
Domain-zhuo4 小时前
如何利用webpack来优化前端性能?
前端·webpack·前端框架·node.js·ecmascript