Webpack知识体系|青训营笔记

99 阅读2分钟

Webpack知识体系|青训营笔记

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

Webpack的学习

什么是webpack

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

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

核心流程————极度简化版

1.入口处理

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

2.依赖解析

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

3.资源解析

根据'module'配置,调用资源转一起,将png、css等非标准JS资源转译为JS内容

4.资源合并打包

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

循环调用2、3直到所有资源处理完毕

模块化 + 一致性

    • 多个文件资源合并成一个,减少http请求数
    • 支持模块化开发
    • 支持高级JS特性
    • 支持Typescript、CoffeeScript方言
    • 同意图片、CSS、字体 等其他资源的处理模型
    • Etc...

插件是什么?

前端插件指由js封装的可独立提供使用的ui,实现某一类特定的功能和效果。从组成上来说,由js文件或是js和css共同构成,两种方式。

钩子的核心信息

1.时机:编译过程的特定节点,Webpack会以钩子形式通知插件此刻正在发生什么事情;

2.上下文:通过tapable提供的回调机制,以参数方式传递上下文信息;

3.交互:在上下文参数对象中附带了很多存在side effect的交互接口,插件可以通过这些接口改变。

学习方法

1.入门应用

  • 理解打包流程
  • 熟练掌握常用配置项、Loader、插件的使用方法,能够灵活的搭建集成Vue、React、Babel、Eslint、Less、Sass、图片处理等工具的Webpack环境
  • 掌握常见脚手架工具的用法,例如:Vue-cli、create-react-app

2.进阶 理解Loader、Plugin机制,能够自行开发Webpack组件 理解常见性能优化手段,并能用于解决实际问题 理解前端工程化概念与生态现状

3.大师级 阅读源码,理解Webpack编译、打包原理,甚至能够参与共建