web-dev-qa-db-ja.com

Angular 2 VS Aurelia?2017

私は多くのSPAフレームワークを評価しています。私は次の2つに固執しており、今後のプロジェクトにどちらを使用するかを決定できません:

  1. 角度2
  2. アウレリア

両方のフレームワークは、大量の操作を約束します。 angular 2はGoogleに支えられ、多くの大企業に採用されているので、とても興奮しました。自分の(指を交差させた)言い訳をAngularファン;)。私もファンですが、.....

これが私がしたことです:

Angular 2

  1. https://github.com/angular/quickstart/archive/master.Zip からクイックスタートをダウンロードしました
  2. クイックスタートの指示に従って、アプリケーションを実行します。
  3. ここで、chrome開発者ツールの[ネットワーク]タブをご覧ください。WOW、少なくとも36のHTTP要求が表示され、この単純なアプリケーションの合計サイズは約1.4MB縮小されています。
  4. 少しグーグルで調べたところ、AOT、treeshaking、gzip ....などの他の方法を使用することで、サイズを縮小し、最大50kおよびhttpリクエストを10まで最小化できることがわかりました。けっこうだ。
  5. 最後にコーディングスタイルを比較しました。HelloAngularを表示するためだけに、main.ts)を作成する必要がありますapp.module.tsapp.component.ts。すべてのファイルに含める必要があります@ Component()デコレーターは、各モジュールにangular coreをインポートする必要があります。そのコンポーネントをモジュールにインポートします。 ts、そしてbootstrap the main.ts.

Aurelia

  1. http://aurelia.io/downloads/basic-aurelia-project.Zip からダウンロード
  2. クイックスタートの指示に従ってください。
  3. Hello worldを含む2つのファイルapp.tsおよびmain.tsを追加しました。
  4. 今までうまくいったアプリケーションを実行します。
  5. 開発者ツールのネットワークタブをチェックすると、0.9MBと表示され、9つのHTTPリクエストが行われます。
  6. 同じ手順に従ってgzipでサイズを最小化し、バンドルすると、5つのhttpリクエストで約170kbになります。

最後に、両方のフレームワークのコーディングスタイルを比較しました。明らかに、Aureliaにはわかりやすい明確なコードがあります。

私がAureliaで見ることができる唯一の欠点は、かなり新しく、多くのJS開発者にはほとんど知られていないことで、これまでのところコミュニティが貧弱です。

Microsoft Windows(Angular 2)およびApple(Aurelia)と見ています。 Appleはより安定しており、特定の範囲のユーザーがいる一方で、Microsoft Windowsはほとんどどこにでもあります。

私は何をすべきか?助けてください。

ありがとう

16
Riy

おそらく、次のAMAは便利ですが、少し古いですが、 AMA with Aurelia Team

最も重要なQ&Aは次のとおりです(引用のみ)。

Angular 2.0は標準から逸脱していると思いますか? Aureliaは標準に準拠し、独立することを目指していますか?

この場合、それは信念の問題ではなく、実際の問題です。 HTML仕様を見て、Angular 2を見ると、それらが調和していないことがわかります。

1年以上前に、Angular 2チームはシンボリックバインド構文を導入しました。これは技術的に標準に準拠したHTMLでしたが、コミュニティによって、SVGに準拠していないことが指摘されました(私は自分自身を確認していません)。コミュニティのメンバーはこれを指摘しましたが、Angular 2チームは設計に変更を加えませんでした。ベータ2の時点では、大文字と小文字を区別する制約を含む追加の属性/要素構文を実際に採用しています。 HTMLでは大文字と小文字が区別されないため、仕様に違反します。その結果、ブラウザーのパーサー、DOMParser API、さらにはinnerHTMLでネイティブに動作するAngular 2を取得することは実際にはできません。 「信頼」することはできません。つまり、Angular 2が大文字と小文字の区別(ngForとngModel attrs)に依存している場合、ブラウザはそれをネイティブに処理できません。この問題を解決するには、Angular 2チームが独自のマークアップパーサーを実装する必要があることを理解しています。結論:彼らが何をビュー言語と呼んでいるのか分かりませんが、それはHTMLではありません。

Aureliaにとって、標準への準拠は非常に重要です。私たちは、現在の標準と新しい標準を一致させ、それらと競合したり、違反したりするようなことをしないように努力しました。まだカバーされていない追加機能(データバインディングなど)を追加する必要がありますが、既存および新しいWeb標準に準拠する方法で追加しました。 Aureliaの開発者を優れたWeb開発者にしたいので、この方法で無期限に継続する予定です。


私は角度から来ていますが、なぜangular 2ではなくaureliaを使用する必要がありますか?私の利点は、angularをすでに知っていることと、巨大なコミュニティがあることです。ありがとう。

まず、ここで仮定を修正することが重要だと思います。 Angular 2はAngular 1の単なる増分または進化的変化であるという仮定です。それは正しくありません。 Angular 1とAngular 2の間で同じものは、A、N、GU、L、A、およびRの文字のみです。これらは2つの完全に異なるフレームワークであり、別々に記述されていますさまざまなアーキテクチャ、さまざまな概念、さまざまな開発方法論、さまざまな機能、さまざまなコミュニティなど、すべてが異なるプログラミング言語。

私はここのソープボックスにいます...しかし、このフレームワークをAngularと呼ぶのは少し欺bit的だったと思います。古いライブラリとはまったく関係のないまったく新しいライブラリです。新しい名前を付ける必要がありました。しかし、彼らはあなたが言及した理由とまったく同じ名前を付けました。 Angular 2を採用することを考えないようにしたいのは、それが完全に異なるものではなく、単なる漸進的または進化的変化であると考えるからです。

Angular 1からAngular 2への移植は、移行ツールではない「移行」ツールを使用した場合でも、膨大な作業です。それらは統合戦略です。実際、移行には多くの作業が必要です。完全に書き直し、アプリケーションの書き方を再考する必要があります。一部のAngular 1アプリケーションは、Angular 2がUIの動的構成に関連する特定の機能をロックまたは削除したため、Angular 2で達成できません。バインディング式の観察。

興味深いことに、Angular 1アプリケーションをAureliaに移植する方が実際には簡単です。コミュニティには、それをやったことがあり、その経験に非常に満足しているたくさんの人々がいます。以下に、AureliaがAngular 2より優れている利点の短いリストを示します。

  • Aureliaははるかに小さなライブラリです。 Angular 2は750kで縮小され、ルーター、アニメーション、またはHTTPクライアントは含まれません。それは誰もがこれまでに生産に行くことを考えるべきものではありません。 Aurelaは350kに縮小されており、ルーター、アニメーション、httpクライアントが含まれています。最新のブラウザを対象としており、当社が提供するすべてのポリフィルを必要としない場合は、そのサイズを最大でさらに100k削減できます。
  • 独立したdbmonster re-Paintレンダリングベンチマークでは、AureliaはAngular 2と同じかそれより高速です。今後のui-virtualizationプラグインでは、Angular 2のほぼ2倍の速度です。
  • Aureliaは標準に準拠しています。 Angular 2はそうではありません。詳細については、他のAMAの回答をご覧ください。
  • Aureliaは、MVVMなどの分離されたプレゼンテーションパターンをよりよくサポートします。 MVCおよびMVP。 Aureliaでは、ビューとビューモデルが明確に分離されています。すべての責任は適切な場所にあります。 Angular 2では、ビューの内部実装詳細を使用してビューモデルを構成する必要があります。そのため、カプセル化が解除され、ビューモデルまたはビューの再利用が困難または不可能になります。また、メンテナンスコストが大幅に増加し、開発者のチームがコンポーネントで並行して作業することが難しくなります。
  • アウレリアは非常に目立たない。ほとんどの場合、プレーンなES 2016またはTypeScriptコードを記述します。 JavaScriptコードにはフレームワークがほとんどまたはまったく表示されません。邪魔にならないようにします。これは、コードの寿命と保守、および学習可能性と可読性にとって非常に重要です。対照的に、Angular 2はどこにでもインポートする必要があり、そのメタデータはコード全体で必要です。 Angular 1と同じくらい非常に構成が重いため、構成のみが異なります。
  • AureliaはAngular 2よりも他のライブラリと相互運用性があります。これは、DOMを不必要にダイジェストまたは抽象化しないためです。フレームワークが標準に近づき、フレームワークから離れるほど、相互運用性が高まります。
  • 最後に、AureliaはDurandal Incの支援を受けています。同社の唯一の目的は、Aureliaとそのエコシステムを構築し、それをサポートすることです。一方、Angular 2は、Google内部の6つの競合するUIフレームワークの1つです。それぞれが「Google blessed stack」のように見えることを望んでいますが、どれもそうではありません。実際には、Googleの役人はこれらのライブラリのいずれも支援もサポートもしていません。それらは、それらを構築するさまざまなチームのオープンソースのサイドプロジェクトです。 Angular 2の場合、それはGreen Teaチームによって構築され、その実際の仕事は内部CRMタイプのアプリケーションを構築することです。

他の多くの理由があります...しかし、それは簡単な少数です。

12
Marc Scheib