2016-11-30 57 views
4

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

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

+0

他们不是JavaScript更换。 AngularJS是一个JavaScript框架,Dart类似于Typescript和JSX,它的JavaScript扩展,我不会称之为替代品。毕竟飞镖被转换成javascript。 – Mox

+0

@Mox飞镖也是一个框架吗?如果是这样,两个框架如何一起使用? – Horay

回答

10

更新(2018/01)

虽然模板语法还是相当类似,其他像配置DI和注册组件,并生命周期回调是发散越来越多的角镖和TS口味之间因为这两个版本在2016年5月份分开独立开发。

原始

打字稿是JavaScript的一个超集,它只是允许以更“理智”的方式来使用JS。

Dart离它自己的语言语义更远离JavaScript。飞镖可以转换为JS虽然。

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

  • 所有3种语言
[prop]="value"` 
[attr.attrName]="value" 
prop="{{value}}"` 
attr.attrName="{{value}}" 
(event)="..." 
<div *ngFor="..."> 

一个不同之处,想到模板绑定语法几乎是相同的是,TS/JS版本得到了<ng-container>这不是(还)可在Dart中找到。 @ContentChildren()表现有点不同。

  • 绑定表达式中支持的语言结构已经有很大差异,因为它们是使用语言的一个子集。
[ngClass]="{cName: value} 

将导致错误在达特如果cName不是在当前范围内的已知标识符而在JS/TS cName将只是字面上使用。

[attr.someAttr]="someProp ?? true" // Dart only 
  • Angular2达特没有NgModule这主要是引入了延迟加载与路由器。 Dart有它自己的延迟加载故事,不需要NgModule

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

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

  • 飞镖似乎做一个好一点的AOT与树摇动输出尺寸和性能(不完全确定 - 需要基准)

  • 飞镖都有它自己构建的故事,这部分作品比JS完全不同/ TS。

  • 飞镖DOM抽象层dart:html包含了JS/TS需要polyfills的不同浏览器的很多抽象。

2

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

Typescript和Dart都可以被描述为JavaScript的“替代品”,例如人们可以在其中编程代替JavaScript来构建Web应用程序。

Dart也可用于非Web应用程序编程,其中可能会使用Java,Ruby或Python。

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