Vue項(xiàng)目中v-bind動態(tài)綁定src路徑不成功問題及解決
v-bind動態(tài)綁定src路徑不成功
問題:在做Vue項(xiàng)目的時(shí)候,由于項(xiàng)目需求,需要動態(tài)綁定img的src時(shí),突然發(fā)現(xiàn)如果說是直接請求后臺接口的圖片地址就能顯示,
但是直接動態(tài)綁定img的src的圖片的相對路徑或者是絕對路徑的時(shí)候,圖片不能顯示。
解決方案 1
當(dāng)在給數(shù)據(jù)MyimgSrc 設(shè)置絕對路徑或者是相對路徑時(shí)應(yīng)該使用require引入才能成功
currentSrc : require("@/assets/1.png")
解決方案 2
直接導(dǎo)入
<img :src="url"/> import url from '../../assets/logo.png' data { url, }
解決方案 3
把圖片放到static 文件夾里面 就能直接引入
總結(jié):當(dāng)動態(tài)綁定img的src的時(shí)候,vue數(shù)據(jù)綁定圖片的相對路徑或者是絕對路徑的時(shí)候,需要require路徑。
vue踩坑--動態(tài)v-for圖片路徑問題
問題描述:想要用v-for來動態(tài)生成圖片路徑
<div v-for="item in 40"> <img :src="'./../../assets/img/' + item + '.jpg'" alt=""> </div>
打包后的路徑是這樣的
打包后的資源目錄是這樣的
問題所在
上面樣寫是不行的,你會發(fā)現(xiàn)圖片在頁面中并沒有正確顯示。從上面的圖片可以看出,打包后的圖片路徑明顯不對。
這是因?yàn)閣ebpack并沒有對我們拼接的路徑進(jìn)行解析,圖片也沒有被引用到打包后的目錄(如果有的話應(yīng)該是40張)
vue-cli文檔的HTML和靜態(tài)資源處理里是這么描述的
靜態(tài)資源可以通過兩種方式進(jìn)行處理:
在 JavaScript 被導(dǎo)入或在 template/CSS 中通過相對路徑被引用。這類引用會被 webpack 處理。
放置在 public 目錄下或通過絕對路徑被引用。這類資源將會直接被拷貝,而不會經(jīng)過 webpack 的處理。
從相對路徑導(dǎo)入
當(dāng)你在 JavaScript、CSS 或 *.vue 文件中使用相對路徑 (必須以 . 開頭) 引用一個(gè)靜態(tài)資源時(shí),該資源將會被包含進(jìn)入 webpack 的依賴圖中。在其編譯過程中,所有諸如 <img src="…">、background: url(…) 和 CSS @import 的資源 URL 都會被解析為一個(gè)模塊依賴。
例如,url(./image.png) 會被翻譯為 require(’./image.png’),
而:<img src="./image.png">將會被編譯到:h(‘img’, { attrs: { src: require(’./image.png’) }})
那在上面里我們也是寫的相對路徑呀,為什么沒有被編譯呢?
這是因?yàn)樵诰幾g時(shí)圖片的url還沒有拼接好,{{}}表達(dá)式只會在渲染到頁面上的時(shí)候執(zhí)行,所以編譯的時(shí)候src還是’./…/…/assets/img/’ + item + ‘.jpg’,這樣的話webpack不認(rèn)為這是一個(gè)模塊,所以直接不處理,圖片也就沒有被編譯。
解決辦法
把圖片作為資源引入,在圖片的url加上require,變成require(url)。
實(shí)現(xiàn)代碼
<template> <div v-for="item in images"> <img :src="item" alt=""> </div> </template> <script> export default { name: "", data: function () { return { changeDirection: true, images:[ require('./../../assets/img/0.jpg'), ...... require('./../../assets/img/40.jpg'), ] } } } </script>
不會吧不會吧,這么多圖片不會真有人一個(gè)個(gè)寫吧?多圖片應(yīng)該這樣寫
<script> export default { name: "", data: function () { return { changeDirection: true, images:(function () { // 導(dǎo)入圖片模塊 let fileArr = []; for (let i = 0; i < 40; i++) { fileArr[i] = require('./../../assets/img/' + i + '.jpg'); } return fileArr; })(), } } } </script>
修改后打包后的路徑
修改后打包后的資源目錄
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue項(xiàng)目中引入外部文件的方法(css、js、less)
本篇文章主要介紹了Vue項(xiàng)目中引入外部文件的方法(css、js、less),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-07-07Vue.js實(shí)現(xiàn)文件上傳壓縮優(yōu)化處理技巧
這篇文章主要介紹了Vue.js實(shí)現(xiàn)文件上傳壓縮優(yōu)化處理,本文給大家介紹兩種方法一種是借助canvas的封裝的文件壓縮上傳,二是使用compressorjs第三方插件實(shí)現(xiàn),本文給大家介紹的非常詳細(xì)需要的朋友可以參考下2022-11-11vue結(jié)合el-upload實(shí)現(xiàn)騰訊云視頻上傳功能
這篇文章主要介紹了vue結(jié)合el-upload實(shí)現(xiàn)騰訊云視頻上傳功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Vue數(shù)組響應(yīng)式操作及高階函數(shù)使用代碼詳解
這篇文章主要介紹了Vue數(shù)組響應(yīng)式操作及高階函數(shù)使用代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08教你在vue項(xiàng)目中使用svg圖標(biāo)的方法
本文給大家介紹了在vue項(xiàng)目中使用svg圖標(biāo)的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-04-04Vue+Element實(shí)現(xiàn)頁面生成快照截圖
這篇文章主要為大家詳細(xì)介紹了Vue如何結(jié)合Element實(shí)現(xiàn)頁面生成快照截圖功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03vuex中遇到的坑,vuex數(shù)據(jù)改變,組件中頁面不渲染操作
這篇文章主要介紹了vuex中遇到的坑,vuex數(shù)據(jù)改變,組件中頁面不渲染操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11