-
CommonJs
用的是同步的方式加载模块。NodeJs
是该规范的主要实践者,module exports require global
这四个变量为模块化的实现提供了支持。最基础的模块的导入导出这里就不再赘述。我们需要知道,在服务端,模块文件都存在本地磁盘,读取速度是很快的,所以使用同步加载问题不大。但在浏览器端,由于各方面原因,更多的还是推荐异步加载,即浏览器一般采用
AMD
规范。 -
AMD
即Asynchronous Module Definition
,RequireJs
是其对应实践。它推崇依赖前置、提前执行。 -
CMD
即Common Module Definition
,SeaJs
是其对应实践。它推崇依赖就近、延迟执行。 -
除此之外还有ES6模块值得一提,它在语言标准的层面上,很简单的使用
import和export
就实现了浏览器端和服务端通用的模块解决方案。与CommonJs
的区别在于,前者输出的是一个值的拷贝,而ES6
模块输出的是值的引用。前者是运行时加载,后者是编译时才输出接口。参考文章:
网友评论