Angular 2 TS和Angular 2 Dart有什么区别?

Hor*_*ray 7 dart angular

Angular 2和Dart有什么区别?

我读过你可以和dart一起使用AngularJS.那是什么意思?它们不是JavaScript的替代品吗?

Gün*_*uer 15

更新(2018/01)

虽然模板语法仍然非常相似,但是其他的东西,比如配置DI和注册组件以及生命周期回调,在Angular的Dart和TS版本之间越来越多,因为这两个版本在2016年5月被拆分为独立开发.

原版的

TypeScript是JavaScript的超集,它只允许以更"理智"的方式使用JS.

Dart凭借自己的语言语义远离JavaScript.Dart可以翻译成JS.

哪种支持的语言适合您,主要取决于您的要求或个人偏好(或您的管理人员).

  • 所有3种语言的模板绑定语法几乎相同
[prop]="value"`
[attr.attrName]="value"
prop="{{value}}"`
attr.attrName="{{value}}"
(event)="..."
<div *ngFor="...">
Run Code Online (Sandbox Code Playgroud)

想到的一个区别是TS/JS版本得到了<ng-container>Dart中尚未提供的版本. @ContentChildren()表现有点不同.

  • 绑定表达式中支持的语言结构已经有很大不同,因为它们是所用语言的子集.
[ngClass]="{cName: value}
Run Code Online (Sandbox Code Playgroud)

如果cName不是当前范围内的已知标识符,将导致Dart中的错误,而在JS/TS cName中将仅使用字面意思.

[attr.someAttr]="someProp ?? true" // Dart only
Run Code Online (Sandbox Code Playgroud)
  • Angular2 Dart没有NgModule主要用于路由器的延迟加载.Dart有它自己的懒加载故事,不需要NgModule

  • TS/JS支持不同的平台,如服务器端渲染,WebWorker.Angular2 Dart目前不提供这些.
    正在进行的工作是使Darts自己的HTML抽象dart:html与服务器端代码兼容,这可能允许服务器端渲染.WebWorkers最终可能也会以与TS/JS不同的方式支持.

  • 对于Dart,没有动态平台.在JS/TS中,它支持在运行时编译组件.这在Dart中不受支持,它可能永远不会.

  • Dart似乎在AoT上做得更好,因为输出大小和性能会出现树木抖动(不完全确定 - 需要基准测试)

  • Dart有它自己的构建故事,这部分与JS/TS完全不同.

  • Darts DOM抽象层dart:html包含很多抽象,适用于JS/TS需要polyfill的不同浏览器.