【W(wǎng)ebpack】 Dll 庫的使用

時間:2017-02-20 17:08:41
作者:轉(zhuǎn)載

一、問題分析

webpack 會把所有的依賴文件打包成一個js文件,因此這個文件通常會很大。

這個文件包含第三方類庫,業(yè)務代碼眠副。

通常第三方代碼都是不變的, 比如react竣稽, jquery囱怕, loadsh... 霍弹,如果把他們和業(yè)務代碼打包在一起的時候,每次修改業(yè)務代碼的時候光涂,都需要再把第三方類庫代碼打包一次庞萍,這樣會比較浪費時間。

二忘闻、解決方案

1. 配置externals

webpack可以配置把 externals 來將依賴的庫指向全局變量钝计,從而不在打包這個庫

import React from 'react';
console.log(React);

如果你在 Webpack.config.js 中配置了externals:

module.exports = {
    externals: {
        'react': 'window.React'
    }
    //其它配置忽略...... 
};

等于讓 Webpack 知道,對于 react 這個模塊就不要打包啦齐佳,直接指向 window.React 就好私恬。不過別忘了加載 react.min.js,讓全局中有 React 這個變量炼吴。

我們來看看性能本鸣,因為不用打包 React 了所以速度自然超級快,包也很泄璞摹:

externals 存在的不足

不是所有的依賴庫都有 提供 生成環(huán)境的文件荣德, 比如react內(nèi)部還有很多庫有復雜的依賴關(guān)系。

2. 初級解決方案

手動把第三方的公共依賴庫打包成一個 lib-bundle.js 文件童芹, 然后在html文件中引入涮瞻。

在2016年1月多的時候,做的項目假褪,使用的就是這種方法署咽,目前公司的項目,也是使用這種方式生音。

具體看《初級解決方法教程》

3. 終極解決方案

上面的初級解決方案本質(zhì)上就是一種動態(tài)鏈接庫(dll)的思想宁否,一個dll包,就是一個純凈的依賴庫缀遍,本身不能運行慕匠,是用來給app或者業(yè)務代碼依賴的。

《webpack官網(wǎng)實例瑟由,dll絮重, dll-user》

3.1 使用 webpack.DllPlugin

使用這個插件來打包 dll類庫,然后在html中引用這個庫.

打包的時候歹苦,會生成 js文件以及對應的 mainfest.json文件。

var path = require("path");
var webpack = require("../../");
module.exports = {
    resolve: {
        extensions: [".js", ".jsx"]
    },
    entry: {
        alpha: ["./alpha", "./a", "module"],
        beta: ["./beta", "./b", "./c"]
    },
    output: {
        path: path.join(__dirname, "js"),
        filename: "MyDll.[name].js",
        library: "[name]_[hash]"
    },
    plugins: [
        new webpack.DllPlugin({
            path: path.join(__dirname, "js", "[name]-manifest.json"),
            name: "[name]_[hash]"
        })
    ]
};

3.2 使用 webpack.DllReferencePlugin 來使用 dll文件

webpack 官網(wǎng)的demo 配置

var path = require("path");
var webpack = require("../../");
module.exports = {
    plugins: [
        new webpack.DllReferencePlugin({
            context: path.join(__dirname, "..", "dll"),
            manifest: require("../dll/js/alpha-manifest.json") // eslint-disable-line
        }),
        new webpack.DllReferencePlugin({
            scope: "beta",
            manifest: require("../dll/js/beta-manifest.json"), // eslint-disable-line
            extensions: [".js", ".jsx"]
        })
    ]
};

DllPlugin 本質(zhì)上的做法和我們手動分離這些第三方庫是一樣的督怜,但是對于包極多的應用來說殴瘦,自動化明顯加快了生產(chǎn)效率。

三号杠、參考文章

這邊文章轉(zhuǎn)載來自下面這篇文章蚪腋, 寫的很好很詳細丰歌。建議直接看《參考文章》

  1. 《徹底解決Webpack打包慢的問題》 時間:2016年07月27日發(fā)布
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市屉凯,隨后出現(xiàn)的幾起案子立帖,更是在濱河造成了極大的恐慌,老刑警劉巖悠砚,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晓勇,死亡現(xiàn)場離奇詭異,居然都是意外死亡灌旧,警方通過查閱死者的電腦和手機绑咱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枢泰,“玉大人描融,你說我怎么就攤上這事『饴欤” “怎么了窿克?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀的道長毛甲。 經(jīng)常有香客問我年叮,道長,這世上最難降的妖魔是什么丽啡? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任谋右,我火速辦了婚禮,結(jié)果婚禮上补箍,老公的妹妹穿的比我還像新娘改执。我一直安慰自己,他們只是感情好坑雅,可當我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布辈挂。 她就那樣靜靜地躺著,像睡著了一般裹粤。 火紅的嫁衣襯著肌膚如雪终蒂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天遥诉,我揣著相機與錄音拇泣,去河邊找鬼。 笑死矮锈,一個胖子當著我的面吹牛霉翔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苞笨,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼债朵,長吁一口氣:“原來是場噩夢啊……” “哼子眶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起序芦,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤臭杰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谚中,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渴杆,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年藏杖,在試婚紗的時候發(fā)現(xiàn)自己被綠了将塑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡蝌麸,死狀恐怖点寥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情来吩,我是刑警寧澤敢辩,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站弟疆,受9級特大地震影響戚长,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜怠苔,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一同廉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柑司,春花似錦迫肖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至玻粪,卻和暖如春隅津,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背劲室。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工伦仍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人很洋。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓呢铆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蹲缠。 傳聞我的和親對象是個殘疾皇子棺克,可洞房花燭夜當晚...
    茶點故事閱讀 45,937評論 2 361

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

  • GitChat技術(shù)雜談 前言 本文較長,為了節(jié)省你的閱讀時間线定,在文前列寫作思路如下: 什么是 webpack娜谊,它要...
    蕭玄辭閱讀 12,699評論 7 110
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,341評論 25 707
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺,特此分享以備自己日后查看斤讥,也希望更多的人看到...
    小小字符閱讀 8,184評論 7 35
  • 寫在開頭 先說說為什么要寫這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,298評論 4 31
  • 對于某些人來說纱皆,拖延就像花朵,很容易摘除芭商。但是對更多的人來說派草,拖延就像一片蒲公英,他們根深蒂固铛楣,無法輕易根除近迁。我們...
    孤獨是孤獨者的盛裝閱讀 232評論 0 2