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:移除未使用的代码。
  • 缓存优化:输出文件会带上哈希值,以便更好地利用浏览器缓存。
相关推荐
Fuyo_111933 分钟前
C++ 内存管理
c++·笔记
柳鲲鹏1 小时前
李善兰和牛顿,谁剽窃谁的运动三定律
笔记
aacd27191 小时前
C语言之预处理详解ヾ(•ω•`)o
c语言·学习
笨鸟先飞的橘猫1 小时前
广播风暴架构优化方案思考
学习·架构
zhangrelay2 小时前
三分钟云课实践速通--大学物理--python 版
linux·开发语言·python·学习·ubuntu·lubuntu
炽烈小老头2 小时前
【每日天学习一点算法 2026/04/27】缺失的第一个正数
学习·算法
handler012 小时前
Linux 进程探索:从 PCB 管理到 fork() 的写时拷贝
linux·c语言·c++·笔记·学习
QiZhang | UESTC3 小时前
从基础 RoPE 到 YaRN:源码学习路线揭秘
pytorch·深度学习·学习
xuhaoyu_cpp_java3 小时前
MyBatis学习(五)
经验分享·笔记·学习·mybatis
ECT-OS-JiuHuaShan3 小时前
整体论体系定理,全球开放,无法绕过
人工智能·科技·学习·算法·生活