Vue中图片的引用方式的区别详解
目录
前言
在 Vue 开发中,图片的引用方式主要取决于图片存放的位置,常见的存放方式包括:
- 存放在 public/ 目录
- 存放在 assets/ 目录
- 存放在远程服务器
- 动态拼接图片路径
本文将详细分析这些方式的区别,并提供完整的代码示例和注释
1. 引用 public/ 目录
public/ 目录下的文件会被 Vue 直接映射到项目的根路径 /,无需 Webpack 处理,适用于:
- 不会被打包处理的静态资源
- 图片 URL 确定,不依赖 Webpack 解析
正确写法
错误写法
说明: public/ 目录的内容会被 Vue 直接映射到根路径 /,所以访问 /public/xxx.png 是错误的
截图如下:
2. assets/ 目录
适用场景
assets/ 目录下的图片会被 Vue 通过 Webpack 进行打包,适用于:
- 存放在 src/assets/ 目录
- 需要 Webpack 处理,如哈希命名
- 图片路径动态变化
使用 import 方式
说明:
import 方式会将图片路径解析为 Webpack 处理的 URL
适用于静态导入,但不适用于动态路径拼接
使用 new URL() 方式
说明:
new URL() 适用于 assets 目录,支持动态路径处理
3. 远程服务器
适用场景
- 图片存放在 CDN 或外部服务器
- 不需要 Webpack 处理
说明:
直接使用绝对 URL 访问远程图片,无需 Vue 处理
4. Vue Router 动态访问
图片名称与路由路径相关联,可以使用 computed 计算属性自动生成图片路径
假设 public 目录结构如下:
public/
├── home.png
├── about.png
├── contact.png
访问 /home 时,图片路径为:
动态路由的方式有所差异:
截图如下:
5. 总结
总的来说:
最佳实践:
- public/ 目录适用于静态资源,直接使用 /filename.png 访问
- assets/ 目录适用于 Webpack 处理,使用 import 或 new URL()
- 外部图片直接使用绝对 URL
- 动态图片路径可结合 Vue Router 计算生成
6. 扩展(图片不显示)
图片无法显示通常是路径错误、资源未正确加载或 Webpack/Vite 处理导致的问题
图片不显示的常见原因
在 Vue 3 + Vite(或 Webpack)项目中,图片可能无法显示的常见原因包括:
1.路径错误:引用 public/ 目录时仍加 public/ 前缀
2.资源未正确加载:如 src/assets/ 目录下的图片未被 Webpack 处理
3.动态路径问题:使用 computed 计算属性拼接路径时错误
4.Webpack 处理方式:assets/ 目录下的图片会被 Webpack 处理,不能直接访问
5.图片格式或大小问题:浏览器不支持的图片格式或图片损坏
路径错误这个要点此处着重分析下
详细分析下为何要放在public等路径下!
public/ 目录的映射机制
在 Vue 项目结构中:
my-project/
├── public/
│ ├── manufacturing.png
│ ├── images/
│ │ ├── factory.png
├── src/
│ ├── views/
│ │ ├── Industry.vue
│ ├── assets/
│ │ ├── example.png
│ ├── App.vue
public/manufacturing.png 在构建后会被 Vue 直接映射到:/manufacturing.png
public/images/factory.png 在构建后会变成:/images/factory.png
src/assets/example.png 则会被 Webpack 处理,并生成动态路径(如 /assets/example.abcdef.png)
如何证明 public/ 目录直接映射到根路径 /?
可以打开 http://localhost:5173/manufacturing.png,如果 manufacturing.png 直接显示,则说明它已经被映射到根目录 /,而不需要 /public/manufacturing.png
对比 public/ 和 src/assets/
使用 public/ 目录
使用 src/assets/ 目录
![]()
到此这篇关于Vue中图片的引用方式的区别详解的文章就介绍到这了,更多相关Vue图片引用内容请搜索科站长以前的文章或继续浏览下面的相关文章希望大家以后多多支持科站长!
栏 目:JavaScript
下一篇:JS将json字符串转换为JsonObject的多种实现方法
本文标题:Vue中图片的引用方式的区别详解
本文地址:https://www.fushidao.cc/wangluobiancheng/3149.html
您可能感兴趣的文章
- 02-11js中基本事件的总结(onclick、onblur、onchange等)
- 02-11详解如何在Node.js中使用中间件处理请求
- 02-11Vue3中Provide和Inject的用法及工作原理详解
- 02-11Vue+vant实现图片上传添加水印
- 02-11快速解决 keep-alive 缓存组件中定时器干扰问题
- 02-11uniapp 使用 tree.js 解决模型加载不出来的问题及解决方法
- 02-11基于uniapp vue3 的滑动抢单组件实例代码
- 02-10JavaScript 中的 Map使用指南
- 02-10vue3中使用print-js组件实现打印操作步骤
- 02-10Vue 中v-model的完整用法及v-model的实现原理解析


阅读排行
推荐教程
- 04-23JavaScript Array实例方法flat的实现
- 04-23THREE.JS使用TransformControls对模型拖拽的代码实例
- 04-23Vue3使用v-if指令进行条件渲染的实例代码
- 04-23vue3+ts项目搭建的实现示例
- 04-23JavaScript实现下载超大文件的方法详解
- 04-23vue如何使用pdf.js实现在线查看pdf文件功能
- 04-23vue.js调用python脚本并给脚本传数据
- 12-18使用JavaScript遍历输出页面中的所有元素的方法详解
- 04-23JS加密解密之保存到桌面书签
- 12-18Vue实现滚动加载更多效果的示例代码