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:移除未使用的代码。
  • 缓存优化:输出文件会带上哈希值,以便更好地利用浏览器缓存。
相关推荐
一隅论数智5 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
XiHongShi20165 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
爱吃苹果的日记本5 天前
离散数学第六课
学习·离散数学
AI职业加油站5 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
深圳老胡5 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
旖旎夜光5 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
奇思妙想聪明勤奋的小羊5 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
Because_of_Her15 天前
并查集-听课笔记
笔记·算法·并查集
霍霍的袁5 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio