淺談Webpack

1、什么是Webpack

WebPack可以看做是模塊打包機:它做的事情是梭姓,分析你的項目結(jié)構(gòu),找到JavaScript模塊以及其它的一些瀏覽器不能直接運行的拓展語言(Scss,TypeScript等)匹舞,并將其打包為合適的格式以供瀏覽器使用

2、為什要使用WebPack

今的很多網(wǎng)頁其實可以看做是功能豐富的應(yīng)用似芝,它們擁有著復(fù)雜的JavaScript代碼和一大堆依賴包那婉。為了簡化開發(fā)的復(fù)雜度,前端社區(qū)涌現(xiàn)出了很多好的實踐方法

a---模塊化党瓮,讓我們可以把復(fù)雜的程序細化為小的文件;

b---類似于TypeScript這種在JavaScript基礎(chǔ)上拓展的開發(fā)語言:使我們能夠?qū)崿F(xiàn)目前版本的JavaScript不能直接使用的特性详炬,并且之后還能能裝換為JavaScript文件使瀏覽器可以識別;
c---scss寞奸,less等CSS預(yù)處理器
.........
這些改進確實大大的提高了我們的開發(fā)效率呛谜,但是利用它們開發(fā)的文件往往需要進行額外的處理才能讓瀏覽器識別,而手動處理又是非常反鎖的,這就為WebPack類的工具的出現(xiàn)提供了需求蝇闭。

3呻率、WebPack和Grunt以及Gulp相比有什么特性

其實Webpack和另外兩個并沒有太多的可比性,Gulp/Grunt是一種能夠優(yōu)化前端的開發(fā)流程的工具呻引,而WebPack是一種模塊化的解決方案礼仗,不過Webpack的優(yōu)點使得Webpack可以替代Gulp/Grunt類的工具。

Grunt和Gulp的工作方式是:在一個配置文件中逻悠,指明對某些文件進行類似編譯元践,組合,壓縮等任務(wù)的具體步驟童谒,這個工具之后可以自動替你完成這些任務(wù)单旁。

Webpack的工作方式是:把你的項目當做一個整體,通過一個給定的主文件(如:index.js)饥伊,Webpack將從這個文件開始找到你的項目的所有依賴文件象浑,使用loaders處理它們,最后打包為一個瀏覽器可識別的JavaScript文件琅豆。

優(yōu)點:模塊化

在webpack看來一切都是模塊愉豺!這就是它不可不說的優(yōu)點,包括你的JavaScript代碼茫因,也包括CSS和fonts以及圖片等等等蚪拦,只有通過合適的loaders,它們都可以被當做模塊被處理冻押。

1驰贷、CSS

webpack提供兩個工具處理樣式表,css-loader 和 style-loader洛巢,二者處理的任務(wù)不同括袒,css-loader使你能夠使用類似@import 和 url(...)的方法實現(xiàn) require()的功能,style-loader將所有的計算后的樣式加入頁面中,二者組合在一起使你能夠把樣式表嵌入webpack打包后的JS文件中稿茉。
需要分別安裝:

npm install --save-dev style-loader css-loader
2箱熬、CSS modules

在過去的一些年里类垦,JavaScript通過一些新的語言特性,更好的工具以及更好的實踐方法(比如說模塊化)發(fā)展得非常迅速城须。模塊使得開發(fā)者把復(fù)雜的代碼轉(zhuǎn)化為小的蚤认,干凈的,依賴聲明明確的單元糕伐,且基于優(yōu)化工具砰琢,依賴管理和加載管理可以自動完成。
不過前端的另外一部分良瞧,CSS發(fā)展就相對慢一些陪汽,大多的樣式表卻依舊是巨大且充滿了全局類名,這使得維護和修改都非常困難和復(fù)雜褥蚯。

最近有一個叫做 CSS modules 的技術(shù)就意在把JS的模塊化思想帶入CSS中來挚冤,通過CSS模塊,所有的類名赞庶,動畫名默認都只作用于當前模塊训挡。Webpack從一開始就對CSS模塊化提供了支持,在CSS loader中進行配置后歧强,你所需要做的一切就是把”modules“傳遞都所需要的地方澜薄,然后就可以直接把CSS的類名傳遞到組件的代碼中,且這樣做只對當前組件有效摊册,不必擔(dān)心在不同的模塊中具有相同的類名可能會造成的問題肤京。具體的代碼如下



這樣相同的類名也不會互相污染

3、CSS預(yù)編譯

Sass 和 Less之類的預(yù)處理器是對原生CSS的拓展茅特,它們允許你使用類似于variables, nesting, mixins, inheritance等不存在于CSS中的特性來寫CSS忘分,CSS預(yù)處理器可以這些特殊類型的語句轉(zhuǎn)化為瀏覽器可識別的CSS語句,
你現(xiàn)在可能都已經(jīng)熟悉了白修,在webpack里使用相關(guān)loaders進行配置就可以使用了妒峦,以下是常用的CSS 處理loaders

a:less-loader

b:sass-loader

c:stylus-loader

還有一個CSS處理平臺-PostCSS,可以讓你用CSS事先更多功能熬荆,比如如何使用PostCSS舟山,我們使用PostCSS來為CSS代碼自動添加適應(yīng)不同瀏覽器的CSS前綴绸狐。

首先安裝postcss-loader 和 autoprefixer(自動添加前綴的插件)

npm install --save-dev postcss-loader autoprefixer

并在webpack配置文件中進行設(shè)置卤恳,只需要新建一個postcss關(guān)鍵字,并在里面申明依賴的插件寒矿,如下突琳,現(xiàn)在你寫的css會自動根據(jù)Can i use里的數(shù)據(jù)添加不同前綴了。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末符相,一起剝皮案震驚了整個濱河市拆融,隨后出現(xiàn)的幾起案子蠢琳,更是在濱河造成了極大的恐慌,老刑警劉巖镜豹,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件傲须,死亡現(xiàn)場離奇詭異,居然都是意外死亡趟脂,警方通過查閱死者的電腦和手機泰讽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昔期,“玉大人已卸,你說我怎么就攤上這事∨鹨唬” “怎么了累澡?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長般贼。 經(jīng)常有香客問我愧哟,道長,這世上最難降的妖魔是什么具伍? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任翅雏,我火速辦了婚禮,結(jié)果婚禮上人芽,老公的妹妹穿的比我還像新娘望几。我一直安慰自己,他們只是感情好萤厅,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布橄抹。 她就那樣靜靜地躺著,像睡著了一般惕味。 火紅的嫁衣襯著肌膚如雪楼誓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天名挥,我揣著相機與錄音疟羹,去河邊找鬼。 笑死禀倔,一個胖子當著我的面吹牛榄融,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播救湖,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼愧杯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鞋既?” 一聲冷哼從身側(cè)響起力九,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤耍铜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后跌前,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棕兼,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年抵乓,在試婚紗的時候發(fā)現(xiàn)自己被綠了程储。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡臂寝,死狀恐怖章鲤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咆贬,我是刑警寧澤败徊,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站掏缎,受9級特大地震影響皱蹦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜眷蜈,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一沪哺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酌儒,春花似錦辜妓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至榴啸,卻和暖如春孽惰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸥印。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工勋功, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人库说。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓狂鞋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親璃弄。 傳聞我的和親對象是個殘疾皇子要销,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

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

  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺构回,特此分享以備自己日后查看夏块,也希望更多的人看到...
    小小字符閱讀 8,178評論 7 35
  • 最近在學(xué)習(xí) Webpack,網(wǎng)上大多數(shù)入門教程都是基于 Webpack 1.x 版本的,我學(xué)習(xí) Webpack 的...
    My_Oh_My閱讀 8,190評論 40 247
  • 前言 WebPack 是什么疏咐? WebPack 是什么,WebPack 可以看做是模塊打包機:它做的事情是脐供,分析你...
    Promise__閱讀 1,130評論 3 12
  • 昨天看了一篇文章“等你賺夠錢再來陪孩子政己,他已經(jīng)不需要你了”酌壕。關(guān)于陪伴,引起了我的思考歇由。作為一名教師卵牍,我接觸了很...
    Joanne_fa80閱讀 281評論 4 5
  • 信言不美,美言不信沦泌。 善者不辯糊昙,辯者不善。 知者不博谢谦,博者不知释牺。 圣人不積,既以為人己愈有回挽,既以與人己愈多没咙。 天之...
    能量團隊閱讀 430評論 0 1