Was bietet die Google Closure Library über jQuery? [geschlossen]


190

In Anbetracht

  • Business-Hintergrund
  • gemeinschaftliche Unterstützung
  • verfügbare Erweiterungen
  • Standard-Funktionsumfang
  • einfache Bedienung
  • und Zuverlässigkeit

warum ziehst du eins dem anderen vor?


1
Ich denke, es wird schwer zu sagen sein, warum einer dem anderen vorgezogen wird, bis die Leute mit Anwendungen experimentieren und sehen, wo die Grenzen des Schließens liegen.
James Black


4
Dieser Artikel kann auch bei der Entscheidung helfen. Schlüssellektion: „Schließung ist ein Ökosystem. Es ist nicht wie bei jQuery, wo Sie es nur hier und da verwenden, um den Zugriff auf oder die Bearbeitung des DOM zu erleichtern. Wenn Sie Closure wirklich nutzen möchten, müssen Sie sich verpflichten, es wirklich zu nutzen. “
Dan Abramov

2019 Was ist Google Closure? : D
evilReiko

Antworten:


176

Ich werde versuchen, meine Informationen hinzuzufügen.

Mehr als eine andere JS lib

Nach meinem Verständnis ist Google Closure nicht nur eine andere JS-Bibliothek, sondern auch eine Reihe von Tools, mit denen Sie Ihren JS-Code optimieren können. Die Arbeit mit jQuery bietet Ihnen gute Tools und eine leichtgewichtige Bibliothek, minimiert jedoch nicht Ihren eigenen Code. Der Closure-Compiler wird. Der Schließungsinspektor kann ebenfalls nützlich sein, da minimierter Code manchmal ein anderes Verhalten als der ursprüngliche hat und das Debuggen schwierig ist. Es lässt sich in Firebug- und Support-Unit-Tests integrieren, die heutzutage die besten Freunde der Entwickler sind.

Dokumentation

Ich denke, wie bei jeder neuen Bibliothek im Vergleich zu einer gut etablierten Bibliothek wird es an der Verfügbarkeit von Tonnen von Erweiterungen und Tutorials mangeln, die jQuery hat. Wenn Sie jedoch von Google unterstützt werden, sollten Sie sicherstellen, dass sowohl Support als auch Zuverlässigkeit recht gut sind. Die aktuelle Dokumentation und das Tutorial scheinen ebenfalls sehr gut zu sein.

Eigenschaften

Die Funktionen von Closure sehen jedoch anständig aus, und auch die modulare Architektur ist vielversprechend. Ich denke, Google verwendet es seit langer Zeit intern, was bedeutet, dass Sie erwarten können, dass alle grundlegenden Funktionen (und mehr) implementiert werden, und dies wahrscheinlich auf eine sehr optimierte und skalierbare Weise. Sie versuchen, es als STL von JavaScript darzustellen, also hätten sie es polieren sollen.

Bei genauerer Betrachtung der Funktionen scheint dies ein Fortschritt für die Entwicklung von Webanwendungen im Vergleich zu vorhandenen Bibliotheken wie jQuery zu sein. Es kommt wohl den internen Entwicklungen bei Google zugute, aber auch der Erkennung des Online-Status (siehe goog.events.OnlineHandler ), der einfachen Integration von AJAX-Anforderungen und JS-Aktionen in den Browserverlauf (siehe goog.History ) oder den Legionen großartiger Widgets Sie bieten (siehe goog.ui-Paket ) können uns allen helfen, noch mehr fantastische Webapps zu erstellen;)!

Es enthält Vorlagenfunktionen , die in Java integriert sind (wer hat GWT gesagt ?), Daher kann dies auch ein weiteres Plus für Closure sein.

Benutzerfreundlichkeit

Schließlich sieht es ziemlich einfach zu bedienen. Die Syntax ist möglicherweise etwas ausführlicher als die kurze Funktion $ jQuery, aber mit IDEs und automatischer Vervollständigung ist dies kein wirkliches Problem. Darüber hinaus würde ich sagen, dass wir von Google eine gute Integration in IDEs wie Eclipse erwarten können.

EDIT: Lassen Sie mich auf Wunsch ein paar Worte zur GWT-Referenz sagen. Google Web Toolkit ist eine Java-Bibliothek, mit der AJAX-fähige Webschnittstellen erstellt und der erforderliche JavaScript-Code generiert (und optimiert) werden kann. Da mit Google Closure Vorlagen erstellt werden können, die sowohl clientseitig als auch serverseitig verwendet werden können (mit JavaScript und Java), kann ich davon ausgehen, dass sie bald gemeinsam verwendet werden können (sofern dies nicht bereits der Fall ist).


5
Detaillierte und aussagekräftige Antwort, danke. Könnten Sie bitte erklären, was dieser Verweis auf GWT bedeutet? Ich fürchte, ich habe das nicht verstanden.
Pestaa

1
Ich denke, Sie sollten auch die Vorlagenbibliothek (Soja) in Ihrem Abschnitt "Mehr als" erwähnen. Dieselbe Vorlagendatei kann sowohl auf der Server- (Java) als auch auf der Client-Seite verwendet werden. Wirklich schöne Implementierung IMO. Das heißt, wir können JSON nur in AJAX-Abfragen senden, anstatt HTML zu senden - spart Bandbreite.
Frank Krueger

1
Ich habe gerade eine Kritik gegen Closure entdeckt, aber vielleicht ist es nur FUD: sitepoint.com/blogs/2009/11/12/…
nalply

7
Die Kritik ist nicht FUD, und danke für den Link. Die Kritik konzentriert sich darauf, dass der Javascript-Code nicht überall optimal ist. Dies mag gültig sein, aber es fehlt der größere Punkt. So wie ich es verstehe, zielt Closure auf wirklich komplexe JS-Anwendungen ab (auf der Skala von GMail), und das hat einige Konsequenzen - zum Beispiel, dass nicht jede Zeile optimal ist, da nicht alles von einem einzigen brillanten Codierer geschrieben wird. Umgekehrt könnte es jedoch als Software-Engineering-Framework weiter skaliert werden.
Peter S Magnusson

3
@nalpy Wie in den Kommentaren vorgeschlagen, wurde in diesem Artikel nicht erwähnt, dass die Bibliothek einen COMPILER (keinen Minifier) ​​erhält, der diese Codierungsprobleme optimieren könnte.
Ameise

30

In meinem kurzen Blick auf die API finde ich die Unterschiede zwischen jQuery und Closure auffällig.

jQuery ist im Grunde nur eine vereinfachte Methode, um viele häufige Vorgänge browserübergreifend auszuführen.

Closure ist ein Framework, das sehr neu ist, da es eine browserübergreifende Möglichkeit bietet, das <canvas>Tag beispielsweise zu verwenden, und neue Ereignisse hinzugefügt hat.

Dies ist also eine Ergänzung zu dem, was wir normalerweise mit Javascript machen. Sie übernehmen viele Operationen, die die Leute ausführen möchten, und fügen sie in die API ein.

Zum Beispiel haben sie ein Ereignis, um festzustellen, ob sich der Online-Status geändert hat. So können Sie feststellen, ob das System online ist.

Sie verfügen über Javascript-Funktionen, die Tools wie Google Gears verwenden. Dies setzt sich mit der Tatsache fort, dass sie die Möglichkeiten von Javascript erweitert haben.

Ich werde ein paar Tage brauchen, um alle Änderungen zu verarbeiten, aber ich kann sehen, dass dies einen großen Einfluss auf Webanwendungen haben kann, die entwickelt werden können.


25

Der größte Vorteil der Closure Library besteht darin, dass sie für den Closure Compiler entwickelt wurde. Dies eröffnet völlig neue Möglichkeiten für die JavaScript-Entwicklung ...

Der Compiler hat mehrere coole Funktionen:

  • Es kompiliert lesbares JavaScript in komprimiertes maschinenlesbares JavaScript - es hat das beste Komprimierungsverhältnis im "ADVANCED" -Modus.
  • Die Dokumentation des Codes mit JSDoc-Tags ist wichtig: Der Compiler liest ihn und Sie erhalten während der Kompilierung Warnungen für Tippfehler in der Dokumentation, falsche Verwendung eines @ -Konstruktors, falscher Typ einer Variablen , Missbrauch eines mit @private und @protected annotierten Felds. etc.
  • Wenn Sie eine wiederverwendbare JavaScript-Bibliothek wie OpenLayers oder Google Maps schreiben, exportieren Sie Ihre öffentliche API formell - und der Compiler optimiert Ihren internen Code.
  • Die Endanwendungen können zusammen mit der Bibliothek kompiliert werden - und dann werden die nicht verwendeten Teile der Bibliothek aus dem erstellten Code entfernt. Abhängigkeiten werden vom Compiler automatisch gelöst.
  • Der Compiler akzeptiert Konstanten, um unerwünschte Funktionen zu entfernen. Dies ermöglicht die Kompilierung nur für bestimmte Browser wie Mobile WebKit, nur für den Quirks-Modus oder den Strict-Modus, die Kompilierung ohne Unterstützung von IE6 usw.
  • Das Debuggen mit FireBug ist auch für die kompilierte Version des Quellcodes möglich.
  • Der Compiler unterstützt die Generierung dynamisch ladbarer Module, wodurch das Laden der Endanwendung erheblich beschleunigt werden kann, da der Code für erweiterte Funktionen nur bei Bedarf geladen werden kann.

Weitere Informationen finden Sie unter: http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html


20

Bearbeiten : Schauen Sie sich dieses Youtube-Video an , um einige Fragen zu Google Closure besser zu beantworten.

Wahrscheinlich sind die besten Quellen für Informationen über Google - Verschluss sind Projektdiskussionsgruppe , dem Wiki, doc Seiten, Demos und ein noch unfertiges Buch von Michael Bolin , die jetzt von der Safari Bücher - Website zur Verfügung steht.

Eines kann ich sofort sagen: Es gibt eine steilere Lernkurve für closurevs, jQueryaber es kann sich aufgrund der Größe der Bibliothek, der klaren Organisation und des Vorteils, sie zusammen mit dem Compiler und dem Template-Tool zu verwenden, durchaus lohnen.

closureBibliothek ist in dieser Hinsicht eher dojoals jQuery, und wurden einige Begriffe entlehnt dojo, so Michael Bolin.

Google Closure Compiler verwendet JSDoc Dokumentationssystem, das gleichzeitig (wenn es vom Programmierer korrekt erstellt wurde) Dokumentation bereitstellt und das Abfangen vieler Fehler beim Kompilieren ermöglicht.

Während Funktionsnamen ausführlicher sind als die von jQuery's, verkleinert der Compiler den Code (unter Verwendung verschiedener Optimierungstaktiken), und die Typprüfung spart eine beträchtliche Zeit beim Debuggen des Codes, sodass das Eingeben der längeren Namen wahrscheinlich kein Problem darstellt. Gleichzeitig tragen längere Namen zur Lesbarkeit bei.

Die Bibliothek unterstützt Browser, die im Quirks-Modus ausgeführt werden, sodass Skripte von anderen Sites mithilfe von "schrulligem" HTML eingebettet werden können

Die Bibliothek arbeitet mit einem aufgerufenen Javascript-Template-System (ist jedoch nicht davon abhängig) soy das Füllen von Dokumenten mit Inhalten vereinfacht.

Wie bei jQueryGoogle closurekönnen Sie die Dom-Struktur mit den auf Zeichenfolgen basierenden Abfragen mithilfe einer dedizierten Komponente der Bibliothek durchlaufen.

closureDie Bibliothek stützt sich eher auf durch Punkte getrennte Namespaces Java- ein sehr starkes organisatorisches Merkmal.

Die Verwendung solcher Namespaces verursacht Overhead in nicht kompiliertem Code, aber im kompilierten Code werden diese Dinge durch kurze Variablennamen ersetzt.


1
Ich habe nach etwas anderem gesucht und bin hier gelandet, aber gut zu wissen. like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.Können Sie mich bitte mit einer Dokumentation dazu verknüpfen?
IsmailS

@iSid: Ich glaube, er spricht darüber goog.dom.DomHelper, aber ich persönlich sehe keine Abfragefunktion, die jQuery entspricht. @Evgeny: Kannst du uns mehr Details geben?
Exhuma

@iSid: Diese Funktionalität wird von goog.dom.query bereitgestellt , das nicht dokumentiert ist, ebenso wie der Rest des goog.dom-Namespace.
Bkirkbri

8

Ich habe gerade einen ziemlich ausführlichen Artikel über Google Closure veröffentlicht, der diese Frage auf insideRIA beantwortet .

... Schließungsregel! ^ _ ^


4
Netter Vergleich zu jQuery: "[...] jQuery funktioniert wirklich gut und ermöglicht großartige Dinge ohne Aufwand und schnell. Das" Versprechen "von Closure besteht also nicht darin, bessere Algorithmen anzubieten, sondern einen wirklich besseren. Organisierte und wartbare Art der Bereitstellung von JavaScript-Anwendungen [...] Codierung in Closure bedeutet, unter Berücksichtigung objektorientierter Prinzipien zu denken, mehrere JS-Dateien zu erstellen, die jeweils eine einzelne Klasse darstellen, die Anwendungsarchitektur in Paketen zu organisieren und sie schließlich mit den bereitgestellten Tools bereitzustellen , eine einzelne, komprimierte und sichere JavaScript-Datei erhalten [...] "
Alex

7

Vielleicht bekomme ich jQuery nicht, aber ich habe dort keine echte UI-Widgets-Sammlung gesehen (es gibt Plugins, ja, aber Sie wissen nie, wie gut sie getestet wurden, und oft gibt es keinen klaren Gewinner und / oder das Plugin fehlt Dokumentation).

Closure verfügt unter anderem über eine Widgets-Sammlung (siehe Registerkarte "Demos"), die beispielsweise in Google Mail verwendete bildlose Schaltflächen enthält.

Im Allgemeinen sind im Rahmen der Version mehr Funktionen implementiert. Es mag keine große Sache sein, aber ich ärgere mich über das Meer von jQuery-Plugins, wenn ich nach etwas so Einfachem wie einem Ajax-Verlaufsmodul oder einer automatischen Vervollständigung suche.

Insgesamt ist es eine riesige Bibliothek + eine Reihe von Tools und ich werde sie kennenlernen, nur um zu wissen, was verfügbar ist.


2
jqueryui.com ist die offizielle UI-Widgets-Sammlung
Jourkey

1
Ja gut, nach der Seite zu urteilen, hat es 6 Widgets: Akkordeon Datepicker Dialog Progressbar Slider Tabs
Nickolay

3
Ich habe jQueryUI verwendet und fand es sehr schwach. Es scheint kaum in der Entwicklung zu sein. Wann wurde das letzte Mal ein neues Widget hinzugefügt? Es mag die offizielle Widgets-Sammlung sein, aber jeder, der nach einem Widget für jQuery sucht, ist besser dran, nur nach jQuery-Widgets von Drittanbietern zu googeln.
Nosredna

2
jQueryUI ist nicht nur eine Reihe von Javascript-Widgets, sondern verfügt auch über ein großartiges CSS-Framework. Es war ein großartiges Werkzeug für mich beim Gestalten von CRUD / Admin-Seiten. Außerdem sind viele dieser Closure "Widgets" 1-2 Liner in jQuery, für die es sich nicht einmal lohnt, ein Plugin zu schreiben.
Jace Rhea

2
Der Reiz von JQuery liegt nicht in vorgefertigten Widgets. Es erstellt Ihre eigenen benutzerdefinierten Widgets in Rekordzeit. Ich berühre selten die Plug-Ins, einschließlich der Benutzeroberfläche.
Erik Reppen

1

Ich schätze die meisten Beiträge von Google zur Open Source-Community und ich bin mir sicher, dass es einige coole Sachen gibt, aber insgesamt finde ich Closure sperrig, überarbeitet und unelegant. Wenn Sie alles in Java verwandeln müssen, ist es wahrscheinlich geradezu schick.

Bearbeiten:

Meinetwegen. Ich habe nicht wirklich verglichen. Die Schließung ist wie ein riesiges Lagerhaus mit jedem möglichen Werkzeug, das Sie sich wünschen könnten ... irgendwo. So ähnlich wie .NET oder eine riesige Java-Bibliothek. Sobald Sie gefunden haben, was Sie brauchen, können Sie hochspezifische Dinge finden, die hochspezifische Aufgaben erledigen. Und dann können Sie für die Produktion die gesamte Kruft entfernen.

JQuery hingegen ist eher ein leicht zu modifizierender Schallschraubendreher.


1
Ich möchte mehr über die Java-Version von Closure erfahren. Haben Sie einen Link dazu? Vielen Dank
Yazz.com

Suchen Sie nach "Ironie-Tags". Dort finden Sie die Antwort.
Erik Reppen

0

Mit der Google Closure Library können Sie Ihr JavaScript kompilieren und optimieren. Es ist keine Bibliothek wie jQuery. jQuery bietet Ihnen Funktionen, mit denen Sie Ihr eigenes Javascript schneller schreiben können.

Mit Google Closure können Sie Ihren eigenen Javascript-Code minimieren, um eine schnellere Lieferung über das Internet zu ermöglichen.

Kurz gesagt, Google Closure ist ein Tool, während jQuery eine Bibliothek ist, die Prototype ähnelt.


6
Das ist nicht genau richtig. Google Closures verfügt außerdem über eine eigene Bibliothek, die jQuery ähnelt und Funktionen und Dienstprogramme zum Schreiben Ihres eigenen Codes bietet
Wookai

2
Ah ok! Danke, dass du mich verbessert hast!
Tereno

2
+1 Für den Versuch, hilfreich zu sein :)
Andomar
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.