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

徹底搞懂并解決vue-cli4中圖片顯示的問題實現(xiàn)

 更新時間:2020年08月31日 08:32:34   作者:老謝  
這篇文章主要介紹了徹底搞懂并解決vue-cli4中圖片顯示的問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在基于 vue-cli 實際開發(fā)過程中,很多小伙伴都會遇到關(guān)于圖片顯示的困擾,不管怎么設(shè)置,圖片就是顯示不出來,今天我們來詳細說說這個問題。

圖片無法顯示,絕大部門的情況是圖片路徑問題,要搞懂路徑問題,分別有相對路徑與絕對路徑

實際開發(fā)中使用圖片最多的場景有以下三種:

1、手動引入

  <template>
    <img :src="imgurl" />
  </template>
  <script>
    import logo from '../img/logo.png'
    // 或
    const logo = require('../img/logo.png');
    export default{
      data(){
        return {
          imgurl:logo
        }
      }
    }
  </script>

使用require或import方式引入圖片時,引入路徑是相對于當(dāng)前文件路徑的,編譯時webpack會介入并把路徑處理成服務(wù)器絕路徑

2、相對路徑

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

vue-cli 中使用相對路徑時,webpack會自動介入,上面的代碼在編譯時自動變成

<img src="require('../img/logo.png')"

最終在頁面的顯示效果與以上手動引入方式一致

3、絕對路徑

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

使用絕對路徑,首先要了解服務(wù)器根目錄在哪,大家都知道,在 vue-cli 的項目本身自帶一個服務(wù)器的,基于 webpack-dev-server 模塊,根目錄為 public 文件夾,所以,使用 絕對路徑 的方式展示圖片,必須把圖片放到 public 文件夾,這也是最簡單的一種方式,這種方式webpack不會介入,所以最終顯示效果與引入時的代碼一致,代碼如下:

最終顯示效果

4、數(shù)據(jù)中的圖片

 <template>
    <ul>
      <li><img :src="item.imgurl" v-for="item in goodslist" /></li>
    </ul>
  </template>
  <script>
    export default{
      data(){
        return {
          goodslist:[{name:'goods1',imgurl:'../img/goods1.png'},{name:'goods2',imgurl:'../img/goods2.png'},{name:'goods3',imgurl:'../img/goods3.png'},
          ]
        }
      }
    }
  </script>

這種情況應(yīng)該是最常見的(ajax請求數(shù)據(jù)回來,然后遍歷寫入到頁面結(jié)構(gòu)中),這個時候綁定到 src 屬性的是一個變量,無法直接手動 importrequire ,如果直接使用 imgurl 屬性中的路徑, webpack不會介入處理 ,所以以上代碼是無法正常顯示圖片的,解決方法如下:

方法1:遍歷數(shù)據(jù),使用前先手動 require

在前端,模塊的引入默認是不支持動態(tài)引入的(即不支持:require(變量)),如下

 this.goodslist = this.goodslist.map(item=>{
    // 雖然路徑是正確的,但以下方式引入會報`Cannot find module '../assets/logo.png'`
    // item.imgurl = require(item.imgurl);

    // 正確的方式為
    item.imgurl = require('../img'+item.imgurl.replace('../img',''))
    return item;
  })

有小伙伴可能會覺得奇怪,為什么這樣做就可以了,Webpack 在處理動態(tài)名稱模塊名的時候,會直接將能識別的靜態(tài)路徑和路徑下的所有子文件都作為模塊處理,如: require('../img'+imgName) ,能識別到 ../img 目錄,并將該目錄下所有文件當(dāng)做模塊處理,做成一個Map映射以便后面進行匹配,所以能識別到對應(yīng)的文件,其原理是 require.context ,屬性如下:

require.context(directory,useSubdirectories,regExp)

  • directory {String} -讀取文件的路徑(一般為一個目錄)
  • useSubdirectories {Boolean} -是否遍歷文件的子目錄,默認false
  • regExp {RegExp} -匹配文件的正則,默認匹配所有文件

方法返回一個函數(shù)(假設(shè)為fn),傳入圖片路徑(不包含directory的路徑)可得到處理過的圖片對應(yīng)路徑(如:fn('./goods1.png'),) ,上面的代碼等效于

this.goodslist = this.goodslist.map(item=>{
    const fn = require.context('../img',false,/^\./);
    const file = item.replace('../img','.')
    item.imgurl = fn(file);
    return item;
  })

方法2:在數(shù)據(jù)庫端直接使用絕對路徑,并把所需圖片放到 public 目錄中

imgurl的格式為: '/img/goods1.png'

到此這篇關(guān)于徹底搞懂并解決vue-cli4中圖片顯示的問題實現(xiàn)的文章就介紹到這了,更多相關(guān)vue-cli4 圖片顯示 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue實現(xiàn)鼠標移入移出事件代碼實例

    vue實現(xiàn)鼠標移入移出事件代碼實例

    這篇文章主要介紹了vue實現(xiàn)鼠標移入移出事件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • vue.js,ajax渲染頁面的實例

    vue.js,ajax渲染頁面的實例

    下面小編就為大家分享一篇vue.js,ajax渲染頁面的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Vue首評加載速度及白屏?xí)r間優(yōu)化詳解

    Vue首評加載速度及白屏?xí)r間優(yōu)化詳解

    這篇文章主要介紹了vue項目優(yōu)化首評加載速度,以及白屏?xí)r間過久的問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • Element-UI踩坑之Pagination組件的使用

    Element-UI踩坑之Pagination組件的使用

    這篇文章主要介紹了Element-UI踩坑之Pagination組件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • OpenLayer基于vue的封裝使用教程

    OpenLayer基于vue的封裝使用教程

    這篇文章主要介紹了OpenLayer基于vue的封裝使用,openlayer使用的版本是"^6.4.3",引入了mapbox的樣式,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • Vue + Element UI 實現(xiàn)權(quán)限管理系統(tǒng)之菜單功能實現(xiàn)代碼

    Vue + Element UI 實現(xiàn)權(quán)限管理系統(tǒng)之菜單功能實現(xiàn)代碼

    菜單管理是一個對菜單樹結(jié)構(gòu)的增刪改查操作,這篇文章主要介紹了Vue + Element UI 實現(xiàn)權(quán)限管理系統(tǒng)之菜單功能實現(xiàn)代碼,需要的朋友可以參考下
    2022-02-02
  • vue打包后出現(xiàn)空白頁的原因及解決方式詳解

    vue打包后出現(xiàn)空白頁的原因及解決方式詳解

    在項目中很多時候需要用到vue打包成html不需要放在服務(wù)器上就能瀏覽,根據(jù)官網(wǎng)打包出來的html直接打開是顯示空白,下面這篇文章主要給大家介紹了關(guān)于vue打包后出現(xiàn)空白頁的原因及解決方式的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • vue實現(xiàn)動態(tài)路由詳細

    vue實現(xiàn)動態(tài)路由詳細

    我們開發(fā)后臺管理系統(tǒng)過程中,會由不同的人操作系統(tǒng),有admin(管理員)、superAdmin(超管),及各種運營、財務(wù)人員。為了區(qū)別這些人員,會給不同的人分配不一樣的角色來展示不同的菜單,這就必須要通過動態(tài)路由來實現(xiàn)。下面就來介紹vue實現(xiàn)動態(tài)路由,需要的朋友可參考一下
    2021-10-10
  • vue中使用animate.css實現(xiàn)炫酷動畫效果

    vue中使用animate.css實現(xiàn)炫酷動畫效果

    這篇文章主要介紹了vue中使用animate.css實現(xiàn)動畫效果,我們使用它,只需要寫很少的代碼,就可以實現(xiàn)非常炫酷的動畫效果,感興趣的朋友跟隨小編一起看看吧
    2022-04-04
  • 如何本地運行vue?dist文件

    如何本地運行vue?dist文件

    這篇文章主要介紹了如何本地運行vue?dist文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論

定襄县| 滦平县| 永修县| 九龙县| 宜川县| 繁峙县| 寿光市| 德安县| 通州市| 昌平区| 舞阳县| 丰县| 资源县| 黑山县| 桐梓县| 汉川市| 桦甸市| 延长县| 鄂尔多斯市| 涞源县| 上高县| 务川| 五大连池市| 忻州市| 武夷山市| 宝清县| 兴文县| 衡南县| 齐河县| 新巴尔虎左旗| 南溪县| 汤阴县| 讷河市| 大荔县| 洞口县| 肃南| 三台县| 昔阳县| 华池县| 高台县| 奉节县|