在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  HTML/ 求思路,如何進一步壓縮(優(yōu)化)webpack打包后的項目?

求思路,如何進一步壓縮(優(yōu)化)webpack打包后的項目?

先說一下情況,問題在最后面,歡迎指點,謝謝!

今天發(fā)現(xiàn)一個神器,能夠可視化的幫助分析項目的體積,因為在開發(fā)中我們可能會無意思試用或者嘗試一些第三方組件,但是這個組件并非項目必須或者不可替代,所以在項目結尾(優(yōu)化)階段就特別希望有這么一個工具來幫助分析了~~~

這個神器是一個npm包cross-env,通過npm執(zhí)行:

npm install cross-env --save-dev

然后在package.json配置文件scripts節(jié)中添加

"analyze":"cross-env NODE_ENV=production npm_config_report=true npm run build"

最后在終端輸入命令:

npm run analyze

會自動打開瀏覽器(默認地址:http://127.0.0.1:8888/)展示分析結果,如下圖:
圖片描述

可以一目了然的看到各個模塊的包含關系,最上面的就是項目生成(打包壓縮好)的項目文件

問題:
1、從圖片最上面的tooltip可以看到三種壓縮模式?不知道這么說對不對,因為也是第一個看到這個工具,我想知道怎么實現(xiàn)最后一種壓縮模式呢?也就是Gzipped壓縮模式,可以看到它有巨大優(yōu)勢,體積不到最上面的1/4
2、圖中右邊的three.module.js是一個動畫庫,左邊的Stars.json、Sphere.json動畫效果需要的json數(shù)據(jù)文件,它們只在首頁(首頁包含這個動畫)中需要,在移動端可能不需要這個動畫(項目適配移動、pc端)針對這部分內(nèi)容該如何優(yōu)化呢?
個人思路:能不能把它們壓縮到另外一個文件,然后js判斷是否是移動端,如果是,那么我就不加載這部分內(nèi)容,能實現(xiàn)么?
3、CDN?jquery提供的免費cdn好像也不少,但是這種方式真的把它打包到項目文件里面加載快么?有那些有缺點呢?

回答
編輯回答
陌上花

回答問題之前,有個小紕漏要指出一下
這個bundle的分析結果并不是cross-env包實現(xiàn)的,cross-env起的是跨平臺設置NODE_ENV的作用,bundle的分析結果其實是來自webpack-bundle-analyzer這個webpack插件

回到問題

  1. 分析結果上的第一種和第二種模式其實就是普通未壓縮的代碼一般壓縮過后的代碼,而你說的gzip壓縮一般是在cdn或者靜態(tài)資源服務器上配置的,webpack也有一個插件compression-webpack-plugin,不過我沒有用過
  2. 可以考慮使用webpack的按需加載功能,在應用初始化的時候判斷是否手機,然后再去加載相關的資源
  3. 不能,應該說這里你的理解有問題,webpack好像是有提供打包遠程資源的功能應該是說有相關的插件可以完成類似的功能,不過這個時候cdn的作用就只在你打包的時候會快一點而已,你實際上線的時候你的資源已經(jīng)不是來自cdn了而是來自你打包出來的bundle.一般做法是該怎么打包還是怎么打包,build的時候配置output.publicPath,最后把打包出來的靜態(tài)資源上傳到自己的cdn.還有一個做法是在html里面直接用script標簽引入,然后配置webpack的externals,不過這個時候使用的外部資源是不會被打包的.
2018年2月22日 15:25