模块系统规范
CommonJS规范:服务器端的Node.js遵循CommonJS规范,该规范的核心思想是允许模块通过require方法来同步加载所要依赖的其他模块,然后通过exports或module.exports来导出需要暴露的接口。实现有node.js
缺点:同步的模块加载方式不适合在浏览器环境中,同步意味着阻塞加载,浏览器资源是异步加载的
AMD(Asynchronous Module Definition)规范:其实只有一个主要接口define(id?,dependencies?,factory),它要在声明模块的时候指定所有依赖,并且还要当作形参传到factory中,对于依赖的模块提前执行,依赖前置。实现有require.js
CMD(Common Module Definition)规范:和AMD规范很相似。实现有sea.js
UMD(Universal Module Definition)规范:类似于兼容CommonJS和AMD的语法糖,是模块定义的跨平台解决方案。
ES6模块:设计思想是尽量的静态化,使得编译时就能确定模块的依赖关系,CommonJS和AMD模块,都只能在运行时确定这些东西。实现有babel