webpack4系列教程,如何更优美的处理html中的图片?
发布于 作者:苏南大叔 来源:程序如此灵动~

大家好,苏南大叔在本文中,是来做另外一个webpack@4
系列教程的。主题依然是处理html
中的图片,为什么和上一篇文章的主题类似呢?因为苏南大叔觉得上边那篇文章的loader
写的不是太好。虽然符合文章的要求,但是总是觉得不放心。所以,继续安利另外一个loader
。也就是本文的主角:html-loader
。

本文测试环境:win10
、node@14.2.0
、npm@6.14.4
、webpack@4.43.0
、url-loader@4.1.0
、html-loader@1.1.0
。本文的主要目的,还是使用html-loader
处理html
中的图片,但是存在着一些不同的地方,到底是什么原因,让苏南大叔再写这个处理图片的话题呢?
特殊的图片属性
在html
中,大部分的图片,不是以css
的背景图出现,就是以img
的src
属性出现。这些是最常见的情况。但是也有特别的属性出现的图片,比如:video
标签的poster
属性,其实也是一个图片。这个属性用html-withimg-loader
来处理的话,就是完全不能处理的。所以,这里,苏南大叔介绍的是这个更智能的loader
:html-loader
。

html-loader
的优势就是:可以识别那些非常见场合的图片,并进行转换。在其github
的主页上,有更多支持的特殊属性。链接见这里:
html-loader
支持的特殊属性有:
其实可以看到,这些特殊属性,也不一定是图片,可以是其他的文件,比如:mp4
。但是,这是后话。
安装命令如下:
配置项目
官方推荐的配置项目是这样的:webpack.config.js
:
但是,苏南大叔是配合html-webpack-plugin
使用的,所以,配置是这么写的:webpack.config.js
:
重点就是:html-webpack-plugin
的配置中,template
属性中,增加了html-loader!
字样。

效果展示
因为苏南大叔演示的是video
的poster
属性图片,所以,处理前的html
文件代码如下:
经过html-loader!
处理后的html
,代码如下:

基本上符合要求,测试通过。另外,值得一提的是:html-loader
,不光处理img
,也处理其他文件,例如video
的src
属性,里面的.mp4
文件。记得配置.mp4
文件关联到url-loader
即可,html-loader
会处理后续的事情。
存在的问题
- 这个
html-loader
不允许src
空属性,否则会报错... 真心有点多管闲事了。 - 这个
html-loader
没有html-withimg-loader
的include
能力。 - 这里有个似乎不可调和的矛盾,
html-loader
也和html-plugin
冲突,使用了html-loader
之后,html-plugin
就失去了识别<%= %>
的能力。
相关链接
- https://github.com/webpack-contrib/html-loader
- https://newsn.net/say/webpack-plugin-html.html
- https://newsn.net/say/webpack-start.html
总结
html-loader
支持的属性多,但是也并不是完美无缺的。html-withimg-loader
也是有点优势的。but,苏南大叔推荐您使用html-loader
。关于html-loader
,苏南大叔列举出来的几个问题,都是可以解决的。
所以,在文章的最后,苏南大叔强烈推荐您查看苏南大叔的webpack
系列文章:


