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

關(guān)于Vue背景圖打包之后訪問路徑錯誤問題的解決

 更新時間:2017年11月03日 11:20:53   作者:white_g  
本篇文章主要介紹了關(guān)于Vue背景圖打包之后訪問路徑錯誤問題的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

案例環(huán)境

通過vue-cli腳手架創(chuàng)建的vue項目

在項目打包的時候遇到了背景圖片路徑出錯的問題,經(jīng)過谷歌一番,發(fā)現(xiàn)是在配置的時候?qū)D片的限制大小過小造成的

首先,出錯點在url-loader上面。

// url-loader配置
// build/webpck.base.conf.js
{
 test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
 loader: 'url-loader',
 query: {
  limit: 10000,
  name: utils.assetsPath('img/[name].[hash:7].[ext]')
}

這里解釋一下上面這段url-loader配置,test是正則匹配規(guī)則,匹配項目中所有的以正則規(guī)則結(jié)尾的格式的文件,直白點就是所以的圖片(png,jpg,jpeg,gif,svg)。然后用url-loader進行處理。處理也有個規(guī)則如下,當不大于10000B的文件進行base64轉(zhuǎn)碼,就是將圖片轉(zhuǎn)為base64的格式。如果超過10KB的圖片就單獨打包到utils.assetsPath(‘img/[name].[hash:7].[ext]') 這個目錄下(從build/utils.js和config/index.js可以知道這個路徑就是static/img目錄,并且圖片名是進行hash之后的值,根目錄下面沒有static目錄,所以會創(chuàng)建一個static目錄,至于為什么最后沒有看見這個目錄后續(xù)再說),當我們創(chuàng)建了一個這樣的目錄之后,所以的圖片訪問路徑就成了對應(yīng)的static/img/'圖片名'。到這里就可以確定,如果小于10KB的圖片轉(zhuǎn)為base64,大于10KB的圖片已經(jīng)將圖片路徑改為了static/img/'圖片名',然后我們繼續(xù)來理清訪問路徑的事情。

// 目前我們的目錄結(jié)構(gòu)
index.html
static
  |--img
    |--'picname'
  |--css
    |--app.css
  |--js
    |--app.js

我們知道img為html標簽,他的路徑是由index.html開始訪問的,他走static/img/'圖片名'是能正確訪問到圖片的,所以img的路徑?jīng)]問題,然后app.css訪問static/img/'圖片名'是訪問錯誤的,因為在css目錄下并沒有static目錄。這樣就造成了路徑訪問失敗的問題。

解決辦法

1、使用小圖片作為背景圖片(建議):

將小于10KB的圖片作為背景圖片,如果有大于10KB的圖片作為img圖片。

2、修改url-loader的limit值(不建議):

從上面分析可知,當圖片轉(zhuǎn)為base64就沒有路徑錯誤的問題,保證自己的背景圖片都能轉(zhuǎn)為base64就可以防止該錯誤發(fā)生,將limit的值改為你的背景圖最大那一張的值還大一點就行,換算為B的單位

3、將css不要單獨打包出來(不建議):

直接通過css-loader和style-loader打包到j(luò)s中,js自動創(chuàng)建style標簽,這樣,背景圖片的訪問路徑就是通過index.html路徑訪問了,不過該解決方案也不建議。會導(dǎo)致js過大,和圖片過大不建議轉(zhuǎn)base64一個道理。

4、使用絕對路徑的圖片地址路徑(建議)

建議:使用小圖片作為背景圖片,大圖片用img標簽。首先得分清背景圖片和圖片img的一些區(qū)別,就各人理解而言,背景圖片是用來修飾網(wǎng)頁的,與實際內(nèi)容無關(guān)的東西,使用背景圖片。如果與內(nèi)容有關(guān)的東西都應(yīng)該使用img標簽算作網(wǎng)頁結(jié)構(gòu)的內(nèi)容。修飾的圖片盡量的小,也可以使用圖片壓縮等策略減小圖片大小。

不建議:不建議修改limit值的原因是,url-loader的配置是針對整個項目的圖片,修改了limit值也等于讓html中img標簽的圖片也跟著進行了base64的轉(zhuǎn)換,而對于base64的轉(zhuǎn)換的缺點是他會增大圖片原本的體積,如果對大圖進行了轉(zhuǎn)base64會造成你的js文件過大,從而增加了加載js時間過長。

關(guān)于base64

優(yōu)點:base64就是一串字符串碼來表示的圖片,在加載頁面或者js的時候就一并加載過來,減少圖片引用時單獨的一次http請求。了解web端性能優(yōu)化的同學都知道,http請求每次建立都會占用一定的時間,對于小圖請求來說,可能http建立請求的時間比圖片下載本身還長。所以對小圖進行base64轉(zhuǎn)碼是優(yōu)化http請求,保證頁面加速渲染的一種手段。

缺點:base64缺點就是之前提到的,他會增加圖片本身的大小,對小圖片來說,增加大小導(dǎo)致js的請求增長完全能彌補多一個http請求的建立的時長,這種取舍是劃算的??墒菍τ诖髨D來說,這樣的取舍是不劃算的。

舉個例子

例子:(以下數(shù)據(jù)都是隨便模擬,看看思路就行)
假如每次建立http時長為0.1s,網(wǎng)絡(luò)傳輸為100KB/s,每次轉(zhuǎn)base64增加體積為百分之二十;

  1. 一張10KB的圖片通過http請求下載為0.2s,他轉(zhuǎn)為base64之后為12KB,在js下載中,增加了12KB的大小,所以增加0.12S 所以轉(zhuǎn)base64能優(yōu)化0.08s的頁面加載速度;
  2. 一張100KB的圖片通過http請求的速度是1.1s。轉(zhuǎn)base64之后大小為120KB,他會增加js的大小120KB,所以增加加載時間1.2s。這樣一算下來,轉(zhuǎn)為base64之后,并不能優(yōu)化頁面加載速度,反而拖慢了0.1s的加載速度,為不劃算。

思考:

在開發(fā)過程中,處理加載速度之外我們還得考慮并行下載的問題。如果全在一個js中,這個js沒下載完成之前,圖片也是沒有下載的,也就是轉(zhuǎn)base64之后,可以認為js和圖片是串行下載的。而走http請求,圖片是可以和js并行下載的。所以實際上需要更小的圖片才能更劃算

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue退出登錄時清空緩存的實現(xiàn)

    Vue退出登錄時清空緩存的實現(xiàn)

    今天小編就為大家分享一篇Vue退出登錄時清空緩存的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue實現(xiàn)前端展示后端實時日志帶顏色示例詳解

    vue實現(xiàn)前端展示后端實時日志帶顏色示例詳解

    這篇文章主要為大家介紹了vue實現(xiàn)前端展示后端實時日志帶顏色示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Vue3.0數(shù)據(jù)響應(yīng)式原理詳解

    Vue3.0數(shù)據(jù)響應(yīng)式原理詳解

    這篇文章主要介紹了Vue3.0數(shù)據(jù)響應(yīng)式原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • VueX安裝及使用基礎(chǔ)教程

    VueX安裝及使用基礎(chǔ)教程

    這篇文章介紹了VueX安裝及使用基礎(chǔ)教程,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • 淺談vue實現(xiàn)雙向事件綁定v-model的原理

    淺談vue實現(xiàn)雙向事件綁定v-model的原理

    vue使用v-model實現(xiàn)數(shù)據(jù)的雙向綁定,它會根據(jù)控件類型自動選取正確的方法來更新元素,本文就詳細的介紹一下原理,感興趣的可以了解一下
    2021-08-08
  • vue中七牛插件使用的實例代碼

    vue中七牛插件使用的實例代碼

    本篇文章主要介紹了vue中七牛插件使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 前端構(gòu)建工具Webpack、Vite區(qū)別有哪些

    前端構(gòu)建工具Webpack、Vite區(qū)別有哪些

    Webpack和Vite是兩種主流的前端構(gòu)建工具,它們在功能、性能和使用場景上有所不同,Webpack提供豐富的功能和配置,適合大型復(fù)雜項目,但可能導(dǎo)致啟動和構(gòu)建速度較慢,Vite基于ES模塊,支持快速的熱替換,適合小型或中等項目,需要的朋友可以參考下
    2024-10-10
  • vue組件間通信解析

    vue組件間通信解析

    這篇文章主要為大家詳細介紹了vue組件間通信解析,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Vue獲取input值的四種常用方法

    Vue獲取input值的四種常用方法

    Vue是一種流行的Web開發(fā)框架,它提供了一個雙向綁定的語法糖。在Vue中,我們可以很容易地獲取頁面上的數(shù)據(jù),并且可以實時的響應(yīng)其變化,這篇文章主要給大家介紹了關(guān)于Vue獲取input值的四種常用方法,需要的朋友可以參考下
    2023-09-09
  • vue之el-tree懶加載數(shù)據(jù)并且實現(xiàn)樹的過濾問題

    vue之el-tree懶加載數(shù)據(jù)并且實現(xiàn)樹的過濾問題

    這篇文章主要介紹了vue之el-tree懶加載數(shù)據(jù)并且實現(xiàn)樹的過濾問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評論

凌云县| 福泉市| 阿巴嘎旗| 广灵县| 清涧县| 同仁县| 醴陵市| 庆安县| 武鸣县| 喀什市| 芦山县| 沧州市| 卫辉市| 梓潼县| 大足县| 海南省| 蓬安县| 临泉县| 大方县| 山西省| 岳阳县| 南澳县| 贵定县| 上高县| 项城市| 奉新县| 民县| 石首市| 南昌市| 会理县| 新巴尔虎右旗| 宜丰县| 壶关县| 简阳市| 凤凰县| 新丰县| 西城区| 罗甸县| 江山市| 林西县| 丹凤县|