WEB 前端模块化都有什么?

前言
说到前端模块化,你第一时间能想到的是什么?Webpack?ES6 Module?还有吗?我们一起来看一下下图 。

WEB 前端模块化都有什么?

文章插图
 
相信大伙儿对上图的单词都不陌生,可能用过、看过或者是只是听过 。那你能不能用一张图梳理清楚上述所有词汇之间的关系呢?我们日常编写代码的时候,又和他们之间的谁谁谁有关系呢?一、千丝万缕
为了更贴合我们的日常开发场景(前后端分离),我们尝试先从不同平台的维度区分,作为本文的切入点 。
1. 根据平台划分
平台 规范 特性 浏览器 AMD、CMD 存在网络瓶颈,使用异步加载 非浏览器 CommonJS 直接操作 IO,同步加载 可以看到我们非常暴力的以是不是浏览器作为划分标准 。仔细分析一下,他们之间最大的差异在于其特性上,是否存在瓶颈 。例如说网络性能瓶颈,每个模块的请求都需要发起一次网络请求,并等待资源下载完成后再进行下一步操作,那整个用户体验是非常糟糕的 。根据该场景,我们简化一下,以同步加载和异步加载两个维度进行区分 。
特性 规范 同步加载 CommonJS 异步加载 AMD、CMD 2. AMD、CMD 两大规范
先忽略 CommonJS,我们先介绍下,曾经一度盛行的 AMD、CMD 两大规范 。
规范 约束条件 代表作 AMD 依赖前置 requirejs CMD 就近依赖 seajs AMD、CMD 提供了封装模块的方法,实现语法上相近,甚至于 requirejs 在后期也默默支持了 CMD 的写法 。我们用一个例子,来讲清楚这两个规范之间最大的差异:依赖前置和就近依赖 。


    推荐阅读