vue3:加载本地图片等静态资源

这篇具有很好参考价值的文章主要介绍了vue3:加载本地图片等静态资源。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

在我们用 vue2 + webpack 的时候,加载图片资源是这样用的:

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

这样打包后就会触发 file-loader 打包图片资源,在 dist 文件夹中就可以看到这个图片(如果图片较小会打包进代码中变为 base64 引入)。

但是在 vue3 + vite 中,使用这种方式是不行的,vite 中没有 require 会报错。
解决方案 官方文档 中提到了两种方案,今天我来验证一下。

将资源引入为 URL

import chatHealth from '@/assets/chat-health.png'
<img :src="chatHealth" alt="" />

vue3 引入图片,# vue,前端,javascript,vue.js
可以看到,由于这张图片较小被打包成为了 base64,所以 dist 文件夹没有输出这个图片。

接下来我拿一张大图试验一下,发现确实打包出来了。
vue3 引入图片,# vue,前端,javascript,vue.js
所以这种方法亲测有效。

new URL(url, import.meta.url)

第二种方法是:

<img :src="getImgUrl('chat-health.png')" alt="" />

const getImgUrl = (name: string) => {
  return new URL('../../../../../assets/' + name, import.meta.url).href
}

使用这种方法,在本地运行的时候可以加载出来图片。
vue3 引入图片,# vue,前端,javascript,vue.js
但是发到真实环境(测试/线上),发现找不到文件了,我看了下目录指向的是:
vue3 引入图片,# vue,前端,javascript,vue.js
但这个路径并不对,然后我再看打包后的文件
vue3 引入图片,# vue,前端,javascript,vue.js
发现打包后的文件并没有这个图片,这里我有点不太懂问题出在哪里?
感觉好像就是 vite 没有去加载这个图片,所以打包文件看不到,并不是因为图片小,我换了一个大图依旧 dist 没有,不知道是不是我哪里操作不对。

结尾

对比这两种方案,我只试验成功了第一种,第二种如果是我哪里操作不对的欢迎指正文章来源地址https://www.toymoban.com/news/detail-801843.html

到了这里,关于vue3:加载本地图片等静态资源的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vite静态资源处理——动态引入图片

    服务时引入一个静态资源会返回解析后的公共路径: 导入既可以使用绝对公共路径(基于开发期间的项目根路径),也可以使用相对路径。 vite 生产构建后文件名会哈希,如图: import.meta.url 是一个 ESM 的原生功能,会暴露当前模块的 URL。将它与原生的 URL 构造器 组合使用,

    2024年02月10日
    浏览(32)
  • Vue中引入HTML静态资源文件(包含数据的传递)(html大屏)

    项目需要做一个可视化大屏,要的时间比较急,在查找大屏模板的时候找到了合适的一个静态的HTML+JS+CSS的一个模板,但是这个模板没有数据请求等工具方法,于是现在想要把这个html文件放在vue项目中,并且通过vue获取数据,把数据传到html页面,在页面内展示数据。 首先,

    2023年04月26日
    浏览(22)
  • vue3 动态加载组件、动态引入组件

    1.问题 在做一个用 vite 构建的 vue3 项目时,动态拉取导入 .vue 页面,然后控制台一直有以下提示,页面也无法渲染出来。 2.分析 根据上面的报错提示,让我们安装并使用: @rollup/plugin-dynamic-import-vars 这个插件(最终没有这个方案)。 Vite官方文档说 需要使用Glob 导入形式 ,然

    2023年04月09日
    浏览(74)
  • vue项目打包,解决静态资源无法加载和路由加载无效(404)问题

    打包后的项目静态资源无法使用,导致页面空白 静态资源无法使用,那就说明项目打包后,图片和其他静态资源文件相对路径不对,此时找到config里面的index.js,在build模块下加入 assetsPublicPath: \\\'./\\\',  如下图所示,或者是在打包完的dist文件夹中找里面的.js文件,将其中的\\\'/\\\'替

    2024年02月08日
    浏览(42)
  • 后端请求转发与请求重定对于向前端静态资源的加载影响

    虽然在实际开发过程中用的很少,这里记录一下遇到的问题。因为有一次导致前端CSS样式文件无法加载,最后找出BUG的步骤 后端代码 前端代码 前端文件路径 URL变化:127.0.0.1:8080/test/hello 不改变 发现前端样式已经丢失,html加载的css,js和图片资源出现了404:因为转发依靠的是

    2024年02月21日
    浏览(43)
  • webpack无损压缩本地静态资源图片image-minimizer-webpack-plugin

    开发如果项目中引用了较多图片,那么图片体积会比较大,将来请求速度比较慢。 我们可以对图片进行压缩,减少图片体积。 一、image-minimizer-webpack-plugin介绍 Image-minimizer-webpack-plugin 是一个用于 优化和压缩图片 的 Webpack 插件。它使用多个优化器和压缩器来减小图片文件的大

    2024年02月09日
    浏览(76)
  • SpringBoot访问静态资源和jar外部静态资源,部署前端打包后的vue项目放入静态资源里

    记录一下使用SpringBoot访问静态资源和SpringBoot打包之后的jar外部静态资源,在开发的时候,一般选择前后端分离的方式,前端使用vue 后端使用SpringBoot,通常情况下,部署都是前端通过http去请求后端资源,涉及到http请求,那么肯定需要资源的目标地址IP,一般云端部署给到I

    2024年02月09日
    浏览(60)
  • vue项目 前端加前缀(包括页面及静态资源)

    具体步骤 (1)更改router模式,添加前缀 位置:router文件夹下面的index.js (2)实现静态文件加前缀 位置:vue.config.js 静态资源css,js之类的的src或href引用位置会加上这个前缀,会体现在打包后的index.html文件内容 例如 (3)nignx配置

    2024年02月04日
    浏览(43)
  • Vue3实现图片懒加载

    通过第三方插件VueUse实现图片懒加载。 1、需要安装依赖 2、定义懒加载的插件 xxx/index.js 3、在main.js文件内注册指令 4、使用 注册好指令就可以在标签上使用,使用指令时需要加v-。 这样一个自定义全局指令实现图片懒加载就做好了。

    2024年04月10日
    浏览(33)
  • 本地前端项目使用gitee仓库外链图片加载失败

    错误: 本地的前端项目,比如vue,纯html使用 img/ 标签加载gitee保存的图片文件的时候,浏览器加载失败。 但是gitee可以正常访问图片  解决办法: 在index.html中加入meta标签就可以完美解决 referrer 策略是一种 网络安全手段 ,在请求中会带有referrer。 要是vue项目的话,直接去

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包