Angular 2 TS和Angular 2 Dart之间的区别是什么?

时间:2016-11-30 05:19:06

标签: angular dart

Angular 2和Dart之间的区别是什么?

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

2 个答案:

答案 0 :(得分: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="...">

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

  • 绑定表达式支持的语言结构已经有很大的不同,因为它们是使用过的语言的一个子集。
[ngClass]="{cName: value}
如果cName不是当前作用域中的已知标识符,

将导致Dart中的错误,而在JS / TS cName中只会按字面意思使用。

[attr.someAttr]="someProp ?? true" // Dart only
  • 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需要填充的不同浏览器。

答案 1 :(得分:3)

Angular不是JavaScript替代品,它是用于构建Web应用程序的框架。 Angular有3种语言风格,适用于JavaScript,Typescript和Dart。

Typescript和Dart都可以被描述为JavaScript&#39;替换&#39;,因为可以用它们编程而不是JavaScript来构建Web应用程序。

Dart也可以用于非Web应用程序编程,可以使用Java,Ruby或Python。

还有一个正在开发的Dart移动应用程序框架。