2016-05-12 75 views
2

正如他在article提及ADDY OSMANI -为什么Angular 2是用CommonJs模块格式编写的,而不是AMD?

AMD采用浏览器第一的发展方针,选择了 异步行为和向后兼容性简化,但它 没有文件的任何概念I/O.它支持对象,函数, 构造函数,字符串,JSON和许多其他类型的模块,在浏览器中本地运行 。它非常灵活。在另一方面

CommonJS的需要服务器的第一种方法,假设 同步行为,没有全球性的行李约翰翰将参考 它并试图以应付未来(在服务器上)。我们的 这意味着,因为CJS支持未包装的模块,它可以更接近ES.next/Harmony规范,您可以释放AMD强制执行的define()包装器。然而,CJS模块 仅支持将对象作为模块。

所以,Angular是一个客户端JavaScript框架,应该已经被写入AMD模块格式。请帮助我了解我在这里错过了什么。

谢谢!

+1

*“接近ES.next/Harmony规格”* - 应该有足够的理由。 – deceze

+0

@deceze那么说它是用ES.next/Harmony/ES6模块格式编写的,而不是在CommonJs中呢? –

回答

1

Angular 2拥有自己的模块 - 它使用SystemJS

SystemJS是在ES6模块装载机建库提供一种方式来加载

  1. ES6模块

  2. CommonJS的模块

  3. AMD模块

  4. 全球脚本。

所以Angular 2支持所有这些模块格式。一些开发人员更喜欢使用不支持AMD公约的模块。

相关问题