开始之前

模块化

在尝试写一个webpack之前,我们需要了解和熟悉模块化这个概念。

模块化的作用是增强代码可读性和维护性。

为什么需要模块化?模块化的目的是:

  • 传统的网页开发转变成Web Apps开发,业务场景复杂了,有的逻辑需要放到浏览器端或者手机端的H5去实现
  • 代码复杂度在逐步增高,为了降低代码逻辑的复杂度,就分离JS文件/模块,便于后续代码的维护性
  • 部署时希望把代码优化成几个HTTP请求——代码分包

常见的模块化方式

image.png

AST基础知识

image.png
AST树的应用:

  • 模板引擎的编译方法之一就是转换成一个个节点的字符流,然后转成AST树分析,然后将分析结果渲染成一个字符串。其他方法还有就是直接进行字符串匹配
  • bable将ES6转成ES5
  • TS转成JS

可以了解一下ast具体的生成规则。

在此基础上我们可以敲定我们要完成的简易webpack的基本要求:
image.png

开始动手