vue3+vite动态引入图片

Vue3+Vite项目实战:三种动态图片引入方案深度解析与避坑指南 本文深度解析Vue3+Vite项目中动态图片引入的三种方案,包括静态引入、动态构建和批量导入,并提供详细的避坑指南。针对assets目录下的图片资源,特别介绍了new URL+import.meta.url的Vite推荐方案,帮助开发者解决打包后图片404等常见问题,提升项目构建效率。 阅读详情

一、 说明

在vue2中可以使用require动态引入图片,但在开发vue3+vite项目的时候想要动态的去引入图片来显示,尝试过require 发现报错 require is not defind。因为require是webpack的方法,而vite是不支持require方法的,vite官网:

服务时引入一个静态资源会返回解析后的公共路径:

import imgUrl from './img.png'
document.getElementById('hero-img').src = imgUrl

例如,imgUrl 在开发时会是 /img.png,在生产构建后会是 /assets/img.2d8efhg.png。

行为类似于 Webpack 的 file-loader。区别在于导入既可以使用绝对公共路径(基于开发期间的项目根路径),也可以使用相对路径。

二、 实现方式

方式一

比较笨的实现方法 使用 import()

const bgImage = ref<string>("");
const bgImageFunc = (url: string) =>
  import(url).then((res: any) => {
    bgImage.value = res.default;
  });

// 使用
bgImageFunc("../../assets/images/bg/bg.jpg");

方式二

使用vite官方提供的方式

/**
 * <p> 获取加载图片地址 </p>
 * examples: bg/bg.png
 * @param imgPath: string
 */
export const requireImg = (imgPath: string) => {
  return new URL(`../assets/images/${imgPath}`, import.meta.url).href;
};

// 使用
requireImg("bg/bg.png");

方式三

使用 import.meta.glob 提供的方法

/**
 * <p> 获取加载图片地址 </p>
 * examples: /src/assets/bg/bg.png
 * @param url: string
 *
 */
export const useFile = (url: string) => {
  const modules: Record<string, any> = import.meta.glob("@/assets/images/**/*.{png,svg,jpg,jpeg}", { eager: true });
  if (modules[url]) return modules[url].default;
  else {
    // 地址错误
    console.log("Error url is wrong path");
  }
};

// 使用 必须是带有/src 完整目录
useFile("/src/assets/bg/bg.png");

以上三种方式可以任选一种即可

VUE3语法--img图片不显示/img的src动态赋值图片显示 在VUE中,img中的src动态赋值的之后,无法显示图片出现404.以及VUE中通过require访问静态资源出现的Uncaught Error: cannot module ‘asstes/logo.png’问题。 阅读详情

相关推荐

资源篇10|vite中静态资源(css、img、svg等)的加载机制及其相关配置

vite对静态资源文件的处理

石小石Orz的博客 9505

Vue3的图片引入

方法引入 <img :src="imgFun('test.png')"/> function imgFun(val){ return new URL(`../../asseets/home/img/${val}`,import.meta.url).href; } 背景样式引入 .box{ background:url("../../assets/home/img/test.png") } .box1{ background:url("~@assets/home/img/test.png") }

LILEILEILOVE的博客 1万+

使用vue3+vite创建的项目,动态引入本地图片,不能直接使用require

使用vue3+vite创建的项目,动态引入本地图片,不能直接使用require

bao_Heng的博客 1816

vue3 如何引入静态资源图片

vue3如何引入静态资源

weixin_45102212的博客 6414

如何浏览与下载全球免费的地图高分辨率(亚米级)的遥感影像?

前言 如果你想使用商业卫星的高分辨遥感影像,一般价格昂贵。我们可以使用地图平台上免费的高分辨率数据。目前数据源很多,比如说google earth、天地图、四维地球、必应地图等等。这些影像统一有一个共同点就是:RGB三波段;Web地图瓦片服务。这意味着我们可以通过瓦片服务下载影像,但下载的影像只有三个波段,分别是 一.引言 二、可使用高分辨率的地图数据源 1.Google Earth影像 2.Esri World Image 3.天地图 4.必...

锐多宝的地理空间 2万+

群晖Web Station实战:从零搭建个人静态导航站

本文详细介绍了如何利用群晖NAS自带的Web Station套件,从零开始搭建个人静态导航站。通过安装Web Station、上传静态网站源码、配置网页服务与网络门户等步骤,无需代码基础即可实现内网访问。文章还分享了文件权限设置、个性化定制及常见问题排查等实用技巧,帮助用户高效管理个人常用网址,充分挖掘NAS的服务器潜能。

tea88的博客 1327

vue3+vite assets动态引入图片的几种方式,解决打包后图片路径错误不显示的问题

vite官方默认的配置,如果资源文件在assets文件夹打包后会把图片名加上hash值,但是直接通过src="imgSrc"方式引入并不会在打包的时候解析,导致开发环境可以正常引入,打包后却不能显示的问题我们看到实际上我们不希望资源文件被wbpack编译,这点跟webpack是一致的我们的目标静态文件在。......

LoveSummer 8万+

高通camera open代码流程(hal到kernel)

内容:简单介绍Camera open代码调用流程,从HAl到kernel。(api1+hal1) 前言 Android camera api和hal对应关系。安卓在版本更新过程中,camera相关代码也经历了几个版本的更新,表现为camera HAL版本更新(HAL1->HAL2->HAL3),camera API版本更新(camera API1->camera API2),接下...

oxoo123的专栏 4276

vue3+vite:动态引入静态图片资源

vite不支持require方法;vue3+vite如何动态引入静态图片资源

qq_45796592的博客 8908

Xilinx FPGA 10G Ethernet Subsystem example

The 10G Ethernet subsystem provides 10 Gb/s Ethernet MAC, Physical Coding Sublayer(PCS) and Physical Medium Attachment (PMA) transmit and receive functionality over anAXI4-Stream interface.

青城扬沙的博客 2378

Linux之SUSE系统SAP-HANA经常系统内存不足使得SAP应用不能使用解决方案

问题描述 Linux内存使用量超过阈值,使得sap应用程序无可用内存,最终导致程序崩溃。 问题原因 自己查阅了一些资料,也基于zabbix的可用内存和实际不太一样入手去找原因发现问题出现于Cached的值过大,导致系统没有可以再分配的内存空间。Cached只要用来缓存文件的,经常读写的文件会被缓存到Cached中,可以增加读写效率,该功能是Linux系统内核提供的,而SAP-HANA的日志文件很大...

liuxiangyang_的博客 6709

Vue3 + Vite 动态引入图片

Vue3 + Vite 动态引入图片 开发vue3 + vite项目的时候 想要动态的去引入图片来显示,尝试过require 发现报错 require is not defind 查看vite官方网站 官方说明 import imgUrl from './img.png' document.getElementById('hero-img').src = imgUrl 行为类似于 Webpack 的 file-loader。区别在于导入既可以使用绝对公共路径(基于开发期间的项目根路径),也可

qq_43806604的博客 9131

ConvLSTM时空预测实战代码详解

ConvLSTM代码复现

JaysonWong的博客 1万+

Vue3+TypeScript+Vite如何使用require动态引入类似于图片等静态资源

Vue3+TypeScript+Vite的项目中如何使用require动态引入类似于图片等静态资源

Oliver尹的博客 2万+

【Excel VBA 编程】表格内自动生成进度条

在表格中生成进度条,进度条需要自适应单元格的宽度,根据不同进度区间变换颜色,并且按照进度数据大小显示其长短

wei1019的专栏 1518

【1】Java 部分笔试题解析

解析A.abstract关键字应该放在class关键字之前。C.抽象方法不能有方法体。D缺少了class关键字。

博客 3940

Vue3+TypeScript+Vite 的项目中使用require动态引入图片报错

Vue3+TypeScript+Vite 的项目中使用require动态引入图片报错

千里之行,始于足下! 1933

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

别再踩坑了!Vue3 + Vite项目里动态图片引入的3种正确姿势(附完整代码)

本文详细解析了Vue3 + Vite项目中动态图片引入的3种正确方法,包括直接导入、new URL + import.meta.url和import.meta.glob方案,帮助开发者避免常见的打包问题。每种方案都附有完整代码示例和适用场景分析,特别适合从Webpack迁移到Vite的开发者解决动态引入图片的难题。

weixin_30580341的博客 150

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

vue3+vite 态引用静态资源,动态引入assets文件夹图片的几种方式

【代码】vue3+vite 态引用静态资源,动态引入assets文件夹图片的几种方式。

qq_44136028的博客 1642

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Vue 3使用vite 2.0 动态引入加载图片 src,解决方法超级简单

我现在需要动态引入图片,因此要用到模板字符串和动态绑定。第一反应,当然就是如下写法: <img :src="`../assets/blogPhotos/${name}.jpg`" alt="" /> 但此时,控制台就报了一个错,说没有找到这张图片。 但我图片明明就放在那儿,你还说没找到。 这时一顿百度,没有找到结果。只能去vite的官网,没想到竟然被我找到解决方法了。 解决方法一 根据官网的提示,我找到了最简单的方法,就是在将asset 前面加上src。 <img v-if="post

m0_67390379的博客 3648

vue3+vite 动态引入图片的方法

import.meta.url 是一个 ESM 的原生功能,会暴露当前模块的 URL。将它与原生的 URL 构造器 组合使用,在一个 JavaScript 模块中,通过相对路径我们就能得到一个被完整解析的静态资源 URL。

学而不思则罔 1892

vue3+vite assets动态引入图片的方式

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

weixin_46406211的博客 3894

Vue 3+vite 动态引入本地图片img

Vue3动态换图,换壳思路

简单Cere 1536
上一篇: 解决JNA 高版本使用结构体时出现 java.lang.Error: Structure.getFieldOrder()
下一篇: vue3 + typescript + vite + naive ui + tailwindcss + jsx 仿苹果桌面系统
shareloke
博客等级 码龄10年 4741粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值