久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

webpack使用DllPlugin的方法-創(chuàng)新互聯(lián)

這篇文章主要介紹了webpack使用DllPlugin的方法,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的如皋網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

什么是DLL

DLL(Dynamic Link Library)文件為動(dòng)態(tài)鏈接庫文件,在Windows中,許多應(yīng)用程序并不是一個(gè)完整的可執(zhí)行文件,它們被分割成一些相對(duì)獨(dú)立的動(dòng)態(tài)鏈接庫,即DLL文件,放置于系統(tǒng)中。當(dāng)我們執(zhí)行某一個(gè)程序時(shí),相應(yīng)的DLL文件就會(huì)被調(diào)用。

舉個(gè)例子:很多產(chǎn)品都用到螺絲,但是工廠在生產(chǎn)不同產(chǎn)品時(shí),不需要每次連帶著把螺絲也生產(chǎn)出來,因?yàn)槁萁z可以單獨(dú)生產(chǎn),并給多種產(chǎn)品使用。在這里螺絲的作用就可以理解為是dll。

為什么要使用Dll

通常來說,我們的代碼都可以至少簡單區(qū)分成業(yè)務(wù)代碼和第三方庫。如果不做處理,每次構(gòu)建時(shí)都需要把所有的代碼重新構(gòu)建一次,耗費(fèi)大量的時(shí)間。然后大部分情況下,很多第三方庫的代碼并不會(huì)發(fā)生變更(除非是版本升級(jí)),這時(shí)就可以用到dll:把復(fù)用性較高的第三方模塊打包到動(dòng)態(tài)鏈接庫中,在不升級(jí)這些庫的情況下,動(dòng)態(tài)庫不需要重新打包,每次構(gòu)建只重新打包業(yè)務(wù)代碼。

還是上面的例子:把每次構(gòu)建,當(dāng)做是生產(chǎn)產(chǎn)品的過程,我們把生產(chǎn)螺絲的過程先提取出來,之后我們不管調(diào)整產(chǎn)品的功能或者設(shè)計(jì)(對(duì)應(yīng)于業(yè)務(wù)代碼變更),都不必重復(fù)生產(chǎn)螺絲(第三方模塊不需要重復(fù)打包);除非是產(chǎn)品要使用新型號(hào)的螺絲(第三方模塊需要升級(jí)),才需要去重新生產(chǎn)新的螺絲,然后接下來又可以專注于調(diào)整產(chǎn)品本身。

基本用法

使用dll時(shí),可以把構(gòu)建過程分成dll構(gòu)建過程和主構(gòu)建過程(實(shí)質(zhì)也就是如此),所以需要兩個(gè)構(gòu)建配置文件,例如叫做webpack.config.jswebpack.dll.config.js

1. 使用DLLPlugin打包需要分離到動(dòng)態(tài)庫的模塊

DllPluginwebpack內(nèi)置的插件,不需要額外安裝,直接配置webpack.dll.config.js文件:

module.exports = {=
 entry: {
  // 第三方庫
  react: ['react', 'react-dom', 'react-redux']
 },
 output: {
  // 輸出的動(dòng)態(tài)鏈接庫的文件名稱,[name] 代表當(dāng)前動(dòng)態(tài)鏈接庫的名稱,
  filename: '[name].dll.js',
  path: resolve('dist/dll'),
  // library必須和后面dllplugin中的name一致 后面會(huì)說明
  library: '[name]_dll_[hash]'
 },
 plugins: [
 // 接入 DllPlugin
  new webpack.DllPlugin({
   // 動(dòng)態(tài)鏈接庫的全局變量名稱,需要和 output.library 中保持一致
   // 該字段的值也就是輸出的 manifest.json 文件 中 name 字段的值
   name: '[name]_dll_[hash]',
   // 描述動(dòng)態(tài)鏈接庫的 manifest.json 文件輸出時(shí)的文件名稱
   path: path.join(__dirname, 'dist/dll', '[name].manifest.json')
  }),
 ]
}

我們先來看看,這一步到底做了什么。執(zhí)行:webpack --config webpack.dll.config,然后到指定的輸出文件夾查看輸出:

  • react.dll文件里是使用數(shù)組保存的模塊,索引值就作為id;

  • react.manifest.json文件里,是用來描述對(duì)應(yīng)的dll文件里保存的模塊

里暴露出剛剛構(gòu)建的所有模塊,如下:

{
 "name":"react_dll_553e24e2c44987d2578f",
 "content":{
  "./node_modules/webpack/node_modules/process/browser.js":{"id":0,"meta":{}},"./node_modules/react/node_modules/fbjs/lib/invariant.js":{"id":1,"meta":{}},"./node_modules/react/lib/Object.assign.js":{"id":2,"meta":{}},"./node_modules/react/node_modules/fbjs/lib/warning.js":{"id":3,"meta":{}}
  //省略相似代碼
 }
}

2. 在主構(gòu)建配置文件使用動(dòng)態(tài)庫文件

webpack.config中使用dll要用到DllReferencePlugin,這個(gè)插件通過引用 dll 的 manifest 文件來把依賴的名稱映射到模塊的 id 上,之后再在需要的時(shí)候通過內(nèi)置的 webpack_require 函數(shù)來 require 他們.

 new webpack.DllReferencePlugin({
  context: __dirname,
  manifest: require('./dist/dll/react.manifest.json')
 }),

第一步產(chǎn)出的manifest文件就用在這里,給主構(gòu)建流程作為查找dll的依據(jù):DllReferencePlugin去 manifest.json 文件讀取 name 字段的值,把值的內(nèi)容作為在從全局變量中獲取動(dòng)態(tài)鏈接庫中內(nèi)容時(shí)的全局變量名,因此:在 webpack_dll.config.js 文件中,DllPlugin 中的 name 參數(shù)必須和 output.library 中保持一致。

3. 在入口文件引入dll文件。

生成的dll暴露出的是全局函數(shù),因此還需要在入口文件里面引入對(duì)應(yīng)的dll文件。

<body>
 <div id="app"></div>
 <!--引用dll文件-->
 <script src="../../dist/dll/react.dll.js" ></script>
</body>

作用

首先從前面的介紹,至少可以看出dll的兩個(gè)作用

分離代碼,業(yè)務(wù)代碼和第三方模塊可以被打包到不同的文件里,這個(gè)有幾個(gè)好處:

  1. 避免打包出單個(gè)文件的大小太大,不利于調(diào)試

  2. 將單個(gè)大文件拆成多個(gè)小文件之后,一定情況下有利于加載(不超出瀏覽器一次性請(qǐng)求的文件數(shù)情況下,并行下載肯定比串行快)

提升構(gòu)建速度。第三方庫沒有變更時(shí),由于我們只構(gòu)建業(yè)務(wù)相關(guān)代碼,相比全部重新構(gòu)建自然要快的多。

注意事項(xiàng)

從前面可以看到dll帶來的優(yōu)點(diǎn),但并不意味著我們就應(yīng)該把除業(yè)務(wù)代碼外的所有代碼全部都丟到dll中,舉一個(gè)例子:
1.對(duì)于lodash這種第三方庫,正確的用法是只去import所需的函數(shù)(用什么引什么),例如:

// 正確用法
import isPlainObject from 'lodash/isPlainObject'

//錯(cuò)誤用法
import { isPlainObject } from 'lodash'

這兩種寫法的差別在于,打包時(shí)webpack會(huì)根據(jù)引用去打包依賴的內(nèi)容,所以第一種寫法,webpack只會(huì)打包lodash的isPlainObject庫,第二種寫法卻會(huì)打包整個(gè)lodash。現(xiàn)在假設(shè)在項(xiàng)目中只是用到不同模塊對(duì)lodash里的某幾個(gè)函數(shù)并且沒有對(duì)于某個(gè)函數(shù)重復(fù)使用非常多次,那么這時(shí)候把lodash添加到dll中,帶來的收益就并不明顯,反而導(dǎo)致2個(gè)問題:

  1. 由于打包了整個(gè)lodash,而導(dǎo)致打包后的文件總大小(注意是總大小)比原先還要大

  2. 在dll打包太多內(nèi)容也需要耗費(fèi)時(shí)間,雖然我們一般只在第三方模塊更新之后才進(jìn)行重新預(yù)編譯(就是dll打包的過程),但是如果這個(gè)時(shí)間太長的話體驗(yàn)也不好、

實(shí)踐與反思

放一張自己在一個(gè)比較大的項(xiàng)目中單純使用dll之后的收益,提取的內(nèi)容是 react相關(guān)的第三方庫,和fish組件,構(gòu)建時(shí)間從120s降低到80s左右(當(dāng)然這個(gè)時(shí)間還是有點(diǎn)恐怖),構(gòu)建前appjs的大小是680kb,拆分業(yè)務(wù)代碼和第三方代碼分別是400kb和380kb(這就是拆分后大小大于拆分前大小的例子),從這一點(diǎn)來看,對(duì)于常見第三方庫是否要放進(jìn)dll可能比較明確(比如react系列打包一般肯定不虧),但是還有一些就要結(jié)合具體的項(xiàng)目內(nèi)容來進(jìn)行判斷和取舍。(強(qiáng)烈推薦使用webpack-bundle-analyzer插件進(jìn)行性能分析)

webpack使用DllPlugin的方法

webpack使用DllPlugin的方法

webpack使用DllPlugin的方法

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“webpack使用DllPlugin的方法”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司,關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前名稱:webpack使用DllPlugin的方法-創(chuàng)新互聯(lián)
分享地址:http://www.js-pz168.com/article34/ddpipe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google網(wǎng)站改版做網(wǎng)站ChatGPT外貿(mào)網(wǎng)站建設(shè)網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
亚洲精品9999| 日韩欧美视频在线| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品成人午夜| 麻豆久久一区二区| 9a蜜桃久久久久久免费| 夜夜爽www精品| 欧美精品一区二区在线观看| 夜夜操天天操亚洲| 国产自产高清不卡| 久久久水蜜桃| 91精品在线一区二区| 亚洲色图欧美激情| 国产精品88888| 久久综合伊人77777麻豆| 欧美日韩高清在线播放| 国产精品久久久久精k8| 国产一区高清在线| 精品视频一区二区| 91麻豆精品国产无毒不卡在线观看 | 国产很黄免费观看久久| 久久人人九九| 欧美一区二区视频观看视频| 亚洲精品成a人| 成人深夜福利app| 先锋影音一区二区三区| 久久亚洲精精品中文字幕早川悠里| 亚洲v精品v日韩v欧美v专区| av午夜一区麻豆| 色综合久久中文字幕综合网| 国产日韩欧美在线一区| 久久99精品久久久久久动态图| 国产亚洲精品美女久久久m| 欧美精品精品一区| 亚洲一区在线观看免费观看电影高清 | 91久久线看在观草草青青| 国产精品网站导航| 国产电影一区二区三区| 亚洲欧美国产精品桃花| 国产日韩v精品一区二区| 精品一区二区在线看| 欧洲高清一区二区| 国产亚洲综合在线| 国产精品18久久久久久久网站| 亚洲国产另类久久久精品极度| 国产日韩成人精品| 国产凹凸在线观看一区二区| 一级日韩一区在线观看| 中文字幕一区二区三区乱码在线| 国产99久久久国产精品潘金网站| 中文字幕99| 亚洲欧美视频在线观看| 99国产精品国产精品久久| 欧美日韩一区小说| 亚洲成av人片在线| 九九九九九精品| 久久综合久久久久88| 国产精品一线二线三线精华| 亚洲综合第一| 一区二区三区中文在线| 超碰97人人人人人蜜桃| 日韩亚洲欧美成人一区| 麻豆91精品视频| 亚洲精品在线免费看| 一区二区中文视频| 91黄色国产视频| 日韩网站在线看片你懂的| 久久超碰97中文字幕| 亚洲欧洲三级| 亚洲精品日韩一| 国产一区视频观看| 国产欧美一区二区三区在线看蜜臀| 高清视频一区二区| 欧美二区三区91| 老色鬼精品视频在线观看播放| 亚洲欧洲免费无码| 亚洲一区二区三区四区不卡| 久久精品国产综合精品 | 欧美日韩一二三区| 日韩成人免费电影| 特级西西444www大精品视频| 亚洲日本电影在线| 国产视频不卡| 亚洲国产高清在线观看视频| 91在线看国产| 久久尤物电影视频在线观看| 成人午夜大片免费观看| 91麻豆精品国产综合久久久久久| 激情五月激情综合网| 在线看日韩精品电影| 日本视频在线一区| 五月天久久综合网| 香蕉av福利精品导航| 亚洲不卡中文字幕| 亚洲图片欧美色图| 亚洲第一在线综合在线| 亚洲福利视频三区| 亚洲国产一区二区三区在线播| 亚洲一区二区三区四区在线| 日韩在线三级| 亚洲成人免费在线观看| 亚洲精品一区二区三区樱花 | 亚洲欧洲一区二区福利| 亚洲成人1区2区| 色综合天天视频在线观看| 日韩二区在线观看| 91国偷自产一区二区开放时间| 免费黄网站欧美| 欧美三级在线视频| 国产乱码精品1区2区3区| 欧美一区二区三区白人 | 欧美一级黄色大片| 不卡一二三区首页| 国产亚洲va综合人人澡精品| 99久热re在线精品996热视频| 国产欧美日韩精品一区| av一区二区三区在线观看| 国产精品乱人伦中文| 久久精品国产一区二区三区日韩 | 久久精品国产一区二区三| 欧美久久久久免费| 成人中文字幕合集| 久久久99免费| 精品免费国产| 性感美女极品91精品| 在线免费观看一区| 国产馆精品极品| 2021中文字幕一区亚洲| 国产伦精品一区二区三区四区免费| 亚洲国产成人不卡| 丝袜美腿一区二区三区| 欧美丝袜丝交足nylons图片| 国产福利一区二区三区视频在线| 精品国产乱码久久久久久免费| 成人高清在线观看| 一区二区三区欧美| 91国产视频在线观看| 国产精品一区二区视频| 久久久久综合网| 久久久久高清| 日本网站在线观看一区二区三区 | 色屁屁一区二区| 国产电影一区在线| 中文字幕国产精品一区二区| 欧洲亚洲一区二区三区四区五区| 日本中文字幕一区二区有限公司| 69堂精品视频| 国产精品我不卡| 亚洲成人精品在线观看| 欧美伦理视频网站| y111111国产精品久久婷婷| 一区二区三区在线不卡| 欧美亚洲国产一区二区三区va| 成人爱爱电影网址| 亚洲色图丝袜美腿| 欧美亚洲禁片免费| 91免费版在线| 亚洲图片欧美视频| 欧美一区二区三区男人的天堂| 国产精品美女诱惑| 天堂久久一区二区三区| 日韩精品一区二区三区在线观看 | 免费看成人午夜电影| 美腿丝袜一区二区三区| 日韩精品一区二区三区在线观看| 九9re精品视频在线观看re6 | 亚洲精品视频自拍| 欧美日韩久久久| 鬼打鬼之黄金道士1992林正英| 亚洲精品国产无天堂网2021| 欧美视频一二三区| 国产精品国产精品| 男人的天堂久久精品| 久久丝袜美腿综合| 亚洲一区二区在| 91在线视频免费91| 午夜激情一区二区三区| 欧美videofree性高清杂交| 欧美18视频| 国产福利电影一区二区三区| 亚洲日本电影在线| 91精品在线观看入口| 久久久人人爽| 国产河南妇女毛片精品久久久| 亚洲少妇屁股交4| 欧美一区二区在线免费观看| 久久亚洲免费| 国产成人综合视频| 亚洲综合偷拍欧美一区色| 日韩欧美亚洲国产另类| 相泽南亚洲一区二区在线播放| 成人黄色一级视频| 天天影视网天天综合色在线播放| 精品va天堂亚洲国产| 一本久道久久综合狠狠爱亚洲精品| 99久久精品免费| 麻豆成人av在线| 亚洲日本va午夜在线影院| 欧美一级欧美三级在线观看 | 亚洲午夜激情av|