これでAngularJS1.0 リリースされました このプロジェクトが他の汎用JavaScriptフレームワーク/ツールとどのように適合するのか疑問に思っていますGoogle、Closure。
私はこれら2つのテクノロジーの基本的な説明しか見なかった(そしてクロージャーに関する本の約半分を読んだ)ので、直接の経験はありませんが、これは私にとっては次のようになります。
ArrayLike
など)、クラスベースのシステム、イベントメカニズム、DOM抽象化などに対する抽象化。GUIライブラリが好きかどうかはまだわかりません(非常に複雑で、まだ勉強する時間はありませんでした)。したがって、これらの2つのテクノロジーはまったく異なるレベルの抽象化を目的としているようですので、私の最初の考えは、それらを一緒に使用できるかということでした。 Angularアプリケーションレベルのサービスと構造を提供しながら、低レベルのコンパイラーとブラウザーの抽象化を提供するクロージャー?それは理にかなっていて、一緒にうまく機能するでしょうか?
私が知っている、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
部分を置き換えることができます。
AngularJS Templates と Closure Templates の両方には多くの共通点がありますが、AngularJSはより堅固なMVC/MVVMフレームワークに似ており、Closure Libraryはルーズコンポーネントのセットです。