vue3 动态style[‘background‘] 图片url 打包后图片不显示没有打包到目录的为你

做了一个项目需求是 动态赋予多个div的背景图片,背景svg是后台数据中给的。刚开始显示不出来后来解决了(好用代码也如下可参考),后来又发现一个问题是 开发环境下可以正常显示,但部署后 svg图片不显示,排查发现是打包后根本没有把这个url对应的图片放到部署目录的assets中。找了很长时间。我当下遇到这个问题 需要两个步骤解决。

1、解决 部署环境下为啥打包的问题 

定义获取路径方法的方式返回资源路径,估计像这样定义成函数再调用。打包时才能被发现资源并打包()
const getImgUrl = (name) =>{
 // return new URL('/assets/svgs/'+name, import.meta.url).href
  return new URL(`/src/assets/svgs/${name}`, import.meta.url).href
}

const getDivStyle = (r2) => {
const style = {}
调用方法获取资源
style['background'] =  "url('"+getImgUrl(r2.ImageUrl.slice(8))+"#svgView(preserveAspectRatio(none)')"
)

2、这样打包后发现小部分svg版文件能显示,还有一部分显示不了。然后又在网上找发现原因是太小的图片 被打包编译成了base64,因为放尺寸大一点的图片就显示正常。做法是把打包的base64尺寸阈值调成0,这样所有svg图片都可原样正常打包放入到assets中就解决了设置方法如下

在vite.config中把 assetsInlineLimit 设置为 0 可以完全禁用此项
 build: {
    assetsInlineLimit: 0,
    // ...
  },

后记小小的眯一会就解决了,看来小憩一会的睡眠 对脑袋和解决为你很有帮助啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值