AngularJS 2のリリースに伴い、ドキュメントではTypeScript
、Javascript
、Dart
の3つの言語が提案されています。
私はJavascript EcmaScript 5にしか慣れていませんが、これら3つの長所と短所は何ですか?
この質問が尋ねられた時点で、ドキュメントはTypeScriptでさらに開発されており、他のドキュメント(独自の言語Dartでさえ)でかなりスリムになっています。
Javascriptを使用して開発する習慣を変更し、TypeScriptを使用してAngular 2が示唆しているものに従うか?それは本当にJavascriptの概念を変更するか?
AngularJS 2.0 公式ウェブサイト
必要なものはすべて、ダーツエコシステムによって片手で提供されるため(言語、パッケージ管理、ビルドなど)、Dartを簡単に開始できます。
TypeScript
TSには、膨大なユーザーベースがあるため、利用可能なリソースが最も多くあります(ドキュメントなど)。
の ダーツと JSバージョンのAngularはTSから生成されます。Angular + TSプロジェクトを立ち上げて実行するには多くの問題があるようですが(SOのAngular2の質問を参照)、すべてが既にセットアップされているシードプロジェクトを利用できます。自分でDartだけを使用しているため、詳細はわかりません。
TSには Angular CLI があり、TypeScriptを使用したAngular2の開発者エクスペリエンスが大幅に向上しました。
JavaScript、ES5、ES6
あなたがJS純粋主義者なら、それはあなたにとって正しい言語かもしれません。そうでない場合(あなたが多分この質問をすることはないでしょう)、DartまたはTSを使用した方が良いと確信しています。 Angularはいくつかの方法で型注釈を使用します。JSでは、「回避策」が必要です。
ダーツ
Dartは、うまく機能するツールのセットを備えた素晴らしい言語です。 JS/TS環境が引き起こす多くの問題は、Dartにとってエレガントに解決されます。
2016/05年頃から、Angular2 Dartは独立したプロジェクトであり、TSおよびJSバージョンとはかなり異なります(2016/10現在)。
TSでオフラインテンプレートのコンパイルで動作するように何度か置き換えられたルーターモジュールは、Dartでは遅延読み込みが「古い」ルーターでも正常に動作するため、Dartでは置き換えられませんでした。
...また、NgModule
は同じ理由でDartに導入されませんでした。
TS用に構築された新しいFormsモジュールは、(まだ)Dartに移植されていません。
Dartは最初からオフラインでテンプレートをコンパイルしていましたが、実行時にコンポーネントをコンパイルするbrowser-platform-dynamicをサポートしていません。
新しいDependency Injectionモジュールは、TypeScriptコードから自動生成されたDIシステムを置き換えるために、Dagger2に基づくDart(現在はまだ利用できません)で進行中のようです。
Angular2 Dartはビルド出力サイズとランタイムパフォーマンスに重点を置いていますが、マルチプラットフォームサポート(サーバー側レンダリングなど)のAFAIKサポートは廃止されました。