模块化的发展史

1 模块化是指对于代码结构的优化,更加方便的管理和维护代码,组件化是对页面功能的具体化,两者没有明显的关系

2 最先开始的CommonJs  RquireJS,AMD衍生自Commonjs,最后扩展成requireJS,而CommonJS玉伯 集成了seaJs,

 一个是服务器端,一个是web浏览器端,

两者最大的区别,资源都是异步加载,但是对于执行时间的区别,commonJs需要代码的时候,才会执行(seajscommonjs),

Requirejs 加载的时候就会执行,预先执行

3 ES6 模块化机制,支持预先静态编译, 确定模块的依赖关系,确定一个只读的动态引用,commonjs 返回的是一个值的引用,一旦返回,内部的变化不会对外面的返回构成影响,ES6 是一个动态引用,执行的时候会自动调用模块内部的属性和函数,获取最新变化值,对于循环引用有了很好的解决;

4 ES6的顶层this是undefined,而commonjs的顶层是当前模块;

5 CMD 和 AMD 两者都是异步加载模块:区别

AMD:依赖前置,所有的依赖定义的时候就定义OK,加载完就立即执行,而且执行模块的顺序也不是写的顺序;  

CMD:就近原则,加载完并不执行,调用的时候执行;

6 requireJS 集成自 AMD,Seajs集成自 CMD,都是浏览器端的模块化插件,commonjs是服务器端的处理方案,ES6 的模块机制是最新的方案;

7 UMD 对二者的整合,做了跨平台的判断,首先判断是否 exports 再 define 然后是window.module={}

你可能感兴趣的:(模块化的发展史)