您对AMD与 CommonJS的看法如何?
Topics
JavaScript
在GitHub上编辑
这两种方法都是实现模块系统的方法,而在实现 ES2015 年之前,模块系统没有在 JavaScript 中实现。 CommonJS 是同步的,而 AMD (异步模块定义) 显然是异步的。 CommonJS 设计时考虑到服务器端的开发,而 AMD 支持异步加载模块,更适合于浏览器。
AMD 语法可以非常详细,CommonJS 更接近您用其他语言写导入语句的样式。 大多数时间, AMD 是不必要的, 因为如果你将你所有的 JavaScript 打包到同一个文件, 您无法从异步加载属性中获益。 另外,CommonJS 语法更接近于 Node.js 写入/导入模块的风格,在客户端和服务器端 JavaScript 开发之间的切换过程中的间接成本较少。
未来的标准、ES 模块支持同步和异步加载,并得到浏览器和服务器端运行时间的支持。 我们终于可以只坚持一种方法了(除非升级遗留的应用程序)。