¿Dónde encaja jQuery con marcos como JavaScriptMVC, BackboneJS, SproutCore y Knockout?

14

He estado felizmente usando JQuery durante los últimos 2 años y he tenido bastante éxito creando algunas funciones realmente geniales ... así que estoy muy cómodo con eso. También creo que el futuro de la web continuará en la ruta actual del lado del cliente.

Sin embargo...

El próximo desafío parece venir en forma de varios marcos de controladores: KnockoutJS , BackboneJS , SproutCore , JavaScriptMVC (la lista continúa).

Además, hay algunas herramientas excelentes de AMD Loader para usar como RequireJS o LabJS, etc. Sin embargo, jQuery ahora tiene definey thencapacidades integradas.

Cada vez es más difícil hacer un seguimiento de todo ...

Y ahora, mi tarea parece ser evaluar / decidir una dirección estratégica para usar algún tipo de marco MVC o MVVM del lado del cliente ... pero tengo muchas preguntas.

  • ¿Dónde JQuery Fit-en con los diversos controlador-marcos mencionado anteriormente?
  • ¿Se utiliza JQuery junto con cada uno o algunos de ellos tienen su propia ' versión con estilo JQuery ' incorporada?
  • ¿ Todavía se necesitan herramientas como RequireJS si implementa uno de los diversos marcos de controladores mencionados anteriormente?
  • ¿Las capacidades definey thenintegradas en JQuery ahora reemplazan al cargador AMD mencionado anteriormente?
  • ¿Cuál parece más modular? (ver notas a continuación)

NOTAS:
Una cosa que no quiero en ningún marco futuro es el requisito de tener que incorporar una gran cantidad de funcionalidades que no uso. Es decir, prefiero usar un marco que sea verdaderamente modular. Por ejemplo, para usar jQuery UI, debe incorporar muchas otras bibliotecas principales que realmente no podría usar.

Voy a experimentar con cada uno, pero algunos comentarios REALES serían geniales. He visto algunas preguntas 'similares', pero ninguna realmente ha respondido al sesgo anterior.

¡Gracias por adelantado!

Prisionero CERO
fuente

Respuestas:

11

jQuery una herramienta de normalización de navegador cruzado. Te da lo siguiente

  • Utilidades DOM
  • Sistema de eventos
  • Ajax
  • Animaciones
  • ES5 utilidades
  • alguna otra cosa

Backbone / knockout / yada / yada son bibliotecas similares a MVC que están ahí para ayudarlo a estructurar y escribir aplicaciones modulares. Solo necesita estos si desea su estructura.

RequireJS / yada / yada son cargadores de módulos. Necesita alguna forma de cargador de módulos si desea escribir una aplicación modular.

¿Dónde encaja JQuery con los diversos marcos de controladores mencionados anteriormente?

Como se mencionó, jQuery normaliza los navegadores. marcos de controlador no lo hacen. No necesita jQuery pero necesita alguna forma de normalizar los navegadores.

¿Se utiliza JQuery junto con cada uno o algunos de ellos tienen su propia 'versión con estilo JQuery' incorporada?

Backbone / knockout / JavaScriptMVC no tiene la normalización del navegador incorporada, por lo que necesita una herramienta para eso. No estoy seguro acerca de SproutCore, parece que tiene mucho allí.

¿Todavía se necesitan herramientas como RequireJS si implementa uno de los diversos marcos de controladores mencionados anteriormente?

Estos solo son necesarios si escribe para escribir aplicaciones modulares. Así que más o menos sí.

Hay tres tipos de aplicaciones modulares.

  • async requieren cargadores como requireJS
  • la sincronización requiere cargadores como modul8
  • usando espacios de nombres y solo incluyendo archivos
  • paquetes como ender

¿Las capacidades definidas y luego integradas en JQuery ahora reemplazan al cargador AMD mencionado anteriormente?

No. la capacidad de definición incorporada en jQuery le permite usarla con un cargador AMD sin envolver jQuery. Aún necesita un cargador AMD. La capacidad de "entonces" es solo un poco de azúcar de los diferidos jQuery.

¿Cuál parece más modular? (ver notas a continuación)

Esa es una pregunta obstinada. Mi opinión personal es que todos estos marcos, incluido jQuery, están hinchados y no son modulares.

Desea modular, escriba su propia biblioteca, escriba su propia arquitectura.

Sin embargo, si quieres el mal menor, elegiría la columna vertebral porque es simple y pequeña o la columna vertebral, que es similar

Raynos
fuente
Gracias Raynos ... ¡Siempre puedo contar contigo para una gran respuesta!
Prisionero CERO
@Marjan Estoy esperando a cualquier otra persona a la que también le interese enviar cualquier entrada.
Prisionero CERO
@PrisonerZERO: no hay problema con eso en absoluto. Como parecía contento con la respuesta de Raynos, mi comentario fue solo en caso de que no supiera acerca de aceptar una respuesta (no revisé su perfil y su representante sugiere que es un usuario bastante nuevo aquí)
Marjan Venema
2

Contestaré en JavaScriptMVC ya que soy colaborador:

¿Dónde encaja JQuery con los diversos marcos de controladores mencionados anteriormente?

JavaScriptMVC depende de jQuery y lo usa ampliamente.

¿Se utiliza JQuery junto con cada uno o algunos de ellos tienen su propia 'versión con estilo JQuery' incorporada?

JavaScriptMVC no tiene una funcionalidad competitiva con jQuery. Esto no es tan cierto con Backbone que tiene su propio sistema de eventos. Pero, todo lo que se agrega a la columna vertebral o la columna vertebral es muy mínimo.

¿Todavía se necesitan herramientas como RequireJS si implementa uno de los diversos marcos de controladores mencionados anteriormente?

JavaScriptMVC viene con un sistema de gestión de dependencias -> robar. Puede usar JavaScriptMVC con RequireJS, pero robar es en realidad mucho más poderoso y tiene el mismo tamaño descargado por un usuario.

¿Cuál parece más modular? (ver notas a continuación)

Esto no es obstinado. JavaScriptMVC es extremadamente modular. Usas solo lo que necesitas. En comparación con la columna vertebral o la columna vertebral, puede usar sus partes M, V o C de forma independiente. Cuando se ensamblan juntos, es solo 1k más grande que Backbone (cuando se usa jQuery y Underscore). Puede ver los diversos tamaños de componentes base aquí: https://github.com/jupiterjs/javascriptmvc/issues/26

Pero JavaScriptMVC es mucho más poderoso (en términos de características) que Backbone o Spine. Por ejemplo, sus controladores de eventos con plantilla evitan prácticamente todas las pérdidas de memoria. Aquí hay una información sobre herramientas que se oculta cuando se hace clic en la ventana:

$.Controller('Tooltip',{
  "{window} click" : function(){
    this.element.remove();
  }
})

Esto es absolutamente crítico con el enfoque MVC cuando sus controles escuchan cambios en el modelo como:

$.Controller('Todos',{
  "{Todo} created" : function(Todo, ev, createdTodo){

  }
})

El controlador desenlazará automáticamente todos estos controladores de eventos externos.

Algunas otras fortalezas de solo las partes MVC:

  • $ .Class es un sistema de clases muy poderoso
  • $ .View y $ .Model soporta diferidos
  • $ .Controller puede 'volver a vincular' los controladores de eventos
  • $ .Modelo admite asociaciones, captadores / establecedores, valores predeterminados, validaciones

Ahora, JavaScriptMVC es mucho más que solo sus partes MVC (que son parte del subproyecto jQueryMX). Tiene:

  • jQueryMX: la funcionalidad faltante de jQuery como eventos especiales, dom helpers, etc.
  • Robar: un sistema de gestión de dependencias. Pero puede hacer cosas como tomar una aplicación ajax y hacer que Google sea rastreable.
  • FuncUnit: un marco de prueba increíblemente potente.

Ahora, de qué usar, mucho depende. Mucho depende si estás haciendo una "aplicación" o una "página". Una aplicación, que necesita pruebas, gestión de dependencias, donde le importan las pérdidas de memoria, miraría JMVC o SproutCore.

Si está pegando algunos widgets básicos, miraría la columna vertebral o la columna vertebral.

Justin Meyer
fuente
"Backbone o columna vertebral, puede usar sus partes M, V o C de forma independiente". Excepto que cada una de las M, V y C son tan grandes como la columna vertebral y la columna vertebral.
Raynos
Eso no es cierto. Backbone es 5k con su dependencia de subrayado. No estoy seguro de qué es la columna vertebral. Pero aquí está el desglose: Clase: 1k, Controlador: 1.74k, Modelo: 2.8k, $ .View: 1.6k, $ .String: .5k. Para un total combinado de 8.6k. Eso es 3k más, pero muchas más funciones útiles.
Justin Meyer
¿Usaría JavaScriptMVC con algo como los controles de la interfaz de usuario de Kendo? ¿Qué otros controles?
Prisionero CERO
Sí, cualquier biblioteca de IU basada en jQuery debería funcionar muy bien (siempre que use el sistema de eventos de jQuery para eventos).
Justin Meyer
Debo señalar que Backbone puede usar Zepato en lugar de jQuery, por lo que es mucho menos que las dependencias combinadas JMVC MVC con jQuery. Pero, pierdes bastante sin jQuery.
Justin Meyer