url-loader不能处理html中引入的图片问题的解决方案

在我们使用webpack进行项目构建的时候,url-loader是个非常有用的工具,

与file-loader相比,url-loader能将图片大小在limit限定值之内的图片转译成base64格式的字符串,

这样能直接减少很多不必要的http请求,在应用性能提升上的效益还是非常可观的。

 

我们项目中引入图片的方式基本上可以分为三种:

1、在js中import图片然后赋值给图片的src属性

import logo from '../img/logo.png';
document.getElementById('box').src = logo;

2、css中设置元素背景图片

.box{background-image: url(../img/logo.png)}

然后在js中通过import ‘@/css/index.css’的形式引入

3、在html的img标签中直接写入src属性,且一般是相对路径

<img src="img/logo.png" />

对于前两种情况,由于都是通过import的方式引入的图片和css文件,因此图片能得到正确处理,但是第三种请况是得不到处理的。

解决方案:

在配置中加入html-withimg-plugin

1、下载:npm install html-withimg-plugin --save-dev

2、在html-webpack-plugin的配置中加入如下配置:

new WebpackHtmlPlugin({
        filename: item,
        template: 'html-withimg-loader!'+path.resolve(__dirname, 'src/html/index.html'),
        chunks: ['js/common', name]
    })

完成配置后再次编译就会发现html中引入的图片也得到了相应的处理

更多配置信息可以参考我之前的博客:多页项目的webpack配置

github仓库地址:https://github.com/SailorCai/muti-page-webpack

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值