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