¿Qué quiere decir Douglas Crockford cuando dice que jQuery no escala? [cerrado]

32

En la sección de preguntas y respuestas de esta charla , Douglas Crockford dice que jQuery no escala tan bien como algunas otras bibliotecas populares. ¿Qué quiere decir con eso y qué tienen las otras bibliotecas que las hace más escalables?

MatrixFrog
fuente
Más discusión sobre esto en JavaScript reddit: reddit.com/r/javascript/comments/h21vr/…
MatrixFrog
Sin ver el video completo, puedo decir que usar jQuery por sí solo no se adapta bien a las aplicaciones de una sola página. La razón es que no obtienes un marco de modelo-vista-algo para organizar tu código. Sin embargo, combine jQuery con marcos estructurales como Backbone.js , Knockout.js y / o Sammy.js , y se escala muy bien.
user16764
No he visto la charla, pero mi 2c aquí es que la naturaleza centrada en los complementos de la bestia combinada con la falta de orientación y herramientas para cargar dependencias conduce a aplicaciones donde tienes sopa de complementos jQuery ya que alguien en el equipo necesita algo plugin para una tarea específica, dicho plugin se incluye en toda la aplicación y eventualmente terminas cargando 342 plugins jquery diferentes en toda la aplicación. Es algo así como la naturaleza de la bestia: está diseñada para facilitar las cosas a menor escala a costa de no tener que asimilar grandes conceptos aguas arriba.
Wyatt Barnett
44
Es curioso que 3 de 4 respuestas comiencen con alguna variación de "No he visto el video". ¿Cómo puede aclarar exactamente lo que quería decir el Sr. Crockford sin mirar el video?
Corbin Marzo
Bueno, no dijo mucho. Como dijo uno de los que respondieron, fue una especie de comentario casual en la sección de preguntas y respuestas al final. Pero haces un buen punto.
MatrixFrog

Respuestas:

41

Si miras el video, él no habla sobre jQuery formalmente. Es una respuesta rápida a una pregunta un tanto extraña de alguien después de la presentación ... al final de la presentación, aproximadamente el minuto 1:29.

Él dice muchas cosas buenas sobre jQuery. La parte de que no se escala bien, dice que no cree que jQuery se escale muy bien para aplicaciones muy complicadas (comparándolo con otras cosas como YUI). .

jon
fuente
29
+1 por ver el video antes de publicar una respuesta. (-:
KM.
3

Es difícil para mí decirlo sin mirar el video, pero supongo que es porque jQuery no ofrece todas las características de la mayoría de las otras bibliotecas que facilitan la programación de JavaScript. El propósito de jQuery es facilitar la manipulación de DOM simplificando el direccionamiento de elementos a través de selectores CSS y proporcionando un marco fácil para alterar esos elementos. Ofrece algunas otras feautes, como solicitudes de Ajax , administración básica de eventos, plantillas y alguna otra funcionalidad rudimentaria, pero eso es todo.

Otras bibliotecas como Prototype , MooTools , Ext JS y Dojo proporcionan muchas otras funcionalidades para crear objetos, administrar matrices y colecciones, manipular cadenas y hacer todas las otras cosas esenciales que nosotros, como programadores, esperamos poder hacer.

En resumen, jQuery carece de las herramientas que uno desearía para aplicaciones JavaScript a gran escala. Es bastante raro encontrar sitios muy pesados ​​con JavaScript usando jQuery, por esta misma razón. Por ejemplo, Mint.com se basa en YUI . El servicio web MobileMe de Apple se ejecuta en SproutCore (el sitio principal de Apple usa Prototype).

Al menos, eso es lo que creo que quiere decir.

ChiperSoft
fuente
1
Hm. Estoy bastante familiarizado con jQuery, pero no estoy muy familiarizado con YUI ni con ninguno de los otros marcos JS. Entonces, tal vez debería haber preguntado, ¿qué tiene YUI, Prototype, etc. que los hacen buenos para construir aplicaciones web grandes y escalables? En lugar de preguntar qué no tiene jQuery ...
MatrixFrog
66
"Es bastante raro encontrar sitios muy pesados ​​de JS usando jQuery" ... mientras estamos inventando cosas, ¿puedes inventar algo sobre YUI que requiera menos de 10 MB de archivos?
Ken
@ken Si está cargando toda la biblioteca YUI en su página, entonces lo está haciendo mal. Hay una razón por la que Yahoo ofrece un cargador dinámico. Y si no está de acuerdo con mi evaluación, proporcione ejemplos de lo contrario. Muéstranos una aplicación a gran escala basada en jQuery.
ChiperSoft
44
Definir "gran escala" entonces. La pila SE usa jQuery.
Ken
SE no es predominantemente controlado por JS, usa jQuery de la forma en que la mayoría usa jQuery: enlace de evento básico, solicitudes simples de AJAX, alguna manipulación de DOM. A gran escala significa aplicaciones completas construidas completamente en JS; sitios no basados ​​en páginas. Estamos hablando de cosas como las que mencioné anteriormente (Mint.com y MobileMe), Cloud9 Editor, gMail, Mockingbird. Sitios que tienen 1 MB o más de código JS escrito internamente.
ChiperSoft
2

jQuery no le permite una gran cantidad de reutilización como MooTools, por ejemplo.

Es una decisión de filosofía / diseño: jQuery no es mucho código para escenarios de disparar y olvidar.

Cuando crea experiencias de JavaScript discretas (generalmente solo mejoras de página), esto funciona muy bien y requiere muy poco código. Cuando creas Google Docs ... no tanto. Querrá más conceptos OOP que otros proyectos expongan como herencia, mecanismos similares a interfaces, etc.

Cohen
fuente