2016-11-30 89 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移動應用程序框架。