client side - library - ¿Cómo se relaciona Angular JS con Google Closure?
google closure compiler (2)
Creo que AngularJS es más como un marco MVC / MVVM sólido y Closure Library es un conjunto de componentes sueltos, aunque tanto las Plantillas AngularJS como las Plantillas de cierre tienen mucho en común.
Ahora que se lanzó AngularJS 1.0, me pregunto cómo este proyecto encaja con el otro marco / herramienta de JavaScript de propósito general de Google, Closure .
Solo he visto una descripción básica de esas dos tecnologías (y leí aproximadamente la mitad del libro sobre Closure), por lo que no tengo experiencia directa, pero así es como me parece:
- El cierre es un conjunto de tecnologías que se pueden utilizar por separado. Lo que me parece más atractivo es:
- Closure Compiler, que parece "arreglar JavaScript" en el sentido de que advierte contra problemas típicos, proporciona algunas verificaciones en tiempo de compilación (no a todas las personas les gusta esto, pero probablemente la mayoría de 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, por ejemplo, abstracciones sobre tipos
ArrayLike
(ArrayLike
etc.), sistema basado en clases, mecanismo de eventos, abstracciones de DOM, etc. Todavía no estoy seguro si me gusta la biblioteca GUI o no (parece ser bastante complejo y aún no tuve tiempo de estudiarlo). - Luego hay algunas características que no creo que me resulten útiles, por ejemplo, Plantillas .
- AngularJS , sobre el que solo he leído brevemente, parece tener un nivel mucho más alto que Closure. Parece ser un marco de aplicación que proporciona características como enlace de datos, componentes reutilizables, estructura MVC, etc.
Entonces, estas dos tecnologías parecen estar dirigidas a un nivel de abstracción bastante diferente, así que mi primer pensamiento fue: ¿pueden usarse juntas? ¿El cierre proporciona abstracciones de compilador y navegador de bajo nivel mientras que Angular proporciona servicios y estructura a nivel de aplicación? ¿Tendría sentido y funcionaría bien juntos?
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 el edificio UI. También tenga en cuenta que usan Google Closure Compiler, pero eso es casi un hecho, "nadie" usa solo la biblioteca sin el compilador.
Google Closure Library incluye un marco de UI en su espacio de nombres goog.ui
Este marco se compara en casi todos los aspectos con los marcos de IU no web como Android, iOS, Swing y QT. Tienen una cosa que me gusta llamar elementos DOM a los esteroides, goog.ui.Component
, que tiene muchos mecanismos de gran ciclo de vida para la recolección de basura y la escucha de eventos y más. Tienes 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 tienes que usar el incorporado, la parte importante es que de alguna manera llamas al prototipo de la "superclase" en tus métodos. Por ejemplo, puede usar el sistema de clases en CoffeeScript, a Google Closure Library no le importa.
La razón por la que el equipo de DoubleClick eligió AngularJS se debió en gran parte a las características de enlace de datos que proporciona AngularJS. No hay nada integrado en Google Closure Library para actualizar automáticamente la interfaz de usuario cuando cambian los datos.
Así que para resumir, Google Closure es una bestia huuuuge, y AngularJS puede reemplazar la parte goog.ui
de Google Closure Library.