Vue 圖片引用方式詳解:靜態資源與動態路徑訪問

目錄

  • 前言
  • 1. 引用 public/ 目錄
  • 2. assets/ 目錄
  • 3. 遠程服務器
  • 4. Vue Router 動態訪問
  • 5. 總結
  • 6. 擴展(圖片不顯示)

前言

🤟 找工作,來萬碼優才:👉 #小程序://萬碼優才/r6rqmzDaXpYkJZF

在 Vue 開發中,圖片的引用方式主要取決于圖片存放的位置,常見的存放方式包括:

  1. 存放在 public/ 目錄
  2. 存放在 assets/ 目錄
  3. 存放在遠程服務器
  4. 動態拼接圖片路徑

本文將詳細分析這些方式的區別,并提供完整的代碼示例和注釋

1. 引用 public/ 目錄

public/ 目錄下的文件會被 Vue 直接映射到項目的根路徑 /,無需 Webpack 處理,適用于:

  1. 不會被打包處理的靜態資源
  2. 圖片 URL 確定,不依賴 Webpack 解析

? 正確寫法

<template><div><!-- 直接從 public 目錄訪問圖片 --><img src="/manufacturing.png" alt="Manufacturing Image" /></div>
</template>

? 錯誤寫法

<template><div><!-- public 目錄不需要 public/ 前綴 --><img src="/public/manufacturing.png" alt="Error Image" /></div>
</template>

說明: public/ 目錄的內容會被 Vue 直接映射到根路徑 /,所以訪問 /public/xxx.png 是錯誤的

截圖如下:

在這里插入圖片描述

2. assets/ 目錄

適用場景
assets/ 目錄下的圖片會被 Vue 通過 Webpack 進行打包,適用于:

  1. 存放在 src/assets/ 目錄
  2. 需要 Webpack 處理,如哈希命名
  3. 圖片路徑動態變化

? 使用 import 方式

<script setup>
import imageUrl from '@/assets/images/manufacturing.png'
</script><template><div><img :src="imageUrl" alt="Manufacturing Image" /></div>
</template>

說明:
import 方式會將圖片路徑解析為 Webpack 處理的 URL
適用于靜態導入,但不適用于動態路徑拼接

? 使用 new URL() 方式

<script setup>
const imageSrc = new URL('@/assets/images/manufacturing.png', import.meta.url).href
</script><template><div><img :src="imageSrc" alt="Manufacturing Image" /></div>
</template>

說明:
new URL() 適用于 assets 目錄,支持動態路徑處理

3. 遠程服務器

適用場景

  1. 圖片存放在 CDN 或外部服務器
  2. 不需要 Webpack 處理
<template><div><img src="https://example.com/images/manufacturing.png" alt="Remote Image" /></div>
</template>

說明:
直接使用絕對 URL 訪問遠程圖片,無需 Vue 處理

4. Vue Router 動態訪問

圖片名稱與路由路徑相關聯,可以使用 computed 計算屬性自動生成圖片路徑

<template><div><img :src="imageSrc" alt="Dynamic Page Image" /></div>
</template><script setup>
import { useRoute } from 'vue-router'
import { computed } from 'vue'const route = useRoute()// 計算 public 目錄下的圖片路徑
const imageSrc = computed(() => {const sanitizedPath = route.path.replace(/^\//, '') // 移除開頭的 `/`return `/${sanitizedPath}.png` // 訪問 public 目錄
})
</script>

假設 public 目錄結構如下:

public/
├── home.png
├── about.png
├── contact.png

訪問 /home 時,圖片路徑為:

<img src="/home.png" />

動態路由的方式有所差異:

<template><div><img :src="imageSrc" alt="Dynamic Page Image" /></div>
</template><script setup>
import { useRoute } from 'vue-router'
import { computed } from 'vue'const route = useRoute()// 計算 public 目錄下的圖片路徑
const imageSrc = computed(() => {const sanitizedPath = route.path.replace(/^\//, '') // 移除開頭的 `/`const lastSegment = sanitizedPath.split('/').pop() // 獲取最后的路徑部分return `/${lastSegment}.png` // 訪問 public 目錄
})
</script>

截圖如下:

在這里插入圖片描述

5. 總結

總的來說:

存放位置適用場景訪問方式代碼示例
public/直接訪問,無需 Webpack 處理/filename.png<img src="/manufacturing.png" />
assets/需要 Webpack 處理import 或 new URL()import img from '@/assets/image.png'
遠程服務器圖片在外部服務器/CDN絕對 URL<img src="https://example.com/image.png" />
動態路由根據 Vue Router動態生成圖片路徑computed 計算屬性 :src=“computedPath”

最佳實踐:

  1. public/ 目錄適用于靜態資源,直接使用 /filename.png 訪問
  2. assets/ 目錄適用于 Webpack 處理,使用 import 或 new URL()
  3. 外部圖片直接使用絕對 URL
  4. 動態圖片路徑可結合 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/

存放目錄是否被 Webpack 處理訪問方式適用場景
public/?/filename.png
src/assets/?import 或 new URL()

? 使用 public/ 目錄

<template><div><img src="/manufacturing.png" alt="Manufacturing Image" /></div>
</template>

? 使用 src/assets/ 目錄

<script setup>
import imgUrl from '@/assets/example.png'
</script><template><div><img :src="imgUrl" alt="Example Image" /></div>
</template>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67835.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67835.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67835.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DeepSeek-R1 本地部署教程(超簡版)

文章目錄 一、DeepSeek相關網站二、DeepSeek-R1硬件要求三、本地部署DeepSeek-R11. 安裝Ollama1.1 Windows1.2 Linux1.3 macOS 2. 下載和運行DeepSeek模型3. 列出本地已下載的模型 四、Ollama命令大全五、常見問題解決附&#xff1a;DeepSeek模型資源 一、DeepSeek相關網站 官…

JVM運行時數據區域-附面試題

Java虛擬機在執行Java程序的過程中會把它所管理的內存劃分為若干個不同的數據區域。這些區域 有各自的用途&#xff0c;以及創建和銷毀的時間&#xff0c;有的區域隨著虛擬機進程的啟動而一直存在&#xff0c;有些區域則是 依賴用戶線程的啟動和結束而建立和銷毀。 1. 程序計…

什么是LPU?會打破全球算力市場格局嗎?

在生成式AI向垂直領域縱深發展的關鍵節點&#xff0c;一場靜默的芯片革命正在改寫算力規則。Groq研發的LPU&#xff08;Language Processing Unit&#xff09;憑借其顛覆性架構&#xff0c;不僅突破了傳統GPU的性能天花板&#xff0c;更通過與DeepSeek等國產大模型的深度協同&a…

如何構建ObjC語言編譯環境?構建無比簡潔的clang編譯ObjC環境?Windows搭建Swift語言編譯環境?

如何構建ObjC語言編譯環境? 除了在線ObjC編譯器&#xff0c;本地環境Windows/Mac/Linux均可以搭建ObjC編譯環境。 Mac自然不用多說&#xff0c;ObjC是親兒子。(WSL Ubuntu 22.04) Ubuntu可以安裝gobjc/gnustep和gnustep-devel構建編譯環境。 sudo apt-get install gobjc gnus…

2月3日星期一今日早報簡報微語報早讀

2月3日星期一&#xff0c;農歷正月初六&#xff0c;早報#微語早讀。 1、多個景區發布公告&#xff1a;售票數量已達上限&#xff0c;請游客合理安排行程&#xff1b; 2、2025春節檔總票房破70億&#xff0c;《哪吒之魔童鬧海》破31億&#xff1b; 3、美宣布對中國商品加征10…

DeepSeek 原理解析:與主流大模型的差異及低算力優勢

在人工智能大模型蓬勃發展的浪潮中&#xff0c;DeepSeek 以其獨特的技術路線和出色的性能表現脫穎而出。與主流大模型相比&#xff0c;DeepSeek 不僅在技術原理上有著顯著的差異&#xff0c;還展現出了在較低算力下達到 OpenAI API 水平的卓越能力。本文將深入剖析這些獨特之處…

C++ Primer 標準庫vector

歡迎閱讀我的 【CPrimer】專欄 專欄簡介&#xff1a;本專欄主要面向C初學者&#xff0c;解釋C的一些基本概念和基礎語言特性&#xff0c;涉及C標準庫的用法&#xff0c;面向對象特性&#xff0c;泛型特性高級用法。通過使用標準庫中定義的抽象設施&#xff0c;使你更加適應高級…

【Numpy核心編程攻略:Python數據處理、分析詳解與科學計算】2.6 廣播機制核心算法:維度擴展的數學建模

2.6 廣播機制核心算法&#xff1a;維度擴展的數學建模 目錄/提綱 #mermaid-svg-IfELXmhcsdH1tW69 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-IfELXmhcsdH1tW69 .error-icon{fill:#552222;}#mermaid-svg-IfELXm…

【Elasticsearch】硬件資源優化

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家&#xff0c;歷代文學網&#xff08;PC端可以訪問&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移動端可微信小程序搜索“歷代文學”&#xff09;總架構師&#xff0c;15年工作經驗&#xff0c;精通Java編…

bootstrap.yml文件未自動加載問題解決方案

在添加bootstrap.yml文件后,程序未自動掃描到,即圖標是這樣的: 查了一些資料,是缺少bootstrap相關依賴,雖然已經添加了spring-cloud-context依賴,但是這個依賴并未引入bootstrap依賴,可能是版本問題,需要手動引入 <dependency><groupId>org.springframework.cloud&…

C++底層學習預備:模板初階

文章目錄 1.編程范式2.函數模板2.1 函數模板概念2.2 函數模板原理2.3 函數模板實例化2.3.1 隱式實例化2.3.2 顯式實例化 2.4 模板參數的匹配原則 3.類模板希望讀者們多多三連支持小編會繼續更新你們的鼓勵就是我前進的動力&#xff01; 進入STL庫學習之前我們要先了解有關模板的…

【玩轉 Postman 接口測試與開發2_015】第12章:模擬服務器(Mock servers)在 Postman 中的創建與用法(含完整實測效果圖)

《API Testing and Development with Postman》最新第二版封面 文章目錄 第十二章 模擬服務器&#xff08;Mock servers&#xff09;在 Postman 中的創建與用法1 模擬服務器的概念2 模擬服務器的創建2.1 開啟側邊欄2.2 模擬服務器的兩種創建方式2.3 私有模擬器的 API 秘鑰的用法…

【算法】回溯算法專題③ ——排列型回溯 python

目錄 前置小試牛刀回歸經典舉一反三總結 前置 【算法】回溯算法專題① ——子集型回溯 python 【算法】回溯算法專題② ——組合型回溯 剪枝 python 小試牛刀 全排列 https://leetcode.cn/problems/permutations/description/ 給定一個不含重復數字的數組 nums &#xff0c;返…

8.原型模式(Prototype)

動機 在軟件系統中&#xff0c;經常面臨著某些結構復雜的對象的創建工作&#xff1b;由于需求的變化&#xff0c;這些對象經常面臨著劇烈的變化&#xff0c;但是它們卻擁有比較穩定一致的接口。 之前的工廠方法和抽象工廠將抽象基類和具體的實現分開。原型模式也差不多&#…

LabVIEW如何高頻采集溫度數據?

在LabVIEW中進行高頻溫度數據采集時&#xff0c;選擇合適的傳感器&#xff08;如熱電偶或熱電阻&#xff09;和采集硬件是關鍵。下面是一些建議&#xff0c;幫助實現高效的溫度數據采集&#xff1a; 1. 傳感器選擇&#xff1a; 熱電偶&#xff08;Thermocouple&#xff09;&am…

Kotlin 委托詳解

Kotlin 委托詳解 引言 Kotlin 作為一種現代化的編程語言&#xff0c;在 Android 開發等領域得到了廣泛的應用。在 Kotlin 中&#xff0c;委托&#xff08;Delegation&#xff09;是一種強大的特性&#xff0c;它可以讓我們以更簡潔的方式實現代碼的復用和擴展。本文將詳細解析…

npm 和 pip 安裝中常見問題總結

安裝路徑的疑惑&#xff1a;NPM 和 PIP 的安裝機制 NPM 安裝路徑規則&#xff1a; 依賴安裝在項目目錄下&#xff1a; 當你運行 npm install --save-dev jest&#xff0c;它會在當前目錄&#xff08;例如 F:\&#xff09;下創建一個 node_modules 文件夾&#xff0c;把 jest 安…

人工智能:農業領域的變革力量

在當今科技飛速發展的時代&#xff0c;人工智能正以前所未有的態勢滲透進各個領域&#xff0c;農業也不例外。想象一下&#xff0c;未來的農田里&#xff0c;農民不再是彎腰勞作的形象&#xff0c;而是坐在高科技的“智能農場”里&#xff0c;悠閑地喝著咖啡&#xff0c;指揮著…

LLM的Deep Research功能:重構人類認知與創新的新范式

在人工智能迅速發展的今天&#xff0c;大語言模型&#xff08;LLM&#xff09;的deep research功能正在成為重構人類認知方式的關鍵力量。 這一突破性的技術進展不僅帶來了工具層面的革新&#xff0c;更深刻地觸及了人類認知能力的本質。 本文將從認知科學的視角出發&#xf…

【Cadence仿真技巧學習筆記】求解65nm庫晶體管參數un, e0, Cox

在設計放大器的第一步就是確定好晶體管參數和直流工作點的選取。通過閱讀文獻&#xff0c;我了解到L波段低噪聲放大器的mos器件最優寬度計算公式為 W o p t . p 3 2 1 ω L C o x R s Q s p W_{opt.p}\frac{3}{2}\frac{1}{\omega LC_{ox}R_{s}Q_{sp}} Wopt.p?23?ωLCox?Rs…