成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

vue單文件中引用路徑的處理

OnlyLing / 730人閱讀

摘要:原文地址單文件中引用路徑的處理如有錯(cuò)誤,歡迎指正單文件的開(kāi)發(fā)過(guò)程中,在單文件模版中可能會(huì)涉及到文件路徑的處理,比如中的的處理等。的文檔中的資源路徑處理一節(jié)給出了是如何處理模版中的資源路徑的。

原文地址:vue單文件中引用路徑的處理
如有錯(cuò)誤,歡迎指正!

vue單文件的開(kāi)發(fā)過(guò)程中,在單文件模版中可能會(huì)涉及到文件路徑的處理,比如 , style 中的 background 的處理等。下文中討論了幾種不同場(chǎng)景下的 的 src 處理,解釋了在使用 vue+webpack 的開(kāi)發(fā)過(guò)程中如何正確的引用靜態(tài)資源(比如圖片的處理)。

如下所示,在下面的單文件組件中給出了不同場(chǎng)景下引用圖片路徑的示例(圖片靜態(tài)資源存放在 src/assets/small.png ):



上述代碼片段給出了四種場(chǎng)景下使用 img 標(biāo)簽在 vue 單文件組件中引用圖片資源的方式。當(dāng)然,這四種方式并不是都可以正確的加載圖片資源。

情況一:

在模版中直接以相對(duì)路徑綁定到src屬性,這種情況下可以正確加載圖片資源。我們知道,在 webpack 處理 vue 單文件組件的過(guò)程中,主要是 vue-loader 來(lái)做針對(duì) *.vue 文件的處理。vue-loader 的文檔中 vue-loader 的資源路徑處理一節(jié)給出了 vue-loader 是如何處理模版中的資源路徑的。比如: , background: url(), @import等都將被作為模塊依賴(lài)處理。也就是說(shuō)這幾種情況下 vue-loader 自動(dòng)處理路徑的資源引用以及最后的路徑替換。其中對(duì) img 的處理如下:

將會(huì)被 vue 模版編譯器編譯為:

createElement("img", { attrs: { src: require("./logo.png") }})

這也就解釋了為什么情況一可以正確顯示圖片內(nèi)容,是因?yàn)?vue-loader 自動(dòng)幫我們做了資源引入以及路徑替換問(wèn)題。

情況二:

在模版中給 src 屬性綁定了相對(duì)路徑字符串變量,這種情況下圖片無(wú)法正常顯示。原因在于 vue-loader 無(wú)法識(shí)別變量是否為路徑字符串,因此也就不存在 vue-loader 自動(dòng)引入資源以及路徑替換的問(wèn)題了。這種情況下,編譯后的模版依然為相對(duì)路徑字符串。很顯然,沒(méi)有相應(yīng)的資源引入以及錯(cuò)誤的路徑,是無(wú)法正確的展示圖片的。

情況三:

很多人在相對(duì)路徑無(wú)法正確顯示的同時(shí),嘗試進(jìn)行了使用絕對(duì)路徑變量引入,顯然這種情況下也是不能顯示圖片的,因?yàn)閳D片資源未被手動(dòng)引入。注意: 很多同學(xué)嘗試手動(dòng)引入資源然后按照絕對(duì)路徑變量綁定 src,發(fā)現(xiàn) dist/static/img/ 路徑下確實(shí)有了被引用的資源,但是 vue-cli webpack 模版中 url-loader 對(duì)于 img 類(lèi)型的文件在加載時(shí),添加了 hash 值的處理。在這種情況下,即使我們綁定的是絕對(duì)路徑變量,因?yàn)闊o(wú)法正確匹配被添加 hash 值的圖片文件,我們還是無(wú)法正確的引用到圖片。在這種需要手動(dòng)引入圖片的情況下,推薦情況四的處理方式。

情況四:

在模版中 src 屬性直接綁定手動(dòng)引入的圖片資源,這種情況下可以正確的顯示圖片。這樣的方式也是 vue-loader 在處理自動(dòng)引入路徑對(duì)應(yīng)的資源時(shí)使用的辦法。

綜上,在 vue 單文件組件中,正確的顯示一個(gè)圖片的關(guān)鍵:

該圖片資源被 require 或 import ,即會(huì)被 webpack 的 url-loader 處理到最后的目錄中

img src 屬性需要被替換為最后的圖片資源路徑

以上兩點(diǎn)缺一不可。情況一以及情況四最后之所以能夠正確的顯示了圖片,就在于兩種情況下滿(mǎn)足了以上兩個(gè)條件。情況一中 vue-loader 自動(dòng)幫我們做了這個(gè)事情,情況四我們手動(dòng)做了這個(gè)事情。

開(kāi)發(fā)中可能遇到的問(wèn)題:

開(kāi)發(fā)中可能會(huì)遇到循環(huán)渲染一個(gè)圖片列表的場(chǎng)景,根據(jù)上面的總結(jié),我們可以構(gòu)造一個(gè)圖片信息對(duì)象數(shù)組,比如:




這樣我們就可以完美的顯示我們循環(huán)渲染的圖片了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90719.html

相關(guān)文章

  • vue+webpack搭建文件應(yīng)用和多文件應(yīng)用webpack.config.js寫(xiě)法區(qū)別

    摘要:而多頁(yè)面應(yīng)用的入口文件是所有需要用到的頁(yè)面。單文件應(yīng)用和多文件應(yīng)用上,是大同小異的,區(qū)別就討論到這里了。 1.前言 這幾天,都遇到過(guò)有人問(wèn)過(guò)相似的問(wèn)題,就是用vue和webpack搭建目錄的時(shí)候,怎么把單頁(yè)面應(yīng)用的配置改成多文件應(yīng)用,或者是怎么把多文件應(yīng)用的配置改成單文件應(yīng)用。這個(gè)情況,我之前有處理過(guò),公司的同事教過(guò)我,我就針對(duì)這個(gè)情況寫(xiě)下此篇文章。各位如果覺(jué)得我哪里寫(xiě)得不夠好,寫(xiě)錯(cuò)了...

    seal_de 評(píng)論0 收藏0
  • 實(shí)戰(zhàn)Vue簡(jiǎn)易項(xiàng)目(4)定義視圖

    摘要:是中的條件指令,根據(jù)返回的布爾值動(dòng)態(tài)添加或移除元素。傳值方式我是標(biāo)題需要在中定義函數(shù)傳的值為字符串,不需要前綴傳的值為非字符串?dāng)?shù)字布爾值函數(shù)數(shù)組對(duì)象,為前綴,值為表達(dá)式計(jì)算結(jié)果在程序中,如引用的值。為該組件內(nèi),元素綁定的事件處理函數(shù)。 視圖 包含內(nèi)容#NavigationBar、#TabBar、#MainContext; 為什么#NavigationBar、#TabBar分在Layou...

    LeoHsiun 評(píng)論0 收藏0
  • VueJS 開(kāi)發(fā)常見(jiàn)問(wèn)題集錦

    摘要:由于公司的前端開(kāi)始轉(zhuǎn)向,最近開(kāi)始使用這個(gè)框架進(jìn)行開(kāi)發(fā),遇到一些問(wèn)題記錄下來(lái),以備后用。查了一下,發(fā)現(xiàn)可能是打包或是資源引用問(wèn)題,目前該問(wèn)題還未被妥善處理,需要通過(guò)一些來(lái)解決這個(gè)問(wèn)題。為解決這個(gè)問(wèn)題,中提供了方法對(duì)象受現(xiàn) showImg(https://segmentfault.com/img/bVFgor?w=1280&h=720); 由于公司的前端開(kāi)始轉(zhuǎn)向 VueJS,最近開(kāi)始使用這...

    hedge_hog 評(píng)論0 收藏0
  • 前端框架_Vue

    摘要:如果沒(méi)有文件,則讀取文件夾下的或者。如果都都找不到,拋出錯(cuò)誤。 JS表達(dá)式 函數(shù)(方法)調(diào)用表達(dá)式 test() //函數(shù)調(diào)用表達(dá)式 屬性調(diào)用表達(dá)式 var obj = {name:wt}; var arr = [123,bai]; obj.name //屬性調(diào)用表達(dá)式 arr[0] //屬性調(diào)用表達(dá)式 變量(常量)調(diào)用表達(dá)式 let name = wutao; name ...

    qieangel2013 評(píng)論0 收藏0
  • Vue-項(xiàng)目從本地搭建到線上部署(wǒ shì biaō tí dǎng)

    摘要:放置在目錄下或通過(guò)絕對(duì)路徑被引用。對(duì)于相關(guān)來(lái)說(shuō),我們推薦使用而不是直接鏈?zhǔn)街付āT诓桓呐渲梦募那闆r下,前端頁(yè)面迭代發(fā)布,不需要重啟服務(wù)。 作者:gauseen 0. 關(guān)于 Vuejs 簡(jiǎn)介:Vue (讀音 /vju?/,類(lèi)似于 view) 是一套用于構(gòu)建用戶(hù)界面的漸進(jìn)式框架,易用、靈活、高效。 生態(tài)系統(tǒng) 項(xiàng)目 介紹 awesome-vue Vue.js 相關(guān)很棒的...

    Arno 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<