Google Closure LibraryはjQueryに対して何を提供しますか?[閉まっている]


190

考慮

  • 事業の背景
  • コミュニティサポート
  • 利用可能な拡張機能
  • デフォルトの機能セット
  • 使いやすさ
  • と信頼性

なぜあなたは他のものを好むのですか


1
人々がアプリケーションを実験してクロージャの限界が何であるかを見るまでは、なぜ一方が他方よりも好まれるのかを言うのは難しいでしょう。
James Black、

3
ここではいくつかの構文の比較:derekslager.com/blog/posts/2010/06/...
user194743

4
この記事は、決定に役立つ場合もあります。重要な教訓:「閉鎖はエコシステムです。DOMへのアクセスや操作を簡単にするために、あちこちで使用するjQueryとは異なります。Closureを本当に使用したい場合は、Closureを本当に使用することを約束する必要があります。」
ダンアブラモフ

2019 Googleクロージャーとは何ですか?:D
evilReiko

回答:


176

情報を追加してみます。

他のJSライブラリよりも

私が理解しているように、Google Closureは別のJSライブラリであるだけでなく、JSコードを最適化できるようにするツールのセットでもあります。jQueryを使用すると、優れたツールと軽量のライブラリが得られますが、独自のコードを縮小することはできません。閉鎖コンパイラの意志。閉鎖検査官は時々縮小さコードは、元のものとは異なる挙動を有し、そしてデバッグする疼痛であるとしても、有用であり得ます。これはFirebugと統合され、ユニットテストをサポートします。これは、現在両方の開発者の親友です。

ドキュメンテーション

新しいライブラリVSは確立されたライブラリと同じように、jQueryが持っている大量の拡張機能とチュートリアルを利用できないと思います。ただし、Googleにプッシュされることで、サポートと信頼性の両方がかなり良いものになるはずです。現在のドキュメントチュートリアルもどちらもとても良いようです。

特徴

ただし、クロージャーの機能はまともであり、そのモジュール式アーキテクチャーも有望です。Googleはこれを長い間内部で使用していたと思います。つまり、すべての基本機能(およびその他)が、おそらく非常に最適化されたスケーラブルな方法で実装されることを期待できます。彼らはそれをJavaScriptのSTLとして提示しようとしているので、洗練されているはずです。

機能を詳しく見てみると、これは、jQueryのような既存のライブラリーと比較して、Webアプリケーション開発にとって一歩前進であると思われます。Googleの内部開発にメリットがあると思われますが、オンライン状態の検出(goog.events.OnlineHandlerを参照)、AJAXリクエストとJSアクションのブラウザー履歴への簡単な統合(goog.Historyを参照)、または優れたウィジェットのレギオンなどそれらが提供するもの(goog.uiパッケージを参照)は、私たち全員がさらに素晴らしいWebアプリケーションを構築するのに役立ちます;)!

Javaと統合するテンプレート機能GWTはだれが言ったのか)が付属しいるため、これはクロージャーにとってもプラスになるかもしれません。

使いやすさ

最後に、使用方法は非常にシンプルに見えます。構文は短い$ jQuery関数より少し冗長かもしれませんが、IDEとオートコンプリートでは、それは実際の問題ではありません。さらに、Googleが提供するEclipseなどのIDEとの良好な統合が期待できると思います。

編集:要求に応じて、GWTリファレンスについて少し説明させてください。Google Web Toolkitは、AJAX対応のWebインターフェースを作成し、必要なJavaScriptコードを生成(および最適化)するJavaライブラリです。Google Closureではクライアント側とサーバー側の両方(JavaScriptとJavaを使用)で使用できるテンプレートを作成できるため、それらを一緒に使用できるようになると思います(まだそうでない場合)。


5
詳細で意味のある回答、ありがとうございます。そのGWTへの参照が何を意味するか説明していただけませんか?聞き取れませんでした。
pestaa 2009年

1
テンプレートライブラリ(Soy)については、「次を超える」セクションで言及する必要があると思います。サーバー(Java)側とクライアント側の両方で同じテンプレートファイルを使用できます。本当にいい実装IMO。HTMLではなくJSONをAJAXクエリで送信できることを意味し、帯域幅を節約します。
フランク・クルーガー、

1
私はちょうど閉鎖に対する批判を発見し、おそらくそれだけだFUD:sitepoint.com/blogs/2009/11/12/...
nalply

7
批評はFUDではなく、リンクに感謝します。批評は、JavaScriptコードがどこでも最適化されない方法に焦点を当てています。これは有効かもしれませんが、大きなポイントを見逃しています。私が理解しているように、Closureは本当に複雑なJSアプリケーション(GMailの規模)をターゲットにしており、すべての行が単一の優れたコーダーで記述されていないため、すべての行が最適ではないなど、いくつかの結果があります。ただし、逆に、ソフトウェアエンジニアリングフレームワークとしてさらに拡張される可能性があります。
Peter S Magnusson

3
@nalpyコメントで示唆されているように、この記事では、ライブラリがこれらのコーディングの問題を最適化する可能性のあるコンパイラ(縮小版ではない)を取得していることについては触れていません。
Ant

30

APIをざっと見てみると、jQueryとClosureの違いが際立っています。

jQueryは基本的に、クロスブラウザーの方法で多くの頻繁な操作を行うための単純化された方法です。

クロージャは非常に新しいフレームワークであり<canvas>、たとえば、ブラウザ間でタグを使用する方法を提供し、新しいイベントを追加しています。

したがって、これは、JavaScriptで通常行うことを追加するものであり、人々がやりたい多くの操作を実行し、それらをAPIに入れています。

たとえば、オンラインの状態が変化したかどうかを通知するイベントがあります。したがって、システムがオンラインかどうかを確認できます。

それらには、Google Gearsなどのツールを使用するJavaScript関数があり、Javascriptで実行できることを拡張しているという事実が続いています。

すべての変更を要約するには数日かかりますが、これは開発可能なWebアプリケーションに大きな影響を与える可能性があることがわかります。


25

Closure Libraryの最大の利点は、Closure Compiler用に設計されていることです。これにより、JavaScript開発のまったく新しい可能性が開かれます...

コンパイラーにはいくつかの優れた機能があります。

  • 読み取り可能なJavaScriptを機械で読み取り可能な圧縮されたJavaScriptにコンパイルします- "ADVANCED"モードで最高の圧縮率を持っています。
  • JSDocタグ付きのコードのドキュメントは重要です。コンパイラがコードを読み取り、コンパイル中にドキュメントのタイプミス、@ constructorの誤った使用、変数のタイプの誤り、@ privateと@protectedで注釈されたフィールドの誤用を警告します。等
  • OpenLayersやGoogleマップなどの再利用可能なJavaScriptライブラリを作成する場合は、正式にパブリックAPIをエクスポートし、コンパイラーが内部コードを最適化します。
  • エンドアプリケーションはライブラリと一緒にコンパイルできます。その後、ライブラリの未使用部分が生成されたコードから削除されます。依存関係はコンパイラによって自動的に解決されます。
  • コンパイラーは定数を受け入れて不要な機能を削除します。これにより、モバイルWebKitなどの特定のブラウザーのみ、QuirksモードまたはStrictモードのいずれかでのコンパイル、IE6をサポートしないコンパイルなどが可能になります。
  • ソースコードのコンパイルされたバージョンでも、FireBugを使用したデバッグが可能です。
  • コンパイラーは、動的にロード可能なモジュールの生成をサポートします。これにより、高度な機能のコードを必要なときにのみロードできるため、エンドアプリケーションのロードを大幅に高速化できます。

詳細については、http//blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.htmlをご覧ください。


20

編集このYouTubeビデオをご覧ください。GoogleClosureに関するいくつかの質問に答える可能性があります。

おそらく、Googleの閉鎖に関する最高の情報源は、プロジェクトディスカッショングループ、Wiki、ドキュメントページ、デモ、そして現在はサファリブックサイトから入手可能なMichael Bolinによる未完成のです。

私がすぐに言えることの1つは、closurevsの学習曲線がより急jQueryであることですが、ライブラリの広大さ、明確な構成、およびコンパイラとテンプレートツールと一緒に使用することの利点により、価値があるかもしれません。

closureMichael Bolin氏によると、その点でライブラリはに似てdojoおりjQuery、一部の概念はから借用したものdojoです。

googleクロージャコンパイラは、JSDoc同時に(プログラマによって正しく作成された場合)ドキュメントを提供し、コンパイル時に多くのエラーをキャッチできるドキュメントシステムを使用します。

関数名はのものより冗長ですがjQuery、コンパイラーは(さまざまな最適化手法を使用して)コードを縮小し、型チェックはコードのデバッグにかなりの時間を節約するため、長い名前を入力する時間はおそらく問題にはなりません。同時に、名前が長いほど読みやすくなります。

ライブラリは、quirksモードで実行されているブラウザをサポートしているため、「風変わりな」htmlを使用して他のサイトがスクリプトを埋め込むことができます

ライブラリは、soyドキュメントへのコンテンツの入力を簡略化する、呼び出されたjavascriptテンプレートシステムで動作します(ただし依存しません)。

like jQuerygoogle closureは、ライブラリの専用コンポーネントを使用して文字列ベースのクエリでdom構造をトラバースできるようにします。

closureライブラリは、ドット区切りの名前空間に依存しているJava-非常に強力な組織機能。

このような名前空間を使用すると、コンパイルされていないコードでオーバーヘッドが発生しますが、コンパイルされたコードでは、これらは短い変数名に置き換えられます。


1
私は何か他のものを探していて、ここで終わりましたが、知っておくとlike jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.役に立ちます。関連するドキュメントにリンクしてください。
IsmailS 2011

@iSid:私は彼がについて話していると思いますgoog.dom.DomHelperが、個人的にはjQueryに相当するクエリ関数を見ていません。@Evgeny:詳細を教えてください。
exhuma

@iSid:この機能はgoog.dom.queryによって提供されます。これは、他のgoog.dom名前空間と同様にドキュメント化されていません。
bkirkbri 2012

8

私はこの質問に答えるGoogle Closureに関するかなり徹底的な記事をInsideRIAに投稿しました

...閉鎖ルール!^ _ ^


4
jQueryとの適切な比較:「[...] jQueryは非常にうまく機能し、努力なしで高速で素晴らしいことを可能にします。したがって、クロージャーの「約束」は、より優れたアルゴリズムを提供することではなく、実際に優れていることです。JavaScriptアプリケーションをデプロイする整理された保守可能な方法 [...]クロージャでのコーディングとは、オブジェクト指向の原則を念頭に置いて考え、それぞれが単一のクラスを表す複数のjsファイルを作成し、アプリケーションアーキテクチャをパッケージに整理して、提供されるツールを使用して最終的にデプロイすることを意味します、単一の圧縮された安全なJavaScriptファイルを取得する[...] "
Alex

7

多分私はjQueryを取得していないかもしれませんが、実際のUIウィジェットのコレクションを見たことはありません(プラグインはありますが、十分にテストされているかどうかはわかりません。ドキュメンテーション)。

クロージャーには、とりわけ、Gmailで使用される画像のないボタンなどのウィジェットコレクション([デモ]タブを参照)があります。

より一般的には、リリースの一部として実装される機能が増えています。それは大したことではないかもしれませんが、ajax履歴モジュールやオートコンプリートのような単純なものを探しているとき、jQueryプラグインの海にイライラします。

全体的に見て、それは巨大なライブラリ+ツールのセットであり、何が利用可能かを知るためだけに知り合いになります。


2
jqueryui.comは公式のUIウィジェットのコレクションである
Jourkey

1
そうですね、サイトから判断すると6つのウィジェットがあります。アコーディオン日付ピッカーダイアログプログレス
バースライダー

3
私はjQueryUIを使用しましたが、非常に弱いと思いました。開発中のようです。新しいウィジェットが最後に追加されたのはいつですか。これは公式のウィジェットコレクションの可能性がありますが、jQueryで使用するウィジェットを探している人は、サードパーティのjQueryウィジェットをググリングするだけのほうがよいでしょう。
Nosredna 2009年

2
jQueryUIは単なるJavaScriptウィジェットのセットではなく、優れたCSSフレームワークも備えています。これは、CRUD /管理ページのスタイリングで私にとって素晴らしいツールでした。さらに、これらのクロージャー「ウィジェット」の多くはjQueryの1〜2ライナーであり、プラグインを作成する価値すらありません。
ジェイスレア2010

2
JQueryの魅力は、既成のウィジェットではありません。独自のカスタムウィジェットを記録的な速さで作成しています。UIを含むプラグインに触れることはほとんどありません。
Erik Reppen、

1

オープンソースコミュニティへのGoogleの貢献のほとんどに感謝し、それがいくつかのクールなものを持っていると確信していますが、全体として、クロージャーはかさばり、過労であり、エレガントではありません。すべてをJavaに変換する必要がある場合、それは実にスパイシーだと思います。

編集:

けっこうだ。私は実際には比較しませんでした。クロージャーは巨大な倉庫のようなもので、どこにでも配置したいツールがすべてあります。一種の.NETまたは大規模なJavaライブラリ。必要なものが見つかったら、非常に具体的な仕事を行う非常に具体的なものを見つけることができます。そして、生産のためにあなたはすべての残骸を取り除くことができます。

一方、JQueryは、簡単に変更できるソニックドライバーです。


1
ClosureのJavaバージョンについて詳しく知りたい。これのリンクはありますか?ありがとう
Yazz.com

「アイロニータグ」を検索します。そこに答えがあります。
Erik Reppen、2012年

0

Google Closure Libraryを使用すると、JavaScriptをコンパイルして最適化できます。jQueryのようなライブラリではありません。jQueryは、独自のJavaScriptをより高速に記述できる関数を提供するものです。

Google Closureを使用すると、独自のJavaScriptコードを最小限に抑えて、インターネット経由での配信を高速化できます。

要するに、Googleクロージャーはツールであり、jQueryはプロトタイプに似たライブラリです。


6
それは正確には当てはまりません。Googleのクロージャはまた、jQueryのに似ており、独自のコードを記述するための機能とユーティリティを提供する独自のライブラリが付属しています:code.google.com/closure/library/docs/tutorial.html
Wookai

2
ああ大丈夫!私を訂正してくれてありがとう!
Tereno

2
+1参考にさせて
いただき
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.