AngularJS 2 – 使用哪种语言? (打字稿,Javascript,镖)

随着AngularJS 2出来,文档build议三种语言: TypescriptJavascriptDart

我只是习惯了Javascript EcmaScript 5,我想知道这三者的优缺点是什么?

当问这个问题的时候,文档在打字稿上更加发达,其他人(甚至他们自己的语言飞镖)也很苗条:

  • Typescript: 4个教程,16个开发人员指南,4个testing指南
  • Javascript: 0个教程,4个开发人员指南,0个testing指南
  • Dart: 0个教程,14个开发人员指南,0个testing指南

我是否应该改变使用Javascript进行开发的习惯,并遵循Angular 2使用Typescript的build议? 它真的改变了Javascript的概念吗?

AngularJS 2.0官方网站

Dart可以轻松启动,因为您需要的一切都是由Darts生态系统提供的(语言,包pipe理,构build等)。

打字稿

对于TS,有最多的资源(文档,…),因为有一个庞大的用户群。

TS的Dart和 JS版本是由TS生成的。
看起来有很多问题需要启动和运行Angular + TS项目(请参阅这里的Angular2问题),但是在已经build立的所有项目中都有种子项目可用。 我不知道细节,因为我自己只使用Dart。

对于TS来说,现在有了Angular CLI ,它使用TypeScript改善了Angular2的开发者体验。

JavaScript,ES5,ES6

如果你是一个JS纯粹主义者,它可能是适合你的语言。 如果没有(如果你是你可能不会问这个问题),那么我很确定你最好使用Dart或TS。 Angular以几种方式使用types注释。 有了JS,需要“解决方法”,否则一个简单的types注释就足够了(主要是dependency injection)。

飞镖是一个很好的语言与一套工具,一起工作得很好。 JS / TS环境引起的很多问题都为Dart优雅地解决了。

由于2016/05年左右,Angular2 Dart是一个独立的项目,与TS和JS版本(截至2016/10)截然不同。

  • 在DTS中被取代的路由器模块,使其脱机模板编译工作,并没有在Dart中被取代,因为在Dart中,延迟加载对于“旧”路由器也能正常工作。

  • 而且NgModule也没有出于同样的原因被引入Dart。

  • 为TS构build的新表单模块尚未移植到Dart。

  • Dart从一开始就离线模板编译,但不支持browser-platform-dynamic在运行时编译组件。

  • 基于Dagger2(目前尚不可用)的Dart似乎正在开发一个新的dependency injection模块,用于replace从TypeScript代码自动生成的DI系统。

  • Angular2 Dart非常注重构build输出大小和运行时性能,但是对多平台支持(如服务器端渲染)的AFAIK支持却被抛弃了。