45

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

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

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

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

4

2 に答える 2

37

AngularJS を使用していると私が認識している唯一の Google プロジェクトは、DoubleClick チームです。(プレゼンテーション)基本的に、UI 構築以外のすべてに Google Closure Library を使用しています。また、彼らは Google Closure Compiler を使用していることにも注意してください。

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

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

DoubleClick チームが AngularJS を選択した理由は、主にAngularJSが提供するデータ バインディング機能にあるようです。データが変更されたときに UI を自動的に更新するために、Google Closure Library には何も組み込まれていません。

要約すると、Google Closure は巨大な獣であり、AngularJSgoog.uiは Google Closure Library の一部を置き換えることができます。

于 2012-12-25T11:27:12.203 に答える
3

AngularJS TemplatesClosure Templatesには多くの共通点がありますが、AngularJS は堅実な MVC/MVVM フレームワークに似ており、Closure Library は緩いコンポーネントのセットに似ていると思います。

于 2012-12-04T20:11:16.673 に答える