¿Qué ofrece Google Closure Library sobre jQuery? [cerrado]

190

Considerando

  • conocimiento de los negocios
  • soporte comunitario
  • extensiones disponibles
  • conjunto predeterminado de características
  • simplicidad de uso
  • y fiabilidad

¿Por qué prefieres uno sobre el otro?

pestaa
fuente
1
Creo que será difícil decir por qué se prefiere uno sobre el otro hasta que las personas puedan experimentar con las aplicaciones y ver cuáles son los límites del cierre.
James Black el
3
Algunas comparaciones de sintaxis aquí: derekslager.com/blog/posts/2010/06/…
user194743
44
Este artículo también puede ayudar con la decisión. Lección clave: “El cierre es un ecosistema. No es como jQuery, donde solo lo usa aquí y allá para facilitar el acceso o la manipulación del DOM. Si realmente quiere usar Closure, debe comprometerse a usarlo realmente ".
Dan Abramov
2019 ¿Qué es el cierre de google? : D
evilReiko

Respuestas:

176

Intentaré agregar mi información.

Más que otra libra JS

Según tengo entendido, Google Closure no es solo otra biblioteca JS, sino que también es un conjunto de herramientas que le permitirán optimizar su código JS. Trabajar con jQuery le brinda buenas herramientas y una biblioteca liviana, pero no minimiza su propio código. El compilador de cierre lo hará. El inspector de cierre también puede ser útil, ya que a veces el código minimizado tiene un comportamiento diferente al original y es difícil de depurar. Se integra con Firebug y pruebas de unidad de soporte, que son los dos mejores amigos de los desarrolladores en la actualidad.

Documentación

Supongo que como cualquier biblioteca nueva VS bien establecida, carecerá de la disponibilidad de toneladas de extensiones y tutoriales que tiene jQuery. Sin embargo, ser impulsado por Google debería garantizar que el soporte y la confiabilidad sean bastante buenos. La documentación actual y el tutorial también parecen muy buenos.

Caracteristicas

Sin embargo, las características de Closure parecen decentes, y su arquitectura modular también es prometedora. Supongo que Google lo ha estado utilizando internamente durante mucho tiempo, lo que significa que puede esperar que se implementen todas las características básicas (y más), y probablemente de una manera muy optimizada y escalable. Están tratando de presentarlo como el STL de JavaScript, por lo que deberían haberlo pulido.

Después de mirar las características más de cerca, parece que este puede ser un paso adelante para el desarrollo de aplicaciones web en comparación con las bibliotecas existentes como jQuery. Supone que beneficia los desarrollos internos en Google, pero cosas como la detección del estado en línea (ver goog.events.OnlineHandler ), la fácil integración de solicitudes AJAX y acciones JS en el historial del navegador (ver goog.History ), o las legiones de grandes widgets proporcionan (ver el paquete goog.ui ) puede ayudarnos a todos a construir aplicaciones web aún más increíbles;)!

Viene con características de plantillas que se integran con Java (¿quién dijo GWT ?), Por lo que esto también puede ser otra ventaja para Closure.

Facilidad de uso

Finalmente, parece bastante simple de usar. La sintaxis puede ser un poco más detallada que la función corta $ jQuery, pero con IDEs y autocompletado, no es un problema real. Además, diría que podemos esperar una buena integración en IDEs como Eclipse, provenientes de Google.

EDITAR: según lo solicitado, déjenme decir algunas palabras sobre la referencia de GWT. Google Web Toolkit es una biblioteca de Java que permite crear interfaces web habilitadas para AJAX y que genera (y optimiza) el código JavaScript requerido. Como Google Closure permite crear plantillas que se pueden usar tanto del lado del cliente como del servidor (usando JavaScript y Java), supongo que pronto será posible usarlas conjuntamente (si aún no es el caso).

Wookai
fuente
55
Respuesta detallada y significativa, gracias. ¿Podría explicar qué significa esa referencia a GWT? Me temo que no entendí eso.
pestaa
1
Creo que también debería mencionar la biblioteca de plantillas (Soy) en su sección "Más que". Se puede usar el mismo archivo de plantilla tanto en el lado del servidor (Java) como en el lado del cliente. Realmente buena implementación de la OMI. Significa que podemos enviar JSON en consultas AJAX en lugar de enviar HTML, ahorra ancho de banda.
Frank Krueger
1
Acabo de descubrir una crítica contra Closure, pero quizás sea solo FUD: sitepoint.com/blogs/2009/11/12/…
finalmente el
77
La crítica no es FUD, y gracias por el enlace. La crítica se centra en cómo el código de JavaScript no es óptimo en todas partes. Esto puede ser válido, pero pierde el punto más grande. Según tengo entendido, Closure apunta a aplicaciones JS realmente complejas (en la escala de GMail), y eso tiene algunas consecuencias, como no todas las líneas son óptimas ya que no todo está escrito por un único codificador brillante. Pero, a la inversa, podría ampliarse aún más como marco de ingeniería de software.
Peter S Magnusson
3
@nalpy Como lo sugieren los comentarios, este artículo no mencionó que la biblioteca tiene un COMPILADOR (no un minificador) que podría optimizar estos problemas de codificación.
Ant
30

En mi breve vistazo a la API, encuentro que las diferencias entre jQuery y Closure son sorprendentes.

jQuery es básicamente una forma simplificada de realizar muchas operaciones frecuentes en un navegador cruzado.

El cierre es un marco que es muy nuevo, ya que proporcionan una forma de usar la <canvas>etiqueta en varios navegadores , por ejemplo, y han agregado nuevos eventos.

Entonces, esto se agrega a lo que normalmente hacemos con javascript, están tomando muchas operaciones que la gente quiere hacer y poniéndolas en la API.

Por ejemplo, tienen un evento para saber si el estado en línea ha cambiado. Para que pueda saber si el sistema está en línea.

Tienen funciones de JavaScript que utilizan herramientas como Google Gears, que continúa con el hecho de que han ampliado lo que se puede hacer con Javascript.

Me llevará un par de días asimilar todos los cambios, pero puedo ver que esto podría tener un gran impacto en las aplicaciones web que se pueden desarrollar.

James Black
fuente
25

La mayor ventaja de Closure Library es que está diseñado para Closure Compiler. Esto abre posibilidades completamente nuevas para el desarrollo de JavaScript ...

El compilador tiene varias características interesantes:

  • Compila JavaScript legible en JavaScript comprimido legible por máquina: tiene la mejor relación de compresión en modo "AVANZADO".
  • La documentación del código con JSDoc Tags es importante: el compilador lo lee y recibe advertencias durante la compilación de errores tipográficos en la documentación, uso incorrecto de un @constructor, tipo incorrecto de una variable , uso incorrecto de un campo anotado con @private y @protected, etc.
  • Si escribe una biblioteca JavaScript reutilizable, como OpenLayers o Google Maps, exporta formalmente su API pública, y el compilador optimiza su código interno.
  • Las aplicaciones finales se pueden compilar junto con la biblioteca, y luego las partes no utilizadas de la biblioteca se eliminan del código producido. Las dependencias son resueltas automáticamente por el compilador.
  • El compilador acepta constantes para eliminar la funcionalidad no deseada: esto permite la compilación solo para un navegador en particular, como Mobile WebKit, solo para uno de los modos Quirks o Strict, compilación sin soporte de IE6, etc.
  • La depuración con FireBug es posible incluso para la versión compilada del código fuente.
  • El compilador admite la generación de módulos cargables dinámicamente, que pueden acelerar significativamente la carga de la aplicación final, ya que el código para la funcionalidad avanzada solo se puede cargar cuando es necesario.

Para obtener más información, consulte: http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html

Petr Pridal
fuente
20

Editar : eche un vistazo a este video de YouTube que puede responder mejor algunas preguntas sobre Google Closure.

Probablemente las mejores fuentes de información sobre el cierre de Google son el grupo de discusión del proyecto , wiki, páginas de documentos, demostraciones y un libro aún sin terminar de Michael Bolin que ahora está disponible en el sitio de libros de safari.

Algo que puedo decir de inmediato: hay una curva de aprendizaje más pronunciada para closurevs, jQuerypero puede valer la pena debido a la inmensidad de la biblioteca, la organización clara y el beneficio de usarla junto con el compilador y la herramienta de creación de plantillas.

closurea ese respecto, la biblioteca es más parecida dojoque jQuery, y dojosegún Michael Bolin, se tomaron prestados algunos conceptos .

El compilador de cierre de Google utiliza un JSDocsistema de documentación que simultáneamente (si el programador lo creó correctamente) proporciona documentación y permite detectar muchos errores en el momento de la compilación.

Si bien los nombres de las funciones son más detallados que jQuerylos de 's, el compilador reduce el código (utilizando varias tácticas de optimización) y la verificación de tipo ahorrará un tiempo considerable en la depuración del código, por lo que el tiempo de escribir los nombres más largos probablemente no sea un problema. Al mismo tiempo, los nombres más largos agregan legibilidad.

la biblioteca admite navegadores que se ejecutan en el modo peculiar para que otros sitios puedan incrustar scripts utilizando html "peculiar"

La biblioteca funciona con (pero no depende de) un sistema de plantillas de JavaScript llamado soyque simplifica el llenado de documentos con contenido.

como jQuerygoogle closurepermite atravesar la estructura dom con las consultas basadas en cadenas utilizando un componente dedicado de la biblioteca.

closureLa biblioteca se basa más en espacios de nombres delimitados por puntos, como Javauna característica organizativa muy sólida.

el uso de dichos espacios de nombres generará una sobrecarga en el código no compilado, pero en el código compilado esas cosas se reemplazan con nombres de variables cortos.

Evgeny
fuente
1
Estaba buscando algo más y terminé aquí, pero es bueno saberlo. like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.¿Pueden vincularme con alguna documentación relacionada?
IsmailS
@ iSid: Creo que él habla goog.dom.DomHelper, pero personalmente no veo una función de consulta equivalente a jQuery. @Evgeny: ¿Puedes darnos más detalles?
exhuma
@iSid: esa funcionalidad es proporcionada por goog.dom.query , que no está documentada tan bien como el resto del espacio de nombres goog.dom.
bkirkbri
8

Acabo de publicar un artículo bastante exhaustivo sobre Google Closure que responde a esta pregunta en insideRIA .

... Clausura rulez! ^ _ ^

Davide Zanotti
fuente
44
Bonita comparación directa con jQuery: "[...] jQuery funciona muy bien y hace posibles grandes cosas sin esfuerzo y rápido, por lo que la" promesa "de Closure no es ofrecer mejores algoritmos, sino más bien un mejor, forma organizada y sostenible de desplegar aplicaciones JavaScript Codificar en [...] cierre significa pensar con principios orientados a objetos en mente, crear varios archivos js, cada uno representando una sola clase, organizar la arquitectura de la aplicación en paquetes y finalmente implementarla usando las herramientas proporcionadas , obtener un archivo JavaScript único, comprimido y seguro "[...]"
Alex
7

Tal vez no obtengo jQuery, pero no he visto una verdadera colección de widgets de interfaz de usuario allí (hay complementos, sí, pero nunca se sabe qué tan bien probados están y, a menudo, no hay un ganador claro y / o el complemento carece de documentación).

El cierre tiene, entre otras cosas, una colección de widgets (ver la pestaña de demos), que incluye, por ejemplo, botones sin imagen utilizados en gmail.

De manera más general, tiene más funcionalidades implementadas como parte del lanzamiento. Puede que no sea una gran cosa, pero me molesta el mar de complementos de jQuery cuando busco algo tan simple como un módulo de historial de ajax o autocompletar.

En general, es una gran biblioteca + conjunto de herramientas y me familiarizaré con él solo para saber qué hay disponible.

Nickolay
fuente
2
jqueryui.com es la colección oficial de widgets ui
Jourkey
1
sí, a juzgar por el sitio, tiene 6 widgets: Acordeón Datepicker Dialog Progressbar Slider Tabs
Nickolay
3
He usado jQueryUI y pensé que era muy débil. Apenas parece estar en desarrollo. Cuándo fue la última vez que se agregó un nuevo widget. Puede ser la colección oficial de widgets, pero cualquiera que busque un widget para usar con jQuery es mejor simplemente buscar en Google widgets de jQuery de terceros.
Nosredna
2
jQueryUI no es solo un conjunto de widgets de JavaScript, también tiene un gran marco CSS. Ha sido una gran herramienta para mí al diseñar páginas CRUD / admin. Además, muchos de esos "widgets" de cierre tienen 1-2 revestimientos en jQuery, ni siquiera vale la pena escribir un complemento.
Jace Rhea
2
El atractivo de JQuery no son widgets prefabricados. Está haciendo sus propios widgets personalizados en tiempo récord. Raramente toco los complementos, incluida la interfaz de usuario.
Erik Reppen
1

Aprecio la mayoría de las contribuciones de Google a la comunidad de código abierto y estoy seguro de que tiene algunas cosas interesantes, pero en general encuentro que Closure es voluminoso, sobrecargado y poco elegante. Si debe convertir todo en Java, supongo que es francamente elegante.

Editar:

Lo suficientemente justo. Realmente no me comparé. El cierre es como un almacén gigante con todas las herramientas posibles que pueda desear ubicadas ... en algún lugar. Algo así como .NET o una biblioteca masiva de Java. Una vez que encuentre lo que necesita, puede encontrar cosas altamente específicas que realizan trabajos altamente específicos. Y luego, para la producción, puede eliminar toda la migaja.

JQuery, por otro lado, es más un destornillador sónico fácilmente modificable.

Erik Reppen
fuente
1
Me gustaría aprender más sobre la versión Java de Closure. Tienes un link para esto. Gracias
Yazz.com
Busque 'etiquetas de ironía'. Encontrarás la respuesta allí.
Erik Reppen
0

La Biblioteca de cierre de Google le permite compilar y optimizar su JavaScript. No es una biblioteca como es jQuery. jQuery es algo que le proporciona funciones que le permiten escribir su propio javascript más rápido.

Google Closure lo ayudaría a minimizar su propio código javascript para permitir una entrega más rápida a través de Internet.

Para resumir, Google Closure es una herramienta, mientras que jQuery es una biblioteca similar a Prototype.

Tereno
fuente
66
Eso no es exactamente cierto. Google Closures también viene con su propia biblioteca que es similar a jQuery y que proporciona funciones y utilidades para escribir su propio código: code.google.com/closure/library/docs/tutorial.html
Wookai
2
Ah ok! ¡Gracias por corregirme!
Tereno el
2
+1 por intentar ser útil :)
Andomar