最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

  • 存放在 public/ 目錄
  • 存放在 assets/ 目錄
  • 存放在遠(yuǎn)程服務(wù)器
  • 動(dòng)態(tài)拼接圖片路徑

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

1. 引用 public/ 目錄

public/ 目錄下的文件會(huì)被 Vue 直接映射到項(xiàng)目的根路徑 /,無(wú)需 Webpack 處理,適用于:

  • 不會(huì)被打包處理的靜態(tài)資源
  • 圖片 URL 確定,不依賴(lài) Webpack 解析

正確寫(xiě)法

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

錯(cuò)誤寫(xiě)法

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

說(shuō)明: public/ 目錄的內(nèi)容會(huì)被 Vue 直接映射到根路徑 /,所以訪問(wèn) /public/xxx.png 是錯(cuò)誤的

截圖如下:

2. assets/ 目錄

適用場(chǎng)景

assets/ 目錄下的圖片會(huì)被 Vue 通過(guò) Webpack 進(jìn)行打包,適用于:

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

使用 import 方式

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

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

說(shuō)明:

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

適用于靜態(tài)導(dǎo)入,但不適用于動(dòng)態(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>

說(shuō)明:

new URL() 適用于 assets 目錄,支持動(dòng)態(tài)路徑處理

3. 遠(yuǎn)程服務(wù)器

適用場(chǎng)景

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

說(shuō)明:

直接使用絕對(duì) URL 訪問(wèn)遠(yuǎn)程圖片,無(wú)需 Vue 處理

4. Vue Router 動(dòng)態(tài)訪問(wèn)

圖片名稱(chēng)與路由路徑相關(guān)聯(lián),可以使用 computed 計(jì)算屬性自動(dòng)生成圖片路徑

<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()

???????// 計(jì)算 public 目錄下的圖片路徑
const imageSrc = computed(() => {
  const sanitizedPath = route.path.replace(/^\//, '') // 移除開(kāi)頭的 `/`
  return `/${sanitizedPath}.png` // 訪問(wèn) public 目錄
})
</script>

假設(shè) public 目錄結(jié)構(gòu)如下:

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

訪問(wèn) /home 時(shí),圖片路徑為:

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

動(dòng)態(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()

???????// 計(jì)算 public 目錄下的圖片路徑
const imageSrc = computed(() => {
  const sanitizedPath = route.path.replace(/^\//, '') // 移除開(kāi)頭的 `/`
  const lastSegment = sanitizedPath.split('/').pop() // 獲取最后的路徑部分
  return `/${lastSegment}.png` // 訪問(wèn) public 目錄
})
</script>

截圖如下:

5. 總結(jié)

總的來(lái)說(shuō):

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

最佳實(shí)踐:

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

6. 擴(kuò)展(圖片不顯示)

圖片無(wú)法顯示通常是路徑錯(cuò)誤、資源未正確加載或 Webpack/Vite 處理導(dǎo)致的問(wèn)題

圖片不顯示的常見(jiàn)原因

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

1.路徑錯(cuò)誤:引用 public/ 目錄時(shí)仍加 public/ 前綴

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

3.動(dòng)態(tài)路徑問(wèn)題:使用 computed 計(jì)算屬性拼接路徑時(shí)錯(cuò)誤

4.Webpack 處理方式:assets/ 目錄下的圖片會(huì)被 Webpack 處理,不能直接訪問(wèn)

5.圖片格式或大小問(wèn)題:瀏覽器不支持的圖片格式或圖片損壞

路徑錯(cuò)誤這個(gè)要點(diǎn)此處著重分析下

詳細(xì)分析下為何要放在public等路徑下!

public/ 目錄的映射機(jī)制

在 Vue 項(xiàng)目結(jié)構(gòu)中:

my-project/
├── public/
│   ├── manufacturing.png
│   ├── images/
│   │   ├── factory.png
├── src/
│   ├── views/
│   │   ├── Industry.vue
│   ├── assets/
│   │   ├── example.png
│   ├── App.vue

public/manufacturing.png 在構(gòu)建后會(huì)被 Vue 直接映射到:/manufacturing.png

public/images/factory.png 在構(gòu)建后會(huì)變成:/images/factory.png

src/assets/example.png 則會(huì)被 Webpack 處理,并生成動(dòng)態(tài)路徑(如 /assets/example.abcdef.png)

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

可以打開(kāi) http://localhost:5173/manufacturing.png,如果 manufacturing.png 直接顯示,則說(shuō)明它已經(jīng)被映射到根目錄 /,而不需要 /public/manufacturing.png

對(duì)比 public/ 和 src/assets/

存放目錄是否被 Webpack 處理訪問(wèn)方式適用場(chǎng)景
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>

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

相關(guān)文章

  • vue2.x中monaco-editor的使用說(shuō)明

    vue2.x中monaco-editor的使用說(shuō)明

    這篇文章主要介紹了vue2.x中monaco-editor的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vuejs實(shí)現(xiàn)標(biāo)簽選項(xiàng)卡動(dòng)態(tài)更改css樣式的方法

    vuejs實(shí)現(xiàn)標(biāo)簽選項(xiàng)卡動(dòng)態(tài)更改css樣式的方法

    這篇文章主要介紹了vuejs實(shí)現(xiàn)標(biāo)簽選項(xiàng)卡-動(dòng)態(tài)更改css樣式的方法,代碼分為html和js兩部分,需要的朋友可以參考下
    2018-05-05
  • vue中動(dòng)態(tài)路由加載組件,找不到module問(wèn)題及解決

    vue中動(dòng)態(tài)路由加載組件,找不到module問(wèn)題及解決

    這篇文章主要介紹了vue中動(dòng)態(tài)路由加載組件,找不到module問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • el-table渲染慢卡頓問(wèn)題最優(yōu)解決方案

    el-table渲染慢卡頓問(wèn)題最優(yōu)解決方案

    本文主要介紹了el-table渲染慢卡頓問(wèn)題最優(yōu)解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • vue3+bpmn.js基本使用實(shí)例詳解

    vue3+bpmn.js基本使用實(shí)例詳解

    這篇文章主要介紹了vue3+bpmn.js基本使用的相關(guān)資料,通過(guò)實(shí)例講解了如何使用BPMN.js庫(kù)創(chuàng)建一個(gè)流程圖編輯器,從創(chuàng)建容器、引入左側(cè)工具欄和右側(cè)屬性欄到漢化、導(dǎo)出XML和SVG以及導(dǎo)入XML文件的功能實(shí)現(xiàn),每個(gè)步驟都附有效果圖,需要的朋友可以參考下
    2025-05-05
  • 如何解決.vue文件url引用文件的問(wèn)題

    如何解決.vue文件url引用文件的問(wèn)題

    這篇文章主要介紹了解決.vue文件url引用文件的問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 基于Vue實(shí)現(xiàn)文件上傳的幾種實(shí)現(xiàn)方式

    基于Vue實(shí)現(xiàn)文件上傳的幾種實(shí)現(xiàn)方式

    文件上傳是web開(kāi)發(fā)中一個(gè)常見(jiàn)的需求,Vue.js作為一款流行的前端框架,也提供了方便的方法來(lái)實(shí)現(xiàn)文件上傳功能,下面這篇文章主要給大家介紹了關(guān)于基于Vue實(shí)現(xiàn)文件上傳的幾種實(shí)現(xiàn)方式,需要的朋友可以參考下
    2024-03-03
  • el-form-item中表單項(xiàng)label和表單項(xiàng)內(nèi)容換行實(shí)現(xiàn)方法

    el-form-item中表單項(xiàng)label和表單項(xiàng)內(nèi)容換行實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了el-form-item中表單項(xiàng)label和表單項(xiàng)內(nèi)容換行實(shí)現(xiàn)的相關(guān)資料,每個(gè)表單el-form由多個(gè)表單域el-form-item組成,需要的朋友可以參考下
    2023-09-09
  • vue如何使用formData傳遞文件類(lèi)型的數(shù)據(jù)

    vue如何使用formData傳遞文件類(lèi)型的數(shù)據(jù)

    這篇文章主要介紹了vue如何使用formData傳遞文件類(lèi)型的數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • el-date-picker change事件無(wú)響應(yīng)問(wèn)題及解決方案

    el-date-picker change事件無(wú)響應(yīng)問(wèn)題及解決方案

    文章總結(jié):在使用el-date-picker組件時(shí),如果回顯數(shù)據(jù)后change事件無(wú)法監(jiān)聽(tīng)到變化,可以改用input事件,選擇日期后頁(yè)面不更新但數(shù)據(jù)變化,可以在監(jiān)聽(tīng)事件中使用forceUpdate強(qiáng)制刷新視圖
    2025-12-12

最新評(píng)論

舟山市| 浑源县| 梨树县| 青海省| 玉山县| 平远县| 汤阴县| 仁化县| 东安县| 黄石市| 博罗县| 阳西县| 望奎县| 九寨沟县| 正安县| 东安县| 兰州市| 越西县| 喜德县| 仪征市| 青铜峡市| 仁寿县| 开原市| 蓝田县| 蓬安县| 托克托县| 萨迦县| 休宁县| 工布江达县| 内乡县| 平谷区| 仙桃市| 镇坪县| 卫辉市| 玉溪市| 无极县| 姜堰市| 汝城县| 灵武市| 安达市| 宁陵县|