Webpack知识体系 | 青训营笔记

69 阅读2分钟

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

为什么要学习Webpack

  • 理解前端工程化的概念、工具和目标
  • 一个团队总要有那么几个人熟悉webpack,某种程度上能够成为个人的核心竞争力
  • 高阶前端必经之路

什么是Webpack?

功能

Webpack是一个构建工具,能够把各种资源打包成最终能够在浏览器上运行的结果

所谓资源,就是网页中涉及到的各种诸如pngjpg等图片,jsts等代码,csslesssass等样式表文件,以及vuejsx等前端框架的文件,它们都是资源,能够经过特殊手段处理后被浏览器识别运行

资源可以手动管理,但是当项目变得复杂时,手工管理的方式就有些力不从心了,比如有50个js文件,并且它们之间是有依赖关系的,如果纯手工去管理这些依赖关系,也就意味着要严格按照依赖关系去排序js文件的加载顺序,这是十分低效的一件事

开发与生产环境一致时,难以介入ts或js的新特性

比较难接入less、sass等css预处理器工具,总是需要手动运行less、sass编译器将其编译成css再手动加载,也是十分低效

Webpack打包的核心流程

Entry => Dependencies Lookup => Transform => Bundle => Output

Webpack的关键配置项:

  • Loader -- 用于将非js资源转成模块
  • Plugin -- 用于干一些Webpack自身不具备的特性的事情

本质

其本质上是一个前端资源编译、打包的工具,能够做到:

  • 多分资源文件打包成一个Bundle
  • 支持Babel、Eslint、TS、Less、Sass
  • 支持模块化处理css、图片等资源文件
  • 支持热更新HMR + 开发时服务器
  • 支持持续监听、持续构建
  • 支持代码分离
  • 支持Tree-Shaking
  • 支持SourceMap
  • ...

如何学习Webpack?

  • 入门级:学会灵活应用
  • 进阶:学会扩展Webpack
  • 大师:源码级理解Webpack打包编译的原理