webpack構建優化

壓縮Minimize

爲了最小化你的腳本(和你的css,如果你使用css-loader)webpack支持一個簡單的選項:
--optimize-minimizeresp.new webpack.optimize.UglifyJsPlugin()
這是個簡單但是高效的優化你的應用的代碼。
正如你已經知道(如果你已經閱讀剩下的文檔)webpack給你的模塊和塊ID ids來識別它們。 Webpack可以通過一個簡單的選項來改變id的分佈,以獲得經常使用的id的最小id長度:
--optimize-occurrence-orderresp. new webpack.optimize.OccurrenceOrderPlugin()
entry chunks有較高的優先級

去重 Deduplication

如果你使用一些庫和冷依賴樹,可能會出現一些文件是相同的。 Webpack可以找到這些文件並對其進行重複數據刪除。 這可以防止在代碼包中包含重複的代碼,而是在運行時應用函數的副本。 它不影響語義。你可以這樣啓用它:
--optimize-deduperesp.resp. new webpack.optimize.DedupePlugin()
此功能會向入口塊(entry chunks)添加一些開銷。

分塊chunks

在編寫代碼時,您可能已經添加了許多代碼拆分點來按需加載內容。 編譯之後,您可能會注意到有太多的塊太小 - 創建更大的HTTP開銷。 幸運的是,Webpack可以通過合併它們後處理你的塊。您可以提供兩個選項:

  • 限制chunks的數量的最大值: --optimize-max-chunks 15
    new webpack.optimize.LimitChunkCountPlugin({maxChunks: 15})
  • 限制chunks大小的最小值:--optimize-min-chunk-size 10000
    new webpack.optimize.MinChunkSizePlugin({minChunkSize: 10000})
    Webpack將通過合併塊來處理它(它將喜歡具有重複模塊的合併塊)。 沒有任何東西將被合併到條目塊(entry chunk)中,以便不影響初始頁面加載時間。

單頁應用

單頁面程序是webpack用於設計和優化的webapp類型。
您可能已將應用程序拆分爲多個塊,並在您的路由器上加載。 入口塊只包含路由器和一些庫,但沒有內容。 這在您的用戶導航通過您的應用程序時,但工作很好,但對於初始頁面加載你需要2次往返:一個爲路由器,一個爲當前內容頁面。
如果您使用HTML5 History API來反映網址中的當前內容網頁,則您的服務器可以知道客戶端代碼將請求哪個內容網頁。 要保存到服務器的往返行程,您可以在響應中包含內容塊:這可以通過將其添加爲腳本標記來實現。 瀏覽器將加載兩個並行的塊。

<script src="entry-chunk.js" type="text/javascript" charset="utf-8"></script>
<script src="3.chunk.js" type="text/javascript" charset="utf-8"></script>

您可以從統計信息中提取塊文件名。 (stats-webpack-plugin可以用於導出構建統計信息)

多頁應用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章