webpack学习笔记(阮一峰教程demo)

学习webpack,直接观看代码理解。将自己的理解过程记录下来,后续若有不同理解,再来修改。

献上阮一峰老师的webpack教程地址: webpack

将整个demo完整的clone下来,用vscode导入整个文件夹之后,发现也只有15个demo而已,小case,so easy,开撸。

Demo01: Entry file

组织架构如图,

demo01

bundle.js为自动生成,package.json为配置文件,也不用管。

所以只需要关心三个类型的三个文件,即index.html,main.js,webpack.config.js,见名知意,第一个是html文件,里面加载进去js文件即可;main.js里面包含你想做的事情,demo中打印一句话;剩下的webpack.config.js就是整个webpack工程的配置文件了。

module.exports = {

  entry: './main.js',

  output: {

    filename: './bundle.js'

  }

};

entry是入口,output是输出生成的bundle文件对应关系。

运行   cd  demo01,然后npm run dev即可

Demo02: Multiple entry files

首先运行起来看一眼区别,cd demo02, 然后npm run dev走你。

demo02-1

如图,demo02只是比demo01多打印了一句话而已。

直接看index.html文件,

demo02-2

如图,demo02只是多加载进来一个js文件而已,打开看看两个JS文件,里面分别只有一句打印一句话的代码而已。略过不提。

package.json文件依旧不管,两个bundle.js文件也不管,两个main.js文件简单的一句话也看过了,那就剩下webpack的配置文件了。代码先粘出来,

module.exports = {

  entry: {     //  入口

    bundle1: './main1.js',    //  第一个JS文件

    bundle2: './main2.js'    //  第二个JS文件

  },

  output: {

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

  }

};

如图可见,在entry里,不再像demo01中那样只有入口文件名,而是两组key-value,value的值都是我们的JS文件名字(带有相对路径),那么,key,我们猜想就是对应生成的bundle文件名了吧。

再看下方的output输出对应关系,filename的值为 [name].js,那么这个name应该就是一个变量,对应的是entry中的key。既然这样,那我们来验证一下。

添加第三个JS文件,main3.js,也随便打印一句话。然后再配置文件中加入配置:

module.exports = {

  entry: {     //  入口

    bundle1: './main1.js',    //  第一个JS文件

    bundle2: './main2.js',    //  第二个JS文件

    bundle3: './main3.js'     //    添加的第三个文件

   },

  output: {

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

  }

};

然后在html文件中引入加载我们生成对应的bundle3.js文件,如图

demo02-3

OK,添加完毕,编译,运行。

编译:npm build    运行:npm run dev,

demo02-4

   搞定,猜想正确。

Demo03: Babel-loader 

先上结构图:

demo03-1

有没有发现JS文件不见了,而多了一个JSX文件(不知道的请百度),有点意思,看看介绍怎么说。

加载器是预处理器,它可以在Webpack的构建过程之前转换你的应用程序的资源文件(更多信息)。

例如,Babel-loader可以JSX / ES6文件转换成标准JS文件,之后Webpack将开始构建这些JS文件。Webpack的官方文档有一个完整的加载器列表。

main.jsx 是一个JSX文件。

先来看几个文件的内容代码:

demo03-2
demo03-3
demo03-4

上面的代码片段使用了Babel-loader加载器,它需要Babel的预设插件Babel -preset-es2015和Babel -preset-react 转换编译es2015和react。

图2这是react 的写法,先引入需要的react和react-dom,然后在render中把指定的内容,显示在ID为wrapper的控件上。

Demo04: CSS-loader 

Webpack允许你在JS文件中包含CSS,然后用CSS-loader来预处理CSS文件。

main.js只有一句话

require('./app.css');

app.css

body {

background-color:blue;

}

demo04-1
demo04-2

注意,您必须使用两个加载器来转换CSS文件。首先是CSS-loader来读取CSS文件,另一个是样式加载器将<style>标签插入HTML中。

运行,npm run dev,一切正常。

不过我想改写一下,想把main.js改写成一个JSX文件。一起来试试。

1. 首先改造html,加个带命名ID的控件div。

2. 写个JSX文件,如图main1.jsx。

3. 修改webpack配置文件,添加对应的module.rules。依次如下方图:


demo04-03
demo04-04
demo04-05

注意几点:

1. 在html中,如果bundle.js在控件之前引入,会不显示内容。位置不可引错。原因是因为给控件赋值操作其实是编译在bundle.js里面的,因此必须放置控件之后。

2. 在JSX文件中的写法不同于demo03的写法,要注意。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容

  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,080评论 7 35
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 webpack介绍和使用 一、webpack介绍 1、由来 ...
    it筱竹阅读 10,933评论 0 21
  • webpack 介绍 webpack 是什么 为什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert阅读 6,325评论 2 71
  • 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过...
    阳阳阳一堆阳阅读 3,190评论 0 5
  • Gwen陪你读《爱丽丝漫游奇境记》∣9.20 Alice did not dare to disobey, tho...
    123逍遥游阅读 280评论 0 0