2012-06-15 18 views
43

Ahora que AngularJS 1.0 is released Me pregunto cómo encaja este proyecto junto con el otro framework/herramienta de JavaScript de Google, Cierre.¿Cómo se relaciona Angular JS con Google Closure?

Sólo he visto descripción básica de las dos tecnologías (y leer sobre una mitad del libro al cerrar) así que no tengo experiencia directa, pero esto es lo que parece a mí:

  • El cierre es una conjunto de tecnologías que se pueden usar por separado. Lo que me parece probablemente la más atractiva es:
    • Cierre Compilador que parece "arreglar JavaScript" en un sentido que advierte contra los problemas típicos, ofrece algunas comprobaciones en tiempo de compilación (no todas las personas les gusta esto, pero probablemente la mayoría Los desarrolladores de Google lo hacen, y yo también). Y, por supuesto, es bueno que el código resultante sea más pequeño y más eficiente.
    • Luego hay algunas partes de Closure Library que me gustan, p. abstracciones sobre tipos incorporados (ArrayLike etc.), sistema basado en clases, mecanismo de eventos, abstracciones de DOM, etc. No estoy seguro aún si me gusta la biblioteca de la GUI o no (parece ser bastante complejo y no lo hice realmente tener tiempo para estudiarlo todavía).
    • Luego hay algunas características que no creo que me parezcan útiles, p. Ej. Plantillas.
  • AngularJS, que sólo he leído brevemente, parece ser de mucha mayor nivel de cierre. Parece ser un marco aplicación que proporciona características como enlace de datos, componentes reutilizables, estructura MVC etc.

Así pues, estas dos tecnologías parecen estar dirigida a un buen nivel diferente de abstracción por lo que mi primer pensamiento fue, puede se usan juntos? ¿Cierre que proporciona el compilador de bajo nivel y abstracciones del navegador, mientras que Angular proporciona servicios de nivel de aplicación y estructura? ¿Tendría sentido y funcionaría bien juntos?

+5

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

Respuesta

35

El único proyecto de Google que conozco que utiliza AngularJS es el equipo de DoubleClick. (presentation) Esencialmente, todavía usan Google Closure Library para todo menos para el edificio de UI. También tenga en cuenta que utilizan el compilador de cierres de Google, pero eso es casi un hecho, "nadie" usa solo la biblioteca sin el compilador.

Google Closure Library viene con un marco de interfaz de usuario en su espacio de nombres goog.ui. Este marco se compara en casi todos los sentidos con marcos de interfaz de usuario no web como Android, iOS, Swing y QT. Tienen una cosa que me gusta llamar elementos DOM en esteroides, goog.ui.Component, que tiene muchos mecanismos de gran ciclo de vida para la recolección de basura y la escucha de eventos, entre otros. Tiene cosas como goog.ui.Control, que es una subclase de goog.ui.Component, y maneja la interacción del usuario de una manera muy interesante. Le permite conectar representadores, por ejemplo, para que pueda cambiar un <button> a un <a> sin cambiar ninguna de sus otras lógicas, excepto la representación real.

Hablando de clases y subclases, Google Closure Library también tiene esto. No tiene que usar la función incorporada, la parte importante es que de alguna manera llame al prototipo de "superclase" en sus métodos. Por ejemplo, puede utilizar el sistema de clases en CoffeeScript, Google Closure Library no le importa.

La razón por la que el equipo de DoubleClick eligió AngularJS fue apparently en gran parte debido a las características de enlace de datos que proporciona AngularJS. No hay nada incorporado en la Biblioteca de cierres de Google para actualizar automáticamente la UI cuando los datos cambian.

Para resumir, Google Closure es una bestia enorme, y AngularJS puede reemplazar la parte goog.ui de la Biblioteca de cierres de Google.

+0

Creo que es una gran ventaja para Angular, los 2 gratis -way modelo/ui vinculante. Gary Bernhardt habla sobre qué tan bien diseñado es Closure. –

+0

Solo una actualización. Descubrí que el proyecto Google Blockly también usa Angular 2.0 https://github.com/google/blockly/tree/master/accessible –

Cuestiones relacionadas