webpack學(xué)習(xí)筆記(阮一峰教程demo)

學(xué)習(xí)webpack,直接觀看代碼理解。將自己的理解過(guò)程記錄下來(lái),后續(xù)若有不同理解唆阿,再來(lái)修改。

獻(xiàn)上阮一峰老師的webpack教程地址:?webpack

將整個(gè)demo完整的clone下來(lái)锈锤,用vscode導(dǎo)入整個(gè)文件夾之后驯鳖,發(fā)現(xiàn)也只有15個(gè)demo而已,小case久免,so easy浅辙,開(kāi)擼。

Demo01: Entry file

組織架構(gòu)如圖阎姥,

demo01

bundle.js為自動(dòng)生成摔握,package.json為配置文件,也不用管丁寄。

所以只需要關(guān)心三個(gè)類型的三個(gè)文件氨淌,即index.html,main.js伊磺,webpack.config.js盛正,見(jiàn)名知意,第一個(gè)是html文件屑埋,里面加載進(jìn)去js文件即可豪筝;main.js里面包含你想做的事情,demo中打印一句話摘能;剩下的webpack.config.js就是整個(gè)webpack工程的配置文件了续崖。

module.exports = {

? entry: './main.js',

? output: {

? ? filename: './bundle.js'

? }

};

entry是入口,output是輸出生成的bundle文件對(duì)應(yīng)關(guān)系团搞。

運(yùn)行? ?cd? demo01严望,然后npm run dev即可

Demo02: Multiple entry files

首先運(yùn)行起來(lái)看一眼區(qū)別,cd demo02逻恐, 然后npm run dev走你像吻。

demo02-1

如圖,demo02只是比demo01多打印了一句話而已复隆。

直接看index.html文件拨匆,

demo02-2

如圖,demo02只是多加載進(jìn)來(lái)一個(gè)js文件而已挽拂,打開(kāi)看看兩個(gè)JS文件惭每,里面分別只有一句打印一句話的代碼而已。略過(guò)不提亏栈。

package.json文件依舊不管台腥,兩個(gè)bundle.js文件也不管宏赘,兩個(gè)main.js文件簡(jiǎn)單的一句話也看過(guò)了,那就剩下webpack的配置文件了览爵。代碼先粘出來(lái),

module.exports = {

? entry: {? ? ?//? 入口

? ? bundle1: './main1.js',? ? //? 第一個(gè)JS文件

? ? bundle2: './main2.js'? ? //? 第二個(gè)JS文件

? },

? output: {

? ? filename: '[name].js'? ? //? ?輸出文件命名

? }

};

如圖可見(jiàn)镇饮,在entry里蜓竹,不再像demo01中那樣只有入口文件名,而是兩組key-value储藐,value的值都是我們的JS文件名字(帶有相對(duì)路徑)俱济,那么,key钙勃,我們猜想就是對(duì)應(yīng)生成的bundle文件名了吧蛛碌。

再看下方的output輸出對(duì)應(yīng)關(guān)系,filename的值為 [name].js辖源,那么這個(gè)name應(yīng)該就是一個(gè)變量蔚携,對(duì)應(yīng)的是entry中的key。既然這樣克饶,那我們來(lái)驗(yàn)證一下酝蜒。

添加第三個(gè)JS文件,main3.js矾湃,也隨便打印一句話亡脑。然后再配置文件中加入配置:

module.exports = {

? entry: {? ? ?//? 入口

? ? bundle1: './main1.js',? ? //? 第一個(gè)JS文件

? ? bundle2: './main2.js',? ? //? 第二個(gè)JS文件

? ? bundle3: './main3.js'? ? ?//? ? 添加的第三個(gè)文件

? ?},

? output: {

? ? filename: '[name].js'? ? //? ?輸出文件命名

? }

};

然后在html文件中引入加載我們生成對(duì)應(yīng)的bundle3.js文件,如圖

demo02-3

OK邀跃,添加完畢霉咨,編譯,運(yùn)行拍屑。

編譯:npm build? ? 運(yùn)行:npm run dev途戒,

demo02-4

? ?搞定,猜想正確僵驰。

Demo03: Babel-loader?

先上結(jié)構(gòu)圖:

demo03-1

有沒(méi)有發(fā)現(xiàn)JS文件不見(jiàn)了棺滞,而多了一個(gè)JSX文件(不知道的請(qǐng)百度),有點(diǎn)意思矢渊,看看介紹怎么說(shuō)继准。

加載器是預(yù)處理器,它可以在Webpack的構(gòu)建過(guò)程之前轉(zhuǎn)換你的應(yīng)用程序的資源文件(更多信息)矮男。

例如,Babel-loader可以JSX / ES6文件轉(zhuǎn)換成標(biāo)準(zhǔn)JS文件,之后Webpack將開(kāi)始構(gòu)建這些JS文件移必。Webpack的官方文檔有一個(gè)完整的加載器列表。

main.jsx 是一個(gè)JSX文件毡鉴。

先來(lái)看幾個(gè)文件的內(nèi)容代碼:

demo03-2
demo03-3
demo03-4

上面的代碼片段使用了Babel-loader加載器崔泵,它需要Babel的預(yù)設(shè)插件Babel -preset-es2015和Babel -preset-react 轉(zhuǎn)換編譯es2015和react秒赤。

圖2這是react 的寫法,先引入需要的react和react-dom憎瘸,然后在render中把指定的內(nèi)容入篮,顯示在ID為wrapper的控件上。

Demo04: CSS-loader?

Webpack允許你在JS文件中包含CSS幌甘,然后用CSS-loader來(lái)預(yù)處理CSS文件潮售。

main.js只有一句話

require('./app.css');

app.css

body {

background-color:blue;

}

demo04-1
demo04-2

注意,您必須使用兩個(gè)加載器來(lái)轉(zhuǎn)換CSS文件锅风。首先是CSS-loader來(lái)讀取CSS文件酥诽,另一個(gè)是樣式加載器將<style>標(biāo)簽插入HTML中。

運(yùn)行皱埠,npm run dev肮帐,一切正常。

不過(guò)我想改寫一下边器,想把main.js改寫成一個(gè)JSX文件训枢。一起來(lái)試試。

1. 首先改造html忘巧,加個(gè)帶命名ID的控件div肮砾。

2. 寫個(gè)JSX文件,如圖main1.jsx袋坑。

3. 修改webpack配置文件仗处,添加對(duì)應(yīng)的module.rules。依次如下方圖:


demo04-03
demo04-04
demo04-05

注意幾點(diǎn):

1. 在html中枣宫,如果bundle.js在控件之前引入婆誓,會(huì)不顯示內(nèi)容。位置不可引錯(cuò)也颤。原因是因?yàn)榻o控件賦值操作其實(shí)是編譯在bundle.js里面的洋幻,因此必須放置控件之后。

2. 在JSX文件中的寫法不同于demo03的寫法翅娶,要注意文留。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市竭沫,隨后出現(xiàn)的幾起案子燥翅,更是在濱河造成了極大的恐慌,老刑警劉巖蜕提,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件森书,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)凛膏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門杨名,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人猖毫,你說(shuō)我怎么就攤上這事台谍。” “怎么了吁断?”我有些...
    開(kāi)封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵趁蕊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我胯府,道長(zhǎng)介衔,這世上最難降的妖魔是什么恨胚? 我笑而不...
    開(kāi)封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任骂因,我火速辦了婚禮,結(jié)果婚禮上赃泡,老公的妹妹穿的比我還像新娘寒波。我一直安慰自己,他們只是感情好升熊,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布俄烁。 她就那樣靜靜地躺著,像睡著了一般级野。 火紅的嫁衣襯著肌膚如雪页屠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天蓖柔,我揣著相機(jī)與錄音辰企,去河邊找鬼。 笑死况鸣,一個(gè)胖子當(dāng)著我的面吹牛牢贸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播镐捧,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼潜索,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了懂酱?” 一聲冷哼從身側(cè)響起竹习,我...
    開(kāi)封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎列牺,沒(méi)想到半個(gè)月后由驹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年蔓榄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了并炮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡甥郑,死狀恐怖逃魄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情澜搅,我是刑警寧澤伍俘,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站勉躺,受9級(jí)特大地震影響癌瘾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜饵溅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一妨退、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜕企,春花似錦咬荷、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至唇牧,卻和暖如春罕扎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丐重。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工腔召, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人弥臼。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓宴咧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親径缅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子掺栅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • 無(wú)意中看到zhangwnag大佬分享的webpack教程感覺(jué)受益匪淺,特此分享以備自己日后查看纳猪,也希望更多的人看到...
    小小字符閱讀 8,140評(píng)論 7 35
  • 版權(quán)聲明:本文為博主原創(chuàng)文章搏明,未經(jīng)博主允許不得轉(zhuǎn)載。 webpack介紹和使用 一闪檬、webpack介紹 1星著、由來(lái) ...
    it筱竹閱讀 11,028評(píng)論 0 21
  • webpack 介紹 webpack 是什么 為什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert閱讀 6,450評(píng)論 2 71
  • 記得2004年的時(shí)候,互聯(lián)網(wǎng)開(kāi)發(fā)就是做網(wǎng)頁(yè)粗悯,那時(shí)也沒(méi)有前端和后端的區(qū)分虚循,有時(shí)一個(gè)網(wǎng)站就是一些純靜態(tài)的html,通過(guò)...
    陽(yáng)陽(yáng)陽(yáng)一堆陽(yáng)閱讀 3,272評(píng)論 0 5
  • Gwen陪你讀《愛(ài)麗絲漫游奇境記》∣9.20 Alice did not dare to disobey, tho...
    123逍遙游閱讀 307評(píng)論 0 0