vue3动态引入图片(:src)

vite 官方默认的配置,如果资源文件在assets文件夹打包后会把图片名加上 hash值,但是直接通过 :src="imgSrc"方式引入并不会在打包的时候解析,导致开发环境可以正常引入,打包后却不能显示的问题
在这里插入图片描述

实际上我们不希望资源文件被wbpack编译可以把图片放到public 目录会更省事,不管是开发环境还是生产环境,可以始终以根目录保持图片路径的一致,这点跟webpack是一致的
image.png

看到这里,也许问题就解决了,如果在vite确实需要将静态文件放在assets,我们再往下看:
这里我们先假设:
静态文件目录:src/assets/images/
我们的目标静态文件在 src/assets/images/home/home_icon.png

  <img :src="require('@/assets/images/home/home_icon.png')" />

尝试过require动态引入, 发现报错:require is not defind,这是因为 require 是属于 Webpack 的方法

第一种方式(适用于处理单个链接的资源文件)

  import homeIcon from '@/assets/images/home/home_icon.png'
	<img :src="homeIcon" />

第二种方式(适用于处理多个链接的资源文件)
推荐,这种方式传入的变量可以动态传入文件路径!!

静态资源处理 | Vite 官方中文文档
new URL() + import.meta.url

这里我们假设:
工具文件目录: src/util/pub-use.ts
pub-use.ts

// 获取assets静态资源
export default  const getAssetsFile = (url: string) => {
   return new URL(`../assets/images/${url}`, import.meta.url).href
}

使用

import usePub from '@/util/public-use'
setup () {
  const Pub = usePub()
  const getAssetsFile = Pub.getAssetsFile
  return { getAssetsFile }
}

可以包含文件路径

<img :src="getAssetsFile('/home/home_icon.png')" />
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中引入图片数据需要使用import语句来导入图片文件,但是如果使用TypeScript作为项目语言,需要按照以下步骤来正确引入图片数据。 首先,在项目中创建一个类型声明文件,例如"vue-shims.d.ts",并在该文件中添加以下代码: ``` declare module "*.png" { const value: any; export default value; } declare module "*.jpg" { const value: any; export default value; } declare module "*.jpeg" { const value: any; export default value; } declare module "*.gif" { const value: any; export default value; } ``` 这些类型声明将允许TypeScript正常处理导入的图片文件。 接下来,在组件中使用import语句来导入图片文件。例如: ``` <template> <div> <img :src="imageUrl" alt="example image"> </div> </template> <script lang="ts"> import { defineComponent } from "vue"; import exampleImage from "@/assets/images/example.png"; export default defineComponent({ name: "ExampleComponent", setup() { const imageUrl = exampleImage; return { imageUrl }; }, }); </script> ``` 注意,在这个例子中,我们将图片文件存储在"src/assets/images"文件夹中,并在导入时使用了"@/assets/images"路径别名。 最后,我们可以像使用其他数据一样在Vue3中使用导入的图片数据。例如,在上面的例子中,我们将图片数据绑定到了img元素的src属性上。 总之,在Vue3中使用TypeScript导入图片数据需要做些额外的工作,但是这只需要在项目中创建一个类型声明文件并使用import语句来导入图片文件即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值