嘎嘎学习之webpack | 青训营笔记

107 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第九天

1. 为什么要学习webpack

  • 理解前端“工程化”概念、工具、目标
  • 一个团队里总要有几个人熟悉webpack,可以形成个人的核心竞争力
  • 高端前端的必经之路

2. 什么是webpack

image-20220811180606679

远古时代--手动管理

image-20220811180651099

然后就迎来了webpack的时代

image-20220811181004823

3. webpack配置

3.1 流程类配置

image-20220811201753329

3.2 工具类配置

image-20220811202046603

3.3 文件结构

image-20220811202128008

3.3 loader的一些问题

  • loader有什么作用,为什么这里需要用到css-loader、style-loader?
  • 与旧时代--在html文件中维护css相比有什么优点?
  • 有没有接触过less、sass、stylus这一类css预编译框架们如何在webpack中接入这些工具?

4. babel

babel本质上是js代码的转译工具

在es6刚推出的时候,很多的浏览器都不支持es6的特性,所以就需要将es6代码转换为低版本的代码

image-20220811203122942

4.3 bable的一些问题

  • babel具体有什么功能?
  • babel与webpack分别解决了哪些问题?为什么两者可以协作在一起

5. 使用webpack

5.1 case

image-20220811200615328

5.2 核心流程-精简版

image-20220811201024644

5.4 webpack一些功能

image-20220811201457113

5.5 使用webpack生成css

image-20220811204450486

5.6 使用webpack生成html

就是用到了一个插件

image-20220811204330999

image-20220811204349845

  • 相比于手工维护html内容,这种自动生成的方式i有什么优缺点

5.7 HTR

模块热替换,实际上就是实时刷新,在写完代码之后可以立即更新

image-20220811204750522

还可以加一个watch:true,持续的监听构建

image-20220811205509528

5.8 Tree-Shaking 树摇

就是用来删除一些没有用到的代码

image-20220811205617862

开启树摇方法

image-20220811205805429

image-20220811205745174

5.9 一些别的工具项

  • 除了前面提到的内容,还有那些配置可以划分为“流程类”配置/
  • 工具类配置具体有什么作用?用到了什么技术?devtool/cache/stat等

6. 进阶 理解loader

loader做的事情实际上就是内容转化,因为webpack只认识js代码,如果要打包css或者图片就会报错,这个时候就需要用到loader,将非js资源转换为js资源

image-20220811210805863

链式调用

image-20220811211105329

其它特性

image-20220811211936225

6.2 如何编写loader

image-20220811212318871

6.3 常见的loader

image-20220811212844911

6.4

  • loader输入是什么,输出是什么
  • loader的链式调用是什么意思?如何串联多个loader
  • loader中如何处理异步场景

7. 进阶 理解插件

7.1 插件是什么?为什么这么设计

精髓:对扩展开放,对修改封闭

image-20220811213326806

甚至可以说,整个webpack就是由一堆插件构建起来的

钩子:可与理解为一个事件,在一个特点的条件下会被触发

image-20220811214101692

image-20220811214426408

  • loader与插件有什么区同点
  • “钩子”有什么作用,如何监听钩子函数?

7. 学习方法

  • 主要还是多查看官方问挡,这是前端学习非常重要的一个途径
  • 然后可以尝试自己开发插件和配置