静态资源的动态引入

本文介绍了在开发中遇到打包后图片路径变化的问题,提供了四种解决方案:1)使用import引入,每张图单独引入;2)用require动态加载;3)将静态文件放在public中,可能丢失指纹;4)动态导入结合newURL处理动态和静态部分的URL。

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

有常用的2种方式:
1、css中的静态路径
2、img中的src静态路径
运行的环境是打包后的图片路径,而打包后的图片通常会生成一个文件指纹,而我们在写代码时,写的是源码中的路径和文件名,如果是静态路径,则会自动转换。
在这里插入图片描述

解决方式:

1、最笨的方式:用import引入,但是每张图都需要引入

<div class="img" :style="{backgroundImage: `url(${img})`}"> 234</div>
import img from '../../assets/aesthetics.png'
export default {
  data() {
    return {
      img,
    }
  },
}

在这里插入图片描述

2、用require

<div class="img" :style="{ backgroundImage: `url(${require(`@/assets/${img}.png`)})` }"> 234</div>
data() {
	img: 'aesthetics'
}

3、静态文件放在public中,但这种丢失了文件指纹

<div class="img" :style="{backgroundImage: `url(/static/img/${img}.png)`}"> 234</div>
data() {
	img: 'aesthetics'
}

在这里插入图片描述
4、动态导入,静态文件放在public中,用 new URL
new URL() 是 JavaScript 中用于创建 URL 对象的构造函数。它可以将字符串形式的 URL 解析为一个可访问和操作的对象。
new URL() 构造函数接受两个参数:
URL 字符串:表示要解析的 URL 的字符串,且这个值必须一部分动态一部分静态。
基础 URL(可选):表示相对 URL 的基础 URL,用于解析相对 URL 时使用。

 <div class="img" :style="{ backgroundImage: `url(${bind('aesthetics')})` }"> 234</div>
 
function bind(val) {
  var imagePath = `/static/img/${val}.png`;
  var url = new URL(imagePath, window.location.href);
  return url.pathname
}

在这里插入图片描述

### 如何在 UniApp 中管理动态静态资源 #### 静态资源的处理方法 在 UniApp 小程序中,当涉及到分包时,使用分包内的静态资源路径会发生变化。例如,在页面 `/pagesA` 下引用 `my_icon.png` 文件应采用如下形式: ```html <view class="big_img"> <image src="/pagesA/static/my_icon.png" mode="aspectFit"></image> </view> ``` 这种方式确保了即使是在不同的分包内也能正确加载所需的静态资源文件[^1]。 对于 iOS 原生插件引入图片等资源文件,则需按照 uniapp 官方文档指导,将所需资源放置于 `.bundle` 包之中。这一步骤对于初次接触此功能开发者来说可能容易被忽视,因此务必参照官方指南完成配置工作[^2]。 #### 动态资源的处理策略 针对动态资源而言,通常指的是那些运行期间才会确定其具体位置或内容的数据,比如网络请求获取到的新图标链接或者是用户上传的照片等。这类资源一般会通过 API 接口返回 URL 地址的形式提供给前端应用展示。为了更好地管理和优化这些资源,可以考虑以下几个方面: - **缓存机制**:利用本地存储技术(如 Storage 或者 CacheStorage),保存已经下载过的动态资源副本,减少重复请求带来的流量消耗。 - **懒加载技术**:仅当视图滚动至特定区域才去加载对应范围内的图像或其他大型媒体文件,从而提高初始渲染速度并节省带宽开销。 - **CDN 加速服务**:借助第三方 CDN 平台分布式的服务器节点优势,使得全球各地用户的访问延迟更低、体验更流畅。 此外,考虑到长期维护的需求,定期审查项目结构有助于移除不再使用的组件及其关联的资源文件。为此可借助专门设计用于扫描未引用资产的小型工具辅助操作,保持代码库整洁高效[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值