1. 程式人生 > >Vue腳手架工程優化之原始碼和圖片壓縮--webpack配置

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基礎優化SElinuxiptables項

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查詢優化NLJBNL

原文地址:https://dev.mysql.com/doc/refman/5.7/en/nested-loop-joins.html 譯文: 8.2.1.6 巢狀迴圈連線演算法 MySQL使用巢狀迴圈演算法或其變體執行表之間的連線。 巢狀迴圈連線(NLJ)演算法 一個簡單的ne

安卓效能優化ActivityFragment通過onSaveInstanceState()儲存恢復資料

Activity和Fragment 都有自己的生命週期,而且很類似.Fragment比Activity多了onAttach()和onCreateView()這些方法.整體它們兩者是一樣的週期,都會經歷從建立檢視( onCreate(),onCreateView(),onSt

React效能優化PureComponent memo使用分析

前言 關於react效能優化,在react 16這個版本,官方推出fiber,在框架層面優化了react效能上面的問題。由於這個太過於龐大,我們今天圍繞子自元件更新策略,從兩個及其微小的方面來談react效能優化。 其主要目的就是防止不必要的子元件渲染更新。 子元件何時更新? 首先我們看個例子

Django ORM效能優化countlen方法的選擇(非常詳細推薦乾貨)

  接下來我將從原始碼層面分情況和應用分析我們在計算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教程MongoDBRobomongo的安裝配置及簡單實戰

一、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的作用: ● 把依賴樹按需

數據庫優化技巧innot 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+,由於一直在實習,沒有時間