Vue筆記八:多頁面打包框架(mpa)

Vue筆記八:多頁面打包框架(mpa)

該文章已經(jīng)過時,請移步Vue筆記十:Vue-cli3.0

我記得去年很多人看了我《用Webpack構(gòu)建Vue》一篇文章,但是因為webpack和vue升級速度很快,那文章很快就過時了。學(xué)習(xí)vue最好的教材莫過于vue-cli直接生成的單頁面項目??上У氖撬贿^是一個單頁面的項目,在我們的實際生產(chǎn)環(huán)境中,往往都是較為分散的頁面,為的是保證項目的解耦。

餓了么的 PWA 升級實踐正講到餓了么的超大型SPA如何解耦成MPA的過程。

多頁面腳手架

github源碼在此,記得點星:
https://github.com/brandonxiang/mpa

特點

  • 多個入口
  • DllReferencePlugin 利用控制多頁面常用包
  • CommonsChunkPlugin 控制多頁面的公用包
  • ejs模版語言控制html
  • --nomap 命令控制sourceMap
  • whitelist 控制專門打包

使用方法

$ npm install -g vue-cli
$ vue init brandonxiang/mpa my-project
$ cd my-project
$ npm install
$ npm run build:dll
$ npm run dev
$ npm run build

用法

第一點,JS包的大小直接影響著首屏弱網(wǎng)情況下的頁面加載情況,DllReferencePlugin和CommonsChunkPlugin就有效拆分公用包的大小,每個包控制在100k左右。

dll打包在config中的dll.js中控制,把公共全量使用的npm包寫入配置文件:

module.exports = {
  path: 'static/dll',
  libs: [
    'vue/dist/vue.esm.js',
    'vue-router',
  ],
}

npm run devnpm run build前使用npm run build:dll去打固定dll包,提高打包調(diào)試的效率。

第二點,模版語言在html-webpack-plugin中的使用,將一些關(guān)鍵代碼內(nèi)聯(lián)拼接在html中。例如:

  • header中的meta(包括dns預(yù)解析等)
  • loading全局插件
  • 計算rem的單位
  • 關(guān)鍵全局樣式

第三點,黑名單的打包

config/index.js配置黑名單,有些項目將不會打包。

blackList: ['Hello', 'eCommand', 'Pingan'],

同時,我們也可以專門指定打幾個包。

npm run build Hello eCommand Pingan

性能優(yōu)化

參考【技術(shù)研究】vue項目的性能優(yōu)化之路

Webpack3 的升級

Webpack的版本升級速度真的是非???,快得無法想象。有幸經(jīng)歷1到2和2到3的升級,體驗了一步一步的性能優(yōu)化。同期無論是 rollup 還是 parcel 的出現(xiàn),他們的優(yōu)缺點很好地反哺了webpack的優(yōu)化點。parcel的出現(xiàn)又一次讓人反思“wbepack的配置是不是太過于繁瑣”,但是parcel由不夠成熟,而且tree-shaking和scope-hoisting的缺席。所以,現(xiàn)在前端工程化中,能投入生產(chǎn)的還是webpack,我也相信webpack4會變得更好。

多頁面腳手架正是采用全新的webpack3構(gòu)建,里面包含它的“內(nèi)容不變hash值不變”的特性,歡迎大家指點評論。

轉(zhuǎn)載,請表明出處。總目錄前段收集器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容