webpack - code splitting

來源:互聯網
上載者:User

標籤:and   mon   rev   bsp   undle   檔案中   載入   print   分離   

Code splitting is one of the most compelling features of webpack. This feature allows you to split your code into various bundles which can then be loaded on demand or in parallel. It can be used to achieve smaller bundles and control resource load prioritization which, if used correctly, can have a major impact on load time.

通俗來說就是把代碼分成很多很多塊(chunk)。

那為什麼要分塊呢?

之前,為了減少http請求,我們就把所有代碼打包成一個單獨的JS檔案。但是如果JS檔案過大的話,下載速度就很慢,得不償失。

因此webapck實現了把代碼分塊,需要某塊代碼的時候再去載入。

Code Splitting主要有三種方法:

1.  Entry Points : Manually split code using entry configuration(通過增加入口檔案)

2. Prevent Duplication : Use SplitChunksPlugin to dedupe and split chunks

3.Dynamic Import: Split code via inline function calls within modules

方法一就是增加入口檔案

Project

index.js

 

print.js

 

webpack.common.js

 

運行結果:

 

 

這種方法最簡單,但是有很多缺陷,看著很難受

1. index.js和print.js檔案都引入了lodash,重複的lodash module會被載入兩次

2.它很不靈活,不能動態分隔業務和核心應用

此刻我們需要把公用的lodash module提取出來。那我們就可以使用SplitChunksPlugin這個外掛程式了

2. 防止重複,提取公用依賴
webpack.config.js

webpack4已經棄用CommonChunkPlugin了,使用SplitChunkPlugin就可以了

 運行結果:

 

 

 相比上一次。已耗用時間少了100多ms, app.bundle.js和print.bundle.js的size都小了很多,lodash已經從這兩個檔案中移除了。

但是這種方法還不能做到按需載入

 

3. Dynamic Imports 動態匯入

使用import(),在webpack中的import()是個分離點——split-point,用來把被請求的模組獨立成一個單獨的模組。

import()把模組的名字作為一個參數,並且返回一個Promise: import(name)->Promise.

run : npm run server

顯然看到lodash沒有打包在app.bundle.js檔案裡面。

 

webpack - code splitting

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.