欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue中圖片的引用方式的區(qū)別詳解

 更新時間:2025年02月06日 08:55:54   作者:碼農(nóng)研究僧  
在?Vue?開發(fā)中,圖片的引用方式主要取決于圖片存放的位置,一般有四種常用的存放方式,本文將詳細分析這些方式的區(qū)別,并提供完整的代碼示例,希望對大家有所幫助

前言

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

  • 存放在 public/ 目錄
  • 存放在 assets/ 目錄
  • 存放在遠程服務器
  • 動態(tài)拼接圖片路徑

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

1. 引用 public/ 目錄

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

  • 不會被打包處理的靜態(tài)資源
  • 圖片 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 進行打包,適用于:

  • 存放在 src/assets/ 目錄
  • 需要 Webpack 處理,如哈希命名
  • 圖片路徑動態(tài)變化

使用 import 方式

<script setup>
import imageUrl from '@/assets/images/manufacturing.png'
</script>

<template>
  <div>
    <img :src="imageUrl" alt="Manufacturing Image" />
  </div>
</template>

說明:

import 方式會將圖片路徑解析為 Webpack 處理的 URL

適用于靜態(tài)導入,但不適用于動態(tài)路徑拼接

使用 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 目錄,支持動態(tài)路徑處理

3. 遠程服務器

適用場景

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

說明:

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

4. Vue Router 動態(tài)訪問

圖片名稱與路由路徑相關聯(lián),可以使用 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" />

動態(tài)路由的方式有所差異:

<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" />
動態(tài)路由根據(jù) Vue Router動態(tài)生成圖片路徑computed 計算屬性 :src=“computedPath”

最佳實踐:

  • public/ 目錄適用于靜態(tài)資源,直接使用 /filename.png 訪問
  • assets/ 目錄適用于 Webpack 處理,使用 import 或 new URL()
  • 外部圖片直接使用絕對 URL
  • 動態(tài)圖片路徑可結合 Vue Router 計算生成

6. 擴展(圖片不顯示)

圖片無法顯示通常是路徑錯誤、資源未正確加載或 Webpack/Vite 處理導致的問題

圖片不顯示的常見原因

在 Vue 3 + Vite(或 Webpack)項目中,圖片可能無法顯示的常見原因包括:

1.路徑錯誤:引用 public/ 目錄時仍加 public/ 前綴

2.資源未正確加載:如 src/assets/ 目錄下的圖片未被 Webpack 處理

3.動態(tài)路徑問題:使用 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 處理,并生成動態(tài)路徑(如 /assets/example.abcdef.png)

如何證明 public/ 目錄直接映射到根路徑 /?

可以打開 http://localhost:5173/manufacturing.png,如果 manufacturing.png 直接顯示,則說明它已經(jīng)被映射到根目錄 /,而不需要 /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>

到此這篇關于Vue中圖片的引用方式的區(qū)別詳解的文章就介紹到這了,更多相關Vue圖片引用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue全局使用axios的操作

    vue全局使用axios的操作

    這篇文章主要介紹了vue全局使用axios的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue等框架對Tabs、Moda等設置固定高度后沒有滾動條問題

    vue等框架對Tabs、Moda等設置固定高度后沒有滾動條問題

    這篇文章主要介紹了vue等框架對Tabs、Moda等設置固定高度后沒有滾動條問題,解決方法很簡單,只需要一行簡短代碼就可以解決,下面小編給大家詳細講解,需要的朋友可以參考下
    2023-05-05
  • 解決element-ui table設置列fixed時X軸滾動條無法拖動問題

    解決element-ui table設置列fixed時X軸滾動條無法拖動問題

    這篇文章主要介紹了解決element-ui table設置列fixed時X軸滾動條無法拖動問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue學習筆記之Vue中css動畫原理簡單示例

    vue學習筆記之Vue中css動畫原理簡單示例

    這篇文章主要介紹了vue學習筆記之Vue中css動畫原理,結合簡單實例形式分析了Vue中css樣式變換動畫效果實現(xiàn)原理與相關操作技巧,需要的朋友可以參考下
    2020-02-02
  • vue 項目軟鍵盤回車觸發(fā)搜索事件

    vue 項目軟鍵盤回車觸發(fā)搜索事件

    這篇文章主要介紹了vue 項目軟鍵盤回車觸發(fā)搜索事件,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • nuxt框架中路由鑒權之Koa和Session的用法

    nuxt框架中路由鑒權之Koa和Session的用法

    后臺管理頁面需要有登錄系統(tǒng),所以考慮做一下路由鑒權,這篇文章主要介紹了nuxt框架中路由鑒權之Koa和Session的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • vue3學習筆記之自定義組件舉例

    vue3學習筆記之自定義組件舉例

    這篇文章主要給大家介紹了關于vue3學習筆記之自定義組件的相關資料,組件系統(tǒng)是Vue.js其中一個重要的概念,它提供了一種抽象,讓我們可以使用獨立可復用的小組件來構建大型應用,需要的朋友可以參考下
    2023-08-08
  • 解決element?ui?cascader?動態(tài)加載回顯問題

    解決element?ui?cascader?動態(tài)加載回顯問題

    這篇文章主要介紹了element?ui?cascader?動態(tài)加載回顯問題解決方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • vue實現(xiàn)button按鈕的重復點擊指令方式

    vue實現(xiàn)button按鈕的重復點擊指令方式

    這篇文章主要介紹了vue實現(xiàn)button按鈕的重復點擊指令方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 使用vue-cli(vue腳手架)快速搭建項目的方法

    使用vue-cli(vue腳手架)快速搭建項目的方法

    本篇文章主要介紹了使用vue-cli(vue腳手架)快速搭建項目的方法,vue-cli 是一個官方發(fā)布 vue.js 項目腳手架,使用 vue-cli 可以快速創(chuàng)建 vue 項目,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評論