国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

詳解webpack編譯速度提升之DllPlugin

2019-11-19 12:10:24
字體:
來源:轉載
供稿:網友

一、前言

The DllPlugin and DllReferencePlugin provide means to split bundles in a way that can drastically improve build time performance.

DllPlugin 結合 DllRefrencePlugin 插件的運用,對將要產出的bundle文件進行拆解打包,可以很徹底地加快webpack的打包速度,從而在開發過程中極大地縮減構建時間。

二、構建效果

結論先行: 使用 DllPluginDllRefrencePlugin 進行構建,可以縮減50%~70%的構建時間。

參考Demo: dllplugin-demo

2.1 使用DllPlugin前的構建速度

 

入口文件 main.js 引入了一個 jQuery

文件,圖示打包耗時2.3s。

2.2 使用DllPlugin后的構建速度

 

使用插件后,打包耗時0.6s,單次對比,縮減時長達到73%! 2.3 如何驗證DLLPlugin已經生效

對比上面兩張圖打包的模塊列表,圖二有一行不一樣的輸出:

[0] delegated ./src/components/jquery.js from dll-reference vendor_57c12dcd8d9774596525 42 bytes {0} [built]

這說明,此次的打包過程,沒有重新打包 jQuery 模塊,而是直接從 vendor_57c12dcd8d9774596525 中代理了。

三、Get Started

DllPlugin作用示意圖:

 

3.1 配置webpack.dll.config.js打包靜態公共資源

3.1.1 定義webpack.dll.config.js

為了減小篇幅,只帖關鍵配置內容,詳細訪問 dllplugin-demo

// webpack.dll.config.jsmodule.exports = {  entry: {    // 定義程序中打包公共文件的入口文件vendor.js    vendor: [path.resolve(src, 'js', 'vendor.js')],  },    plugins: [    new webpack.DllPlugin({      // manifest緩存文件的請求上下文(默認為webpack執行環境上下文)      context: process.cwd(),            // manifest.json文件的輸出位置      path: path.join(src, 'js', 'dll', '[name]-manifest.json'),            // 定義打包的公共vendor文件對外暴露的函數名      name: '[name]_[hash]'    })  ]}

3.1.2 聲明靜態公共資源

在配置好 webpack.dll.config.js 文件之后,在 vendor.js 中聲明項目程序中所引用的靜態公共資源。

// vendor.js// 引入自定義在項目目錄中的公共資源(可以在配置中聲明alias映射關系)import 'jquery';// or 引入npm包資源// import 'Vue';

3.1.3 打包靜態公共資源

// cross-env模塊需要另外安裝cross-env NODE_ENV=production webpack --config webpack.dll.config.js --colors --display-modules

根據 webpack.dll.config.js ,會在指定位置生成 vendor.dll.js 文件。

3.2 配置webpack.config.js打包入口文件

生成靜態公共資源 vendor.dll.js 之后,下一步就要在入口文件中關聯引用,這項工作則是由 DllRefrencePlugin 完成的。

3.2.1 在webpack.config.js中關聯引用

// webpack.config.jsmodule.exports = {  entry: {    // 項目入口文件    'app':path.resolve(src, 'js', 'main.js')  },  plugins: [    // dllPlugin關聯配置    new webpack.DllReferencePlugin({      // 跟dll.config里面DllPlugin的context一致      context: process.cwd(),             // dll過程生成的manifest文件      manifest: require(path.join(src, 'js', "dll", "vendor-manifest.json"))    })  ]}

3.2.2 項目入口文件中引用靜態公共資源

// main.js// 引入的公共模塊如果在vendor中有被引用過,那么編譯的時候直接使用靜態文件vendor.dll.jsimport $ from 'jquery';console.log($)// import Vue from "Vue";// console.log(Vue)

引入方式沒有什么不同的,跟平時正常引入即可。

3.2.3 項目模板中引用公共靜態資源

最后一步,在模板中注入 vendor.dll.js

<!-- index.html --><script type="text/javascript" src="/src/js/dll/vendor.dll.js"></script>

如此,在接下來的本地開發(dev過程)和線上構建過程,將不再重復靜態公共資源的構建,極大地縮減我們的構建時間。

結語

以上為webpack(Version 4)使用過程中的小小總結,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武清区| 琼结县| 鄂尔多斯市| 正定县| 祁东县| 绵阳市| 郴州市| 二连浩特市| 健康| 莆田市| 田东县| 牟定县| 新和县| 鸡泽县| 五原县| 阳朔县| 义乌市| 尼勒克县| 旬邑县| 嘉禾县| 和平区| 布尔津县| 平定县| 临漳县| 五寨县| 仙游县| 全南县| 定州市| 故城县| 开江县| 化德县| 和田市| 云安县| 蒙阴县| 丹江口市| 新昌县| 长乐市| 博白县| 江城| 乃东县| 乌拉特前旗|