Cosa offre Google Closure Library su jQuery? [chiuso]


190

Considerando

  • sfondo di affari
  • supporto alla comunità
  • estensioni disponibili
  • set predefinito di funzionalità
  • semplicità d'uso
  • e affidabilità

perché preferisci l'uno all'altro?


1
Penso che sarà difficile dire perché uno è preferito rispetto all'altro fino a quando le persone non sperimenteranno applicazioni e vedranno quali sono i limiti della chiusura.
James Black,

3
Alcuni confronti di sintassi qui: derekslager.com/blog/posts/2010/06/…
user194743

4
Questo articolo può anche aiutare con la decisione. Lezione chiave: “La chiusura è un ecosistema. Non è come jQuery dove lo usi solo qua e là per facilitare l'accesso o la manipolazione del DOM. Se vuoi veramente usare Closure, devi impegnarti a usarlo davvero. ”
Dan Abramov,

2019 Che cos'è la chiusura di Google? : D
evilReiko

Risposte:


176

Proverò ad aggiungere la mia informazione.

Più di un'altra libreria JS

A quanto ho capito, Google Closure non è solo un'altra libreria JS, ma è anche un set di strumenti che ti permetterà di ottimizzare il tuo codice JS. Lavorare con jQuery ti dà buoni strumenti e una libreria leggera, ma non minimizza il tuo codice. Il compilatore di chiusura lo farà. L' ispettore di chiusura può anche essere utile, poiché a volte il codice minimizzato ha un comportamento diverso rispetto a quello originale ed è una seccatura da debug. Si integra con Firebug e supporta unit test, che al giorno d'oggi sono entrambi i migliori amici degli sviluppatori.

Documentazione

Immagino che come qualsiasi nuova libreria VS ben consolidata, mancherà la disponibilità di tonnellate di estensioni e tutorial di jQuery. Tuttavia, essere spinti da Google dovrebbe garantire che il supporto e l'affidabilità siano entrambi abbastanza buoni. Anche la documentazione e il tutorial attuali sembrano davvero buoni.

Caratteristiche

Le caratteristiche di Closure sembrano decenti, tuttavia, e anche la sua architettura modulare è promettente. Immagino che Google lo utilizzi internamente da molto tempo, il che significa che potresti aspettarti che tutte le funzionalità di base (e altro) vengano implementate, e probabilmente in modo molto ottimizzato e scalabile. Stanno cercando di presentarlo come STL di JavaScript, quindi avrebbero dovuto perfezionarlo.

Dopo aver esaminato le funzionalità più da vicino, sembra che questo possa essere un passo avanti per lo sviluppo di applicazioni Web rispetto alle librerie esistenti come jQuery. Immagina che avvantaggia gli sviluppi interni su Google, ma cose come il rilevamento dello stato online (vedi goog.events.OnlineHandler ), la facile integrazione delle richieste AJAX e le azioni JS nella cronologia del browser (vedi goog.History ) o le legioni di grandi widget forniscono (vedi il pacchetto goog.ui ) può aiutare tutti noi a creare app web ancora più fantastiche;)!

Viene fornito con funzionalità di modelli che si integrano con Java (chi ha detto GWT ?), Quindi questo potrebbe anche essere un altro vantaggio per la chiusura.

Facilità d'uso

Infine, sembra piuttosto semplice da usare. La sintassi potrebbe essere un po 'più dettagliata della breve funzione $ jQuery, ma con IDE e completamento automatico non è un vero problema. Inoltre, direi che possiamo aspettarci una buona integrazione in IDE come Eclipse, proveniente da Google.

EDIT: come richiesto, lasciatemi dire alcune parole sul riferimento GWT. Google Web Toolkit è una libreria Java che consente di creare interfacce Web abilitate per AJAX e che genera (e ottimizza) il codice JavaScript richiesto. Poiché Google Closure consente di creare modelli che possono essere utilizzati sia sul lato client che sul lato server (utilizzando JavaScript e Java), la mia ipotesi è che presto sarà possibile utilizzarli congiuntamente (se non è già il caso).


5
Risposta dettagliata e significativa, grazie. Potresti spiegare cosa significa quel riferimento a GWT? Temo di non averlo capito.
pestaa,

1
Penso che dovresti anche menzionare la libreria di modelli (Soia) nella sezione "Più di". Lo stesso file modello può essere utilizzato sia sul lato server (Java) che sul lato client. Implementazione davvero bella IMO. Significa che possiamo semplicemente inviare JSON nelle query AJAX anziché inviare HTML - consente di risparmiare larghezza di banda.
Frank Krueger,

1
Ho appena scoperto una critica contro Closure, ma forse è solo FUD: sitepoint.com/blogs/2009/11/12/…
nalply

7
La critica non è FUD e grazie per il link. La critica si concentra su come il codice javascript non sia ottimale ovunque. Questo può essere valido, ma manca il punto più grande. A quanto ho capito, Closure si rivolge ad applicazioni JS davvero complesse (sulla scala di GMail), e ciò ha alcune conseguenze - come non tutte le linee sono ottimali poiché tutto non è scritto da un singolo programmatore brillante. Al contrario, potrebbe ridimensionarsi ulteriormente come un framework di ingegneria del software.
Peter S Magnusson,

3
@nalpy Come suggerito dai commenti, questo articolo non menziona il fatto che la libreria ha un COMPILER (non un minificatore) che potrebbe ottimizzare questi problemi di codifica.
Formica,

30

Nel mio breve sguardo all'API, trovo sorprendenti le differenze tra jQuery e Closure.

jQuery è fondamentalmente solo un modo semplificato per eseguire molte operazioni frequenti in modo cross-browser.

La chiusura è un framework molto nuovo, in quanto fornisce un modo cross-browser per utilizzare il <canvas>tag, ad esempio, e ha aggiunto nuovi eventi.

Quindi, questo si sta aggiungendo a ciò che facciamo di solito con JavaScript, stanno facendo molte operazioni che le persone vogliono fare e le inseriscono nell'API.

Ad esempio, hanno un evento per dire se lo stato online è cambiato. Quindi puoi sapere se il sistema è online.

Hanno funzioni javascript che utilizzano strumenti come Google Gears, che continua con il fatto di aver esteso ciò che può essere fatto con Javascript.

Mi ci vorranno un paio di giorni per digerire tutti i cambiamenti, ma posso vedere che questo potrebbe avere un grande impatto sulle applicazioni web che possono essere sviluppate.


25

Il più grande vantaggio di Closure Library è che è progettato per Closure Compiler. Questo apre possibilità completamente nuove per lo sviluppo di JavaScript ...

Il compilatore ha diverse funzioni interessanti:

  • Compila JavaScript leggibile in JavaScript compresso leggibile meccanicamente - ha il miglior rapporto di compressione in modalità "AVANZATO".
  • La documentazione del codice con i tag JSDoc è importante: il compilatore lo legge e ricevi avvisi durante la compilazione per errori di battitura nella documentazione, uso errato di un @costruttore, tipo errato di una variabile , uso improprio di un campo annotato con @private e @protected, eccetera.
  • Se scrivi una libreria JavaScript riutilizzabile, come OpenLayers o Google Maps, esporti formalmente l'API pubblica e il compilatore ottimizza il tuo codice interno.
  • Le applicazioni finali possono essere compilate insieme alla libreria, quindi le parti inutilizzate della libreria vengono rimosse dal codice prodotto. Le dipendenze vengono risolte automaticamente dal compilatore.
  • Il compilatore accetta costanti per rimuovere funzionalità indesiderate - questo consente la compilazione solo per browser particolari come Mobile WebKit, solo per una modalità Quirks o Strict, la compilazione senza supporto di IE6, ecc.
  • Il debug con FireBug è possibile anche per la versione compilata del codice sorgente.
  • Il compilatore supporta la generazione di moduli caricabili dinamicamente, che possono accelerare notevolmente il caricamento dell'applicazione finale, poiché il codice per funzionalità avanzate può essere caricato solo quando è necessario.

Per i dettagli, consultare: http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html


20

Modifica : guarda questo video di YouTube che potrebbe rispondere meglio ad alcune domande su Google Closure.

Probabilmente le migliori fonti di informazioni sulla chiusura di Google sono gruppi di discussione di progetti , wiki, pagine di documenti, demo e un libro ancora incompiuto di Michael Bolin che è ora disponibile sul sito dei libri di safari.

una cosa che posso dire subito: esiste una curva di apprendimento più ripida per closurevs, jQueryma può valerne la pena a causa della vastità della libreria, della chiara organizzazione e del vantaggio di usarla insieme al compilatore e allo strumento di template.

closurela biblioteca in tal senso è più simile dojodi jQuery, e alcuni concetti sono stati presi in prestito dojo, secondo Michael Bolin.

il compilatore di chiusura di Google utilizza un JSDocsistema di documentazione che simultaneamente (se creato correttamente dal programmatore) fornisce documentazione e consente di rilevare molti errori in fase di compilazione.

mentre i nomi delle funzioni sono più dettagliati di quelli jQuery, il compilatore riduce il codice (usando varie tattiche di ottimizzazione) e il controllo del tipo farà risparmiare un tempo considerevole durante il debug del codice, quindi il tempo digitando i nomi più lunghi non è probabilmente un problema. Allo stesso tempo, i nomi più lunghi aggiungono leggibilità.

libreria supporta i browser in esecuzione in modalità strane in modo che gli script possano essere incorporati da altri siti utilizzando HTML "eccentrico"

libreria funziona con (ma non dipende da) un sistema di template javascript chiamato soyche semplifica il riempimento di documenti con contenuto.

come jQuerygoogle closureconsente di attraversare la struttura dom con le query basate su stringhe utilizzando un componente dedicato della libreria.

closurela libreria si basa su spazi dei nomi delimitati da punti più simili a Java: una funzionalità organizzativa molto forte.

l'utilizzo di tali spazi dei nomi comporterà un sovraccarico nel codice non compilato, ma nel codice compilato tali elementi vengono sostituiti con nomi di variabili brevi.


1
Stavo cercando qualcos'altro e sono finito qui, ma è buono a sapersi like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.Può per favore collegarmi ad alcuni documenti ad esso correlati?
IsmailS

@iSid: credo che parli goog.dom.DomHelper, ma personalmente non vedo una funzione di query equivalente a jQuery. @Evgeny: puoi darci maggiori dettagli?
exhuma,

@iSid: tale funzionalità è fornita da goog.dom.query , che non è documentata così come il resto dello spazio dei nomi goog.dom.
bkirkbri,

8

Ho appena pubblicato un articolo piuttosto esauriente su Google Closure che risponde a questa domanda su insideRIA .

... Chiusura rulez! ^ _ ^


4
Bel confronto puntuale con jQuery: "[...] jQuery funziona davvero bene e rende possibili grandi cose senza sforzo e in fretta, quindi la" promessa "di Closure non è quella di offrire algoritmi migliori ma piuttosto un modo organizzato e gestibile di distribuire applicazioni JavaScript [...] Coding in Closure significa pensare tenendo conto dei principi orientati agli oggetti, creare diversi file js, ognuno dei quali rappresenta una singola classe, organizzare l'architettura dell'applicazione in pacchetti e infine distribuirla utilizzando gli strumenti forniti , ottenendo un singolo file JavaScript compresso e sicuro [...] "
Alex,

7

Forse non ricevo jQuery, ma non ho visto una vera raccolta di widget dell'interfaccia utente lì (ci sono plugin, sì, ma non sai mai quanto siano ben testati e spesso non c'è un vincitore chiaro e / o manca il plugin documentazione).

La chiusura ha, tra le altre cose, una raccolta di widget (vedi la scheda demo), inclusi, per esempio, pulsanti senza immagini usati in Gmail.

Più in generale, ha più funzionalità implementate come parte della versione. Potrebbe non essere una grande cosa, ma mi infastidisco con il mare di plugin jQuery quando sto cercando qualcosa di semplice come un modulo di cronologia Ajax o il completamento automatico.

Nel complesso è un'enorme libreria + set di strumenti e lo imparerò solo per sapere cosa è disponibile.


2
jqueryui.com è la raccolta ufficiale di widget per l'
interfaccia utente

1
si beh, a giudicare dal sito ha 6 widget: Accordion Datepicker Dialog Progressbar Slider Tabs
Nickolay

3
Ho usato jQueryUI e ho pensato che fosse molto debole. Non sembra nemmeno essere in fase di sviluppo. Quando è stata l'ultima volta che è stato aggiunto un nuovo widget. Potrebbe essere la raccolta di widget ufficiale, ma chiunque sia alla ricerca di un widget da utilizzare con jQuery è meglio cercare su google i widget jQuery di terze parti.
Nosredna,

2
jQueryUI non è solo un insieme di widget javascript, ha anche un ottimo framework css. È stato un ottimo strumento per me nello stile delle pagine CRUD / admin. Inoltre molti di questi "Widget" di chiusura sono 1-2 righe in jQuery, non vale nemmeno la pena scrivere un plugin per.
Jace Rhea,

2
Il fascino di JQuery non sono i widget predefiniti. Sta creando i tuoi widget personalizzati in tempi record. Raramente tocco i plug-in, inclusa l'interfaccia utente.
Erik Reppen,

1

Apprezzo la maggior parte dei contributi di Google alla comunità open source e sono sicuro che abbia qualcosa di interessante, ma nel complesso trovo la chiusura ingombrante, sovraccarica e inelegante. Se devi trasformare tutto in Java, suppongo sia decisamente spiffy.

Modificare:

Giusto. Non ho davvero confrontato. La chiusura è come un gigantesco magazzino con tutti gli strumenti possibili che potresti desiderare di trovare ... da qualche parte. Un po 'come .NET o un'enorme libreria Java. Una volta trovato ciò di cui hai bisogno, puoi trovare cose altamente specifiche che svolgono lavori altamente specifici. E poi per la produzione è possibile rimuovere tutta l'innesto.

D'altra parte, JQuery è più un cacciavite sonico facilmente modificabile.


1
Vorrei saperne di più sulla versione Java di Closure. Hai un link per questo. Grazie
Yazz.com il

Cerca "tag ironia". Troverai la risposta lì.
Erik Reppen,

0

La Libreria di chiusura di Google ti consente di compilare e ottimizzare il tuo JavaScript. Non è una libreria come jQuery. jQuery è qualcosa che ti offre funzioni che ti permettono di scrivere il tuo javascript più velocemente.

Google Closure ti aiuterebbe a ridurre al minimo il tuo codice javascript per consentire una consegna più rapida su Internet.

Per farla breve, Google Closure è uno strumento mentre jQuery è una libreria simile a Prototype.


6
Questo non è esattamente vero. Google Closures include anche una propria libreria simile a jQuery e che fornisce funzioni e utilità per scrivere il proprio codice: code.google.com/closure/library/docs/tutorial.html
Wookai,

2
Ah ok! Grazie per avermi corretto!
Tereno,

2
+1 Per aver cercato di essere utile :)
Andomar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.