webpack 入門(mén)

webpack 是什么赖钞?

webpack是模塊化管理工具,使用webpack可以對(duì)模塊進(jìn)行壓縮聘裁、預(yù)處理雪营、按需打包、按需加載等衡便。

webpack 有哪些重要特征献起?

插件化:webpack本身非常靈活,提供了豐富的插件接口镣陕∏床停基于這些接口,webpack開(kāi)發(fā)了很多插件作為內(nèi)置功能呆抑。
速度快:webpack使用異步IO以及多級(jí)緩存機(jī)制岂嗓。所以webpack的速度是很快的,尤其是增量更新鹊碍。
豐富的Loaders:loaders用來(lái)對(duì)文件做預(yù)處理厌殉。這樣webpack就可以打包任何靜態(tài)文件食绿。
高適配性:webpack同時(shí)支持AMD/CommonJs/ES6模塊方案。webpack會(huì)靜態(tài)解析你的代碼公罕,自動(dòng)幫你管理他們的依賴關(guān)系器紧。此外,webpack對(duì)第三方庫(kù)的兼容性很好熏兄。
代碼拆分:webpack可以將你的代碼分片品洛,從而實(shí)現(xiàn)按需打包。這種機(jī)制可以保證頁(yè)面只加載需要的JS代碼摩桶,減少首次請(qǐng)求的時(shí)間桥状。
優(yōu)化:webpack提供了很多優(yōu)化機(jī)制來(lái)減少打包輸出的文件大小,不僅如此硝清,它還提供了hash機(jī)制辅斟,來(lái)解決瀏覽器緩存問(wèn)題。
開(kāi)發(fā)模式友好:webpack為開(kāi)發(fā)模式也提供了很多輔助功能芦拿。比如SourceMap士飒、熱更新等。
使用場(chǎng)景多:webpack不僅適用于web應(yīng)用場(chǎng)景蔗崎,也適用于Webworkers酵幕、Node.js場(chǎng)景

webpack 如何最佳配置?

webpack官方提供的配置方法是通過(guò)module.exports返回一個(gè)json缓苛,但是這種場(chǎng)景不靈活芳撒,不能適配多種場(chǎng)景。
比如要解決:production模式和development模式未桥,webpack的配置是有差異的笔刹,大致有兩種思路。
1冬耿、兩份配置文件webpack.config.production.js/webpack.config.development.js舌菜,然后不同場(chǎng)景下,使用不同的配置文件亦镶。
2日月、通過(guò)module.exports返回函數(shù),該函數(shù)能接受參數(shù)缤骨。

相對(duì)來(lái)說(shuō)山孔,第一種更簡(jiǎn)單,但是重復(fù)配置多荷憋;第二種更靈活台颠,推薦第二種方式。
那么,按返回函數(shù)的方式的配置代碼架子如下:

module.exports = function(env) {
    return {
        context: config.context,
        entry: config.src,
        output: {
            path: path.join(config.jsDest, project),
            filename: '[name].js',
            chunkFilename: '[name].[chunkhash:8].js',
            publicPath: '/assets/' + project + '/'
        },
        devtool: "eval",
        watch: false,
        profile: true,
        cache: true,
        module: {
            loaders: getLoaders(env)
        },
        resolve: {
            alias: getAlias(env)
        },
        plugins: getPlugins(env)
    };
}

其中關(guān)鍵的配置這兒簡(jiǎn)單介紹如下串前,后續(xù)的系列博客會(huì)根據(jù)每個(gè)點(diǎn)詳細(xì)介紹瘫里。
context:上下文。
entry:入口文件荡碾,是所有依賴關(guān)系的入口谨读,webpack從這個(gè)入口開(kāi)始靜態(tài)解析,分析模塊之間的依賴關(guān)系坛吁。
output:打包輸出的配置劳殖。
devtools:SourceMap選項(xiàng),便于開(kāi)發(fā)模式下調(diào)試拨脉。
watch:監(jiān)聽(tīng)模式哆姻,增量更新,開(kāi)發(fā)必備玫膀!
profile:優(yōu)化矛缨。
cache:webpack構(gòu)建的過(guò)程中會(huì)生成很多臨時(shí)的文件,打開(kāi)cache可以讓這些臨時(shí)的文件緩存起來(lái)帖旨,從而更快的構(gòu)建箕昭。
module.loaders:如前文介紹,loaders用來(lái)對(duì)文件做預(yù)處理解阅。這樣webpack就可以打包任何靜態(tài)文件落竹。
resolve.alias:模塊別名,這樣可以更方便的引用模塊货抄。
plugins:如前文介紹筋量,webpack的一些內(nèi)置功能均是以插件的形式提供。

webpack和gulp的區(qū)別

gulp是基于流的構(gòu)建工具:all in one的打包模式碉熄,輸出一個(gè)js文件和一個(gè)css文件,優(yōu)點(diǎn)是減少http請(qǐng)求肋拔,萬(wàn)金油方案锈津。
webpack是模塊化管理工具,使用webpack可以對(duì)模塊進(jìn)行壓縮凉蜂、預(yù)處理琼梆、打包、按需加載等窿吩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茎杂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子纫雁,更是在濱河造成了極大的恐慌煌往,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異刽脖,居然都是意外死亡羞海,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)曲管,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)却邓,“玉大人,你說(shuō)我怎么就攤上這事院水±搬悖” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵檬某,是天一觀的道長(zhǎng)撬腾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)橙喘,這世上最難降的妖魔是什么时鸵? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮厅瞎,結(jié)果婚禮上饰潜,老公的妹妹穿的比我還像新娘。我一直安慰自己和簸,他們只是感情好彭雾,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著锁保,像睡著了一般薯酝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上爽柒,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天吴菠,我揣著相機(jī)與錄音,去河邊找鬼浩村。 笑死做葵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的心墅。 我是一名探鬼主播酿矢,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼怎燥!你這毒婦竟也來(lái)了瘫筐?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤铐姚,失蹤者是張志新(化名)和其女友劉穎策肝,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驳糯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年篇梭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酝枢。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恬偷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帘睦,到底是詐尸還是另有隱情袍患,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布竣付,位于F島的核電站诡延,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏古胆。R本人自食惡果不足惜肆良,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逸绎。 院中可真熱鬧惹恃,春花似錦、人聲如沸棺牧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)颊乘。三九已至参淹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乏悄,已是汗流浹背浙值。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留檩小,地道東北人开呐。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像识啦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子神妹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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

  • 寫(xiě)在前面 第一次接觸webpack颓哮,是在一個(gè)react項(xiàng)目參與中,剛開(kāi)始使用的時(shí)候鸵荠,甚至不知道是做什么用的冕茅,只看到...
    默默先生Alec閱讀 660評(píng)論 0 3
  • 一.什么是 Webpack Webpack 是一個(gè)模塊打包器。它將根據(jù)模塊的依賴關(guān)系進(jìn)行靜態(tài)分析,然后將這些模塊按...
    逍遙g閱讀 779評(píng)論 0 0
  • webpack 是什么姨伤? webpack是模塊化管理工具哨坪,使用webpack可以對(duì)模塊進(jìn)行壓縮、預(yù)處理乍楚、按需打包当编、...
    余繼蓮閱讀 278評(píng)論 0 1
  • 1.為什么要使用webpack 現(xiàn)今的很多網(wǎng)頁(yè)其實(shí)可以看做是功能豐富的應(yīng)用,它們擁有著復(fù)雜的JavaScript代...
    YINdevelop閱讀 509評(píng)論 0 5
  • 我們實(shí)現(xiàn)功能豐富的應(yīng)用徒溪,擁有復(fù)雜的js代碼和一大堆依賴包忿偷,模塊化,less等css預(yù)處理臊泌。 這些改進(jìn)確實(shí)大大提供了...
    雪夜醬閱讀 298評(píng)論 0 0