css-loader 对url的处理

本文介绍了一种解决开发过程中因图片加载导致内存占用过高的方法。通过修改css-loader的处理逻辑,使得图片资源可以直接从静态文件夹加载,从而减少内存使用。详细介绍了如何配置Express来提供静态资源服务,并通过style-loader配合transform.js实现url路径转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

css-loader

如果url 以 “/” 开始是不会对url进行处理的,除非配置了root

url(/image.png) => url(/https/blog.csdn.net/image.png)

但是在我们项目中,由于有些图片比较大,在开发时候会被加载在内存中去,导致了开发时内存占用太大,想直接引用静态资源地址。

// server.js 这个是开发时为一些静态资源直接提供服务地址
app.use('/dist/assets', express.static(path.join(__dirname, '../src/assets/static/')))
background-image:url(./assets/logo.png) /*这样写会会报错,因为css-loader会去require它*/
background-image:url(/assets/logo.png) /*这样写直接取了根目录,而不是相对于网页的目录,*/

所以要想办法在css-loader处理完毕之后 将url(/assets/logo.png)替换为url(assets/logo.png)
所以我用的办法是 style-loader

{
  loader: 'style-loader',
  options: {
    transform: path.join(__dirname, './transform.js') // 必须是绝对地址,而且不能直接用函数代替
  }
}
// transform.js
module.exports = function (css) {
  return css.replace('url(/', 'url(')
}

这样处理之后,只要我的url中以“/”开始就表示不需要css-loader处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值