Vue腳手架工程優化之原始碼和圖片壓縮--webpack配置
在前端做載入速度優化的方案中,有一個是對原始碼和圖片大小進行壓縮。顧名思義就是將原始碼去掉空格、註釋、換行等生產環境中的無用資訊。圖片在不影響效果的前提下進行壓縮。從而減小圖片大小,頁面在載入的時候由於載入的資源較小,實現更快載入。公司的專案是通過Vue的腳手架工具搭建的。所以用到了webpack打包工具,在我未進行優化的情況下,釋出的原始碼包大小為13.6m,進過處理之後,原始碼大小從原先的13.6m減小到現在的4.23m,優化前是優化後的三倍多一點,具體我們來看看是如何做到的。
首先我們看看通過vuejs腳手架工具生成專案配置檔案config/index.js檔案,通過看配置我們可以看到這樣一項配置,
productionSourceMap: true
這個配置的作用用於是否生成source map檔案。當配置為true時,在打包的過程中會生成source map檔案,從而幫助除錯程式碼。但是在我們釋出程式碼的時候是已經除錯好的程式碼,所以生成source map意義不大,於是我們將此處改為false。productionSourceMap: false,
為true時我們生成的程式碼目錄如下圖,通過下圖可以看見有.map為字尾的檔案。
再看看為false後生成的目錄
通過設定為true和false我們可以清楚的看到生成之後的檔案區別,為false時少了.map檔案,而配置中預設為true,所以在打包釋出時可以將此處設定為false,從而減少包的大小。我在優化的過程走到這一步,包的大小從原來的13.6減少到了8.xm。
是否看到此處疑惑距離4.23m還有一定的距離?不要著急,下面我們來看看怎麼對圖片進行優化。通過webpack構建的專案,我們在頁面中之所以能夠正確的引用到圖片,這一切都要依託於webpack中的loader,通過檢視build下的webpack.base.conf.js檔案我們可以看到裡面配置了各種各樣的loader,其中有一個url-loader,這個是我們關心的重點。先看一下優化配置部分
預設配置:
{ test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, loader: 'url-loader', options: { limit: 10000, name: utils.assetsPath('img/[name].[hash:7].[ext]') } }
修改後的配置:
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: ['url-loader?limit=10000&name='+utils.assetsPath('img/[name].[hash:7].[ext]'),
'image-webpack-loader'
]
}
通過修改後的配置和預設配置對比,我們發現修改後的url-loader少了options配置且loader的值為一個數組,而將原本配置在options中的引數以我們常見的url引數的方式配置到了url-loader後面,這個地方實際上是同樣的效果。在loader中還有一個image-webpack-loader配置,這個loader就是用於圖片優化的核心,用於壓縮圖片大小。這個地方還有個注意點就是陣列中loader的順序,即最開始的圖片處理是由url-loader先處理還是image-webpack-loader處理?url-loader用於將引用的圖片正確的引用,而image-webpack-loader用於壓縮圖片大小,我們設想的是先壓縮圖片大小,然後再引用。所以配置順序是url-loader在前,image-webpack-loader在後,因為配置在後面的loader先處理,再交由配置在當前處理的loader之前的loader處理。
好了,通過這兩步的優化,我就成功的將編譯打包後的原始碼從13.6m減小到了4.23m,如果你也有同樣的需求,趕緊試試吧!
注:我這裡面提到的配置檔案為通過vue腳手架工具生成的webpack專案,至於其他webpack專案,也是可行的,修改相應的配置即可。
相關推薦
Vue腳手架工程優化之原始碼和圖片壓縮--webpack配置
在前端做載入速度優化的方案中,有一個是對原始碼和圖片大小進行壓縮。顧名思義就是將原始碼去掉空格、註釋、換行等生產環境中的無用資訊。圖片在不影響效果的前提下進行壓縮。從而減小圖片大小,頁面在載入的時候由於載入的資源較小,實現更快載入。公司的專案是通過Vue的腳手架工具搭
Linux基礎優化之SElinux和iptables項
linux基礎優化版權聲明: ########################################################################### 本文的所有內容均來自作者劉春凱的學習總結,未經本人許可,禁止私自轉發及使用。 QQ:1151887353 E-mail:[ema
vue打包體積優化之旅
文檔 .org out jquer ntp comm 代碼 pre image webpack 與 vue 在使用vue開發時,遇到打包後單個文件太大,因而需要分包,不然加載時間太久。雖然盡可能減少請求次數,但是單個包太大也不是好事 思路 組件按需加載 vue-rou
vue項目優化之路由懶加載
路由 登錄頁面 login pre span col res class read { path: ‘/login‘, name: ‘登錄頁面‘, hidden: true, meta: { title: ‘Readme‘, icon:
前端性能優化之重排和重繪
doc 重復 立即執行 selector add 顯示與隱藏 one 改變樣式 ref 前言,最近利用碎片時間拜讀了一下尼古拉斯的另一巨作《高性能JavaScript》,今天寫的文章從“老生常談”的頁面重繪和重排入手,去探究這兩個概念在頁面性能提升上的作用。 一.重排 &a
前端效能優化之重排和重繪
前言,最近利用碎片時間拜讀了一下尼古拉斯的另一鉅作《高效能JavaScript》,今天寫的文章從“老生常談”的頁面重繪和重排入手,去探究這兩個概念在頁面效能提升上的作用。 一.重排 & 重繪 有經驗的大佬對這個概念一定不會陌生,“瀏覽器輸入URL發生了什麼”。估計大家已經爛熟於
java圖片之圖片擷取和圖片壓縮
/** * 圖片壓縮 * @param filePath 原檔案路徑 * @param w 壓縮後寬度 * @param h 壓縮後高度 * @return */ public static String imgCompress(String filePath, int w,
MySQL查詢優化之NLJ和BNL
原文地址:https://dev.mysql.com/doc/refman/5.7/en/nested-loop-joins.html 譯文: 8.2.1.6 巢狀迴圈連線演算法 MySQL使用巢狀迴圈演算法或其變體執行表之間的連線。 巢狀迴圈連線(NLJ)演算法 一個簡單的ne
安卓效能優化之Activity和Fragment通過onSaveInstanceState()儲存和恢復資料
Activity和Fragment 都有自己的生命週期,而且很類似.Fragment比Activity多了onAttach()和onCreateView()這些方法.整體它們兩者是一樣的週期,都會經歷從建立檢視( onCreate(),onCreateView(),onSt
React效能優化之PureComponent 和 memo使用分析
前言 關於react效能優化,在react 16這個版本,官方推出fiber,在框架層面優化了react效能上面的問題。由於這個太過於龐大,我們今天圍繞子自元件更新策略,從兩個及其微小的方面來談react效能優化。 其主要目的就是防止不必要的子元件渲染更新。 子元件何時更新? 首先我們看個例子
Django ORM效能優化之count和len方法的選擇(非常詳細推薦乾貨)
接下來我將從原始碼層面分情況和應用分析我們在計算queryset資料集時是用orm的count函式計算長度還是用len函式計算資料集長度。 首先,我們知道ORM查詢queryset資料集是惰性查詢的,只有使用到資料集時,ORM才會真正去執行查詢語句,然後ORM會把查詢到的資料集快取到記憶
複習電商筆記-14-Nginx動靜分離和圖片回顯配置
*Nginx動靜分離 Nginx解析圖片靜態資源。 注意:如果按下面方法修改後依然報這個錯誤,則換瀏覽器測試。chrome有的版本js相容不夠好。(chrome版本 43.0.2357.124 m正確) 優化:靜態資源儘量不要走應用伺服器,而直接
Java之~ 上傳 圖片壓縮,圖片壓縮,圖片旋轉方法工具類
package com.javajy.util; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Point; import jav
MongoDB教程之MongoDB和Robomongo的安裝配置及簡單實戰
一、MongoDB 1、下載地址 2、安裝 解壓安裝包,選擇自定義“Custom”修改安裝路徑為D:\Program Files\MongoDB,然後點選Next直到安裝結束。 3、配置 3-1、建立資料庫檔案存放位置 新建MongoDB的子資料
專案實戰之中小網站圖片壓縮技術
接著上一篇專案實戰之中小網站資料快取的設計與實現 ,我們繼續討論在鄰水專案中其他對於中小網站要用到的技術。 由於我們的專案伺服器空間有限,如果每次上傳圖片都大於1M那上傳幾張圖片,空間就滿了,而且訪問速度也慢。我們採取圖片壓縮技術,在首頁展示的時候進行深壓縮處理,對文章裡
基於vue + axios + lrz.js 微信端圖片壓縮上傳
業務場景 微信端專案是基於Vux + Axios構建的,關於圖片上傳的業務場景有以下幾點需求: 1、單張圖片上傳(如個人頭像,實名認證等業務) 2、多張圖片上傳(如某類工單記錄) 3、上傳圖片時期望能按指定尺寸壓縮處理 4、上傳圖片可以從相簿中選擇或者直接拍照 遇到的坑 採用微信JSSDK上傳圖片 在之前開發
腳手架vue-cli系列三:vue-cli工程webpack的作用和特點
Vue專案開發過程中,會因為很多不同的實際運用需求不斷地對webpack配置進行修改,在此之前,我們需要對webpack有一個基本的認識,瞭解它到底能為我們做些什麼 webpack是一個模組打包的工具,它的作用是把互相依賴的模組處理成靜態資源,如下圖所示。. webpack的作用: ● 把依賴樹按需
數據庫優化技巧之in和not in
寫法 exists art null data class -s ack size 在編寫SQL語句時,假設要實現一張表有而另外一張表沒有的數據時。 通常第一直覺的寫法是: select * from table1 where table1.id not in(s
Android異步載入學習筆記之四:利用緩存優化網絡載入圖片及ListView載入優化
角度 thread 下午 出發 easy code cat height back 假設不做不論什麽處理。直接用網絡載入圖片在網速快的情況下可能沒什麽不好的感覺。可是假設使用移動流量或是網絡不好的時候。問題就來了,要麽用戶會抱怨流量使用太多。要麽抱怨圖
vue-chat項目之重構與體驗優化
iss ror 渲染 translate 項目 基本 local .com eai 前言 vue-chat 也就是我的幾個月之前寫的一個基於vue的實時聊天項目,到目前為止已經快滿400star了,註冊量也已經超過了1700+,消息量達2000+,由於一直在實習,沒有時間