webpack4下import()模塊按需加載,打包按需切割模塊预吆,減少包體積,加快首頁請求速度

一:背景

因為項目功能越加越多胳泉,打包后的體積越來越大拐叉,導(dǎo)致首頁展示的時候速度比較慢,因為要等壓縮的js的包加載完畢扇商。

首頁展示的時候只需要對應(yīng)的js凤瘦,并不需要全部的js模塊,所以這里就可以用按需加載案铺,這里webpack4官方文檔提供了模塊按需切割加載蔬芥,配合es6的按需加載import()方法,可以做到減少首頁包體積,加快首頁的請求速度笔诵,只有其他模塊返吻,只有當(dāng)需要的時候才會加載對應(yīng)js。

這里參考一些資料:

webpack4官方文檔:https://webpack.docschina.org/api/module-methods/#import-

在這里插入圖片描述

VUE的懶加載:https://alexjover.com/blog/lazy-load-in-vue-using-webpack-s-code-splitting/
在這里插入圖片描述

二:開始demo

首頁先啟動一個普通的webpack4項目乎婿,可以用腳手架测僵,不過需要自己配置一些webpack4特性,這里可以參考:webpack3 項目升級 webpack4

項目起來后谢翎,就可以用import實驗一番:


在這里插入圖片描述

這里我定義了三個界面(HelloWorld1捍靠,HelloWorld2,HelloWorld3)森逮,其中HelloWorld1用的impot()按需的方式榨婆,其他兩個都是直接import。

注意:這里的/* webpackChunkName: "h-w1" */
是webpack4中提供的注解褒侧,給切割模塊命名良风,如果不要這個注解的話切割出來的模塊js不能分辨是那個業(yè)務(wù)模塊的,所以一般都是一個業(yè)務(wù)模塊共用一個名稱璃搜。

代碼這樣加了之后拖吼,控制臺可能會一些錯:

在這里插入圖片描述

這個錯的意思就是不能識別import()的這種寫法,因為還需要Babel的支持这吻,網(wǎng)上查了下吊档,需要babel-plugin-dynamic-import-node插件和配置.babelrc文件,那我們就配上:
在這里插入圖片描述

在這里插入圖片描述

配上這些過后唾糯,代碼確實沒有語法錯誤了怠硼,可以正常啟動訪問。

但是打包并沒有切割開代碼:

在這里插入圖片描述

這是打的包移怯,并沒有看到我們定義的h-w1的包香璃。

這里前前后試了幾個插件和配置都不行,語法還是抱錯舟误,最后終于試出來了:
1葡秒,要么在升級eslint的版本,用5.14以后的嵌溢;


在這里插入圖片描述

2眯牧,要么eslint可以用4.19的,但要加上acorn插件赖草;

在這里插入圖片描述

這里上面兩種方法都可以解決問題学少,至于前面說的配置.babelrc文件可以還原了,那個加上反而打包沒效果了秧骑,小白我也不懂版确。扣囊。。绒疗。
在這里插入圖片描述

最好我們就可以運(yùn)行:npm run build 看效果了侵歇,結(jié)果又抱錯了:
在這里插入圖片描述

從出錯信息來看,是UglifyJS不支持ES6的語法吓蘑。理論上不應(yīng)該啊…
于是Google之盒至,發(fā)現(xiàn)uglifyjs-webpack-plugin 2.0版本的Release日志中,明確提示重新切換回到uglify-js士修,因為uglify-es被廢棄了,如果需要ES6代碼壓縮樱衷,請使用terser-webpack-plugin

解決

方法一:安裝并使用[terser-webpack-plugin]:
(參考:http://makeup1122.github.io/2018/10/12/webpack-UglifyJS-issue/)

方法二:降低UglifyJS版本

這里我選第二個棋嘲,最方便,把uglifyjs-webpack-plugin 降到1.1.1版本:

在這里插入圖片描述

再打包矩桂,終于成了沸移,把HelloWorld1分離出來獨(dú)立包h-w1
在這里插入圖片描述

大家可以搜索下,h-w1包里面的代碼和app包里面的代碼是不是隔離的侄榴,也可以瀏覽器訪問這包雹锣,看看h-w1包的js是不是按需加載的,這里就不貼結(jié)果了癞蚕,我自己測試都是準(zhǔn)確的蕊爵。

項目完整demo:https://github.com/BothEyes1993/webpack4_demo

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市桦山,隨后出現(xiàn)的幾起案子攒射,更是在濱河造成了極大的恐慌,老刑警劉巖恒水,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件会放,死亡現(xiàn)場離奇詭異,居然都是意外死亡钉凌,警方通過查閱死者的電腦和手機(jī)咧最,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來御雕,“玉大人矢沿,你說我怎么就攤上這事∫眩” “怎么了咨察?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長福青。 經(jīng)常有香客問我摄狱,道長脓诡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任媒役,我火速辦了婚禮祝谚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘酣衷。我一直安慰自己交惯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布穿仪。 她就那樣靜靜地躺著席爽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪啊片。 梳的紋絲不亂的頭發(fā)上只锻,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音紫谷,去河邊找鬼齐饮。 笑死,一個胖子當(dāng)著我的面吹牛笤昨,可吹牛的內(nèi)容都是我干的祖驱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瞒窒,長吁一口氣:“原來是場噩夢啊……” “哼捺僻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起崇裁,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤陵像,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后寇壳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體醒颖,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年壳炎,在試婚紗的時候發(fā)現(xiàn)自己被綠了泞歉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡匿辩,死狀恐怖腰耙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铲球,我是刑警寧澤挺庞,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站稼病,受9級特大地震影響选侨,放射性物質(zhì)發(fā)生泄漏掖鱼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一援制、第九天 我趴在偏房一處隱蔽的房頂上張望戏挡。 院中可真熱鬧,春花似錦晨仑、人聲如沸褐墅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妥凳。三九已至,卻和暖如春答捕,著一層夾襖步出監(jiān)牢的瞬間猾封,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工噪珊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人齐莲。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓痢站,卻偏偏與公主長得像,于是被迫代替她去往敵國和親选酗。 傳聞我的和親對象是個殘疾皇子阵难,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容