Webpack知识体系|青训营笔记

97 阅读2分钟

Webpack知识体系|青训营笔记

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

为什么要学习Webpack?

  • 理解前端“工程化”概念,工具,目标
  • 高阶前端必经之路

什么是webpack

前端项目构成

image.png

工程化工具

image.png

webpack

本质上是一种前端资源编译,打包工具

  • 多份资源文件打包成一个Bundle
  • 支持Babel,Eslint,TS,CoffeSccript,Less,Sass
  • 支持模块化处理css,图片等资源文件
  • 支持HMR + 开发服务器
  • 支持持续监听,持续构建
  • 支持代码分离
  • 支持Tree-shaking
  • 支持Sourcemap

核心流程 1.入口处理

从‘entry’文件开始,启动编译流程

2.依赖解析

从‘entry’文件开始,根据‘require’ or ‘import’ 等 语句找到依赖资源

3.资源解析

根据‘module’配置,调用资源转移器,将png,css等非 标准JS资源转译为JS内容

4.资源合并打包

将转译后的资源内容合并打包为可直接在浏览器运行的JS文件

模块化 + 一致性

  1. 多个文件资源合并成一个,减少HTTP请求数
  2. 支持模块化开发
  3. 支持高级JS特性
  4. 支持Typescript,CoffeeScript方言
  5. 统一图片,CSS,字体等其他资源的处理模型
  6. Etc

使用Webpack

image.png

image.png

image.png

image.png

Tree-shaking

Dead Code

  • 代码没有被用到,不可到达
  • 代码的执行结果不会被用到
  • 代码只读不写

Tree-shaking

  • 模块导出了,但未被其他模块使用

理解Loader

Webpack只认识js

为了处理非标准Js资源,设计出资源翻译模块——Loader 用于将资源翻译为标准JS

image.png

Loader特点

  • 链式执行
  • 支持异步执行
  • 分normal,pitch两种模式