一、什么是模块化开发

    当我们把项目、页面根据关联性,分解成独立的小模块进行开发时,每个模块之间有不同的功能且互相独立,想要什么功能就加载什么模块。最后会导致JS的各个模块之间看不出关联性,也不方便后期维护,这个时候就需要一种规范将这些互相独立的模块关联起来。

    二、COMMONJS规范、AMD规范、CMD规范 —模块化的诞生

    CommanJS

    CommonJS最开始是Mozilla的工程师最先提出的,他的目的就是为了JS可以模块化协作开发,而Node.js实现了这个规范。

    CommonJS 是最早的规范。

    CommonJS 的规范中,每个 JavaScript 文件就是一个独立的模块.

    CommonJS 的规范中提出定义模块 调用模块 配置模块的方式方法

    CommonJS 规范的主要适用场景是服务器端编程, 所以采用同步加载模块的策略

    CommonJS规范虽然是最早的规范,但是它不适合前端开发,后面我们根据COMMONJS规范产生了AMD规范


    AMD规范

    AMD 是Asynchronous Module Definition 的简称,即“异步模块定义”,是从CommonJS讨论中诞生的。

    AMD 优先照顾浏览器的模块加载场景,使用了异步加载和回调的方式。

    浏览器端异步加载库Require.js实现的就是AMD规范。

    AMD 规范虽然适合前端开发,需要引入require.js的插件(工具)

    CMD规范

    CMD规范,全称”Common Module Definition”,称为 通用模块加载规范 。一般也是用在浏览器端。浏览器端异步加载库Sea.js实现的就是CMD规范。(SeaJS的作者是前淘宝UED,现支付宝前端工程师玉伯)

    CMD 规范虽然适合前端开发,但是需要引入Sea.js的插件(工具),并且现在CMD规范已经不开源了

    三、ES6模块化

    https://es6.ruanyifeng.com/#docs/module

    需要注意的是,模块化需要通过服务器加载,所以我们想要预览页面,必须通过服务器打开。