2012-06-15 13 views
43

Ora che AngularJS 1.0 is released Mi chiedo come si integri questo progetto con l'altro framework/strumento JavaScript generico di Google, Chiusura.In che modo Angular JS si riferisce a Google Closure?

ho visto solo descrizione di base di queste due tecnologie (e leggere circa la metà del libro su chiusura) quindi non ho esperienza diretta, ma questo è come appare a me:

  • La chiusura è un insieme di tecnologie che possono essere utilizzate separatamente. Quello che trovo probabilmente il più interessante è:
    • Closure Compiler che sembra "fissare JavaScript" in un senso che mette in guardia contro problematiche tipiche, fornisce alcuni controlli in fase di compilazione (non tutte le persone come questo, ma probabilmente la maggior parte Gli sviluppatori di Google fanno, e lo faccio anche io). E naturalmente è bello che il codice risultante sia più piccolo e più efficiente.
    • Poi ci sono alcune parti della libreria di chiusura che mi piacciono, ad es. astrazioni su tipi built-in (ArrayLike ecc.), sistema basato su classi, meccanismo di evento, astrazioni DOM ecc. Non sono ancora sicuro se mi piace la libreria della GUI o no (sembra essere piuttosto complessa e non ho davvero avere il tempo di studiarlo ancora).
    • Quindi ci sono alcune funzionalità che non penso che troverei utili, ad es. Modelli.
  • AngularJS, che ho letto solo brevemente, sembra essere di livello superiore molto di chiusura. Sembra essere un quadro applicazione fornire funzionalità come l'associazione dei dati, componenti riutilizzabili, struttura MVC ecc

Quindi queste due tecnologie sembrano essere mirato a un livello del tutto diverso di astrazione quindi il mio primo pensiero è stato, può sono usati insieme? Chiusura fornendo compilatore di basso livello e astrazioni del browser mentre Angular fornisce servizi e struttura a livello di applicazione? Avrebbe senso e funzionerebbe bene insieme?

+5

http://stackoverflow.com/questions/11032092/html5-angularjs-with-closure-compiler-and-or-closure-library/11041786#11041786 – Vojta

risposta

35

L'unico progetto Google di cui sono a conoscenza che utilizza AngularJS è il team di DoubleClick. (presentation) In sostanza, utilizzano ancora Google Closure Library per tutto tranne l'interfaccia utente. Si noti inoltre che usano Google Closure Compiler, ma questo è quasi un dato di fatto, "nessuno" utilizza solo la Libreria senza il compilatore.

Google Closure Library viene fornito con un framework UI nello spazio dei nomi goog.ui. Questo framework si confronta in quasi tutti i modi con framework UI non Web come Android, iOS, Swing e QT. Hanno una cosa che mi piace chiamare elementi DOM su steroidi, goog.ui.Component, che ha un sacco di meccanismi di grande ciclo di vita per la raccolta dei rifiuti e l'ascolto degli eventi e altro ancora. Hai cose come goog.ui.Control, che è una sottoclasse di goog.ui.Component, e gestisce l'interazione dell'utente in un modo molto interessante. Permette di collegare i renderer, ad esempio, in modo da poter cambiare un <button> in uno <a> senza modificare l'altra logica tranne il rendering effettivo.

Parlando di classi e sottoclassi, Google Closure Library ha anche questo. Non devi usare quello integrato, la parte importante è che in qualche modo chiami il prototipo della "superclasse" nei tuoi metodi. Ad esempio, puoi utilizzare il sistema di classe in CoffeeScript, la libreria di chiusura di Google non interessa.

Il motivo per cui il team di DoubleClick ha scelto AngularJS era apparently in gran parte a causa delle funzionalità di associazione dei dati fornite da AngularJS. Non c'è niente di integrato nella Google Closure Library per aggiornare automaticamente l'interfaccia quando i dati cambiano.

Quindi, per riassumere, Google Closure è una bestia huuuuge e AngularJS può sostituire la parte goog.ui della Google Closure Library.

+0

Penso che sia un grande vantaggio per Angular, il free 2 -way model/ui binding. Gary Bernhardt parla di quanto sia ben progettata la chiusura. –

+0

Solo un aggiornamento. Ho scoperto che il progetto Google Blockly utilizza Angular 2.0 https://github.com/google/blockly/tree/master/accessible –

Problemi correlati