web-dev-qa-db-ja.com

Angular JSはGoogle Closureとどのように関連していますか?

これでAngularJS1.0 リリースされました このプロジェクトが他の汎用JavaScriptフレームワーク/ツールとどのように適合するのか疑問に思っていますGoogle、Closure

私はこれら2つのテクノロジーの基本的な説明しか見なかった(そしてクロージャーに関する本の約半分を読んだ)ので、直接の経験はありませんが、これは私にとっては次のようになります。

  • クロージャーは、個別に使用できる一連のテクノロジーです。私がおそらく最も魅力的だと思うのは:
    • Closure Compilerは、典型的な問題を警告する意味で「JavaScriptを修正する」ように見え、いくつかのコンパイル時チェックを提供します(これを好むすべての人ではありませんがおそらくほとんどのGoogle開発者がそうですが、私もそうです)。そしてもちろん、結果のコードが小さくて効率的であるのは素晴らしいことです。
    • 次に、Closure Libraryの一部が好きです。組み込み型(ArrayLikeなど)、クラスベースのシステム、イベントメカニズム、DOM抽象化などに対する抽象化。GUIライブラリが好きかどうかはまだわかりません(非常に複雑で、まだ勉強する時間はありませんでした)。
    • 次に、便利だとは思わないいくつかの機能があります。 テンプレート
  • 簡単に読んだだけのAngularJSは、クロージャーよりもはるかに高いレベルのようです。データバインディング、再利用可能なコンポーネント、MVC構造などの機能を提供するアプリケーションフレームワークのようです。

したがって、これらの2つのテクノロジーはまったく異なるレベルの抽象化を目的としているようですので、私の最初の考えは、それらを一緒に使用できるかということでした。 Angularアプリケーションレベルのサービスと構造を提供しながら、低レベルのコンパイラーとブラウザーの抽象化を提供するクロージャー?それは理にかなっていて、一緒にうまく機能するでしょうか?

44
Borek Bernard

私が知っている、AngularJSを使用している唯一のGoogleプロジェクトは、DoubleClickチームです。 (presentation) 基本的に、UI構築以外のすべてにGoogle Closure Libraryを使用しています。また、Google Closure Compilerを使用していますが、これはほぼ当たり前のことです。「nobody」はコンパイラなしでライブラリのみを使用します。

Google Closure Libraryのgoog.ui名前空間には、UIフレームワークが付属しています。このフレームワークは、ほぼすべての点で、Android、iOS、Swing、QTなどの非Web UIフレームワークと比較できます。これらには、ステロイドのDOM要素goog.ui.Componentと呼んでいるものがあります。これには、ガベージコレクションやイベントリスニングなど、多くの優れたライフサイクルメカニズムがあります。 goog.ui.Controlのようなものがあります。これはgoog.ui.Componentのサブクラスであり、ユーザーの操作を非常に興味深い方法で処理します。たとえば、レンダラーをプラグインできるため、実際のレンダリング以外の他のロジックを変更せずに、<button><a>に変更できます。

クラスとサブクラスと言えば、Google Closure Libraryにもこれがあります。組み込みのものを使用する必要はありません。重要な部分は、メソッド内で「スーパークラス」のプロトタイプを何らかの方法で呼び出すことです。たとえば、CoffeeScriptでクラスシステムを使用できますが、Google Closure Libraryは関係ありません。

DoubleClickチームがAngularJSを選択した理由は、主にAngularJSが提供するデータバインディング機能のために どうやら でした。 Google Closure Libraryには、データが変更されたときにUIを自動的に更新するビルトインはありません。

つまり、Google Closureは巨大な獣であり、AngularJSはGoogle Closure Libraryのgoog.ui部分を置き換えることができます。

36
August Lilleaas

AngularJS TemplatesClosure Templates の両方には多くの共通点がありますが、AngularJSはより堅固なMVC/MVVMフレームワークに似ており、Closure Libraryはルーズコンポーネントのセットです。

3
niutech