¿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 al crear algunas funciones realmente geniales. Con eso ... así que me siento muy cómodo con eso. También creo que el futuro de la web continuará en la ruta actual del lado del cliente.

However...

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

Además, hay algunos excelentes AMD Loader herramientas para uso como RequireJS o LabJS etc. Sin embargo, jQuery ahora tiene las capacidades define y then .

Es cada vez más difícil hacer un seguimiento de todo esto ...

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

  • ¿Dónde encaja JQuery con los distintos marcos de controladores mencionados anteriormente? ?
  • Se JQuery se usa junto a cada uno o algunos de ellos tienen sus propios ' JQuery : ¿la versión de estilo 'baked-in?
  • ¿Se siguen necesitando herramientas como RequireJS si implementa uno de los varios controladores? ¿Los marcos mencionados anteriormente?
  • las capacidades define y then integradas en JQuery ahora supercede el cargador de AMD mencionado anteriormente?
  • ¿Cuál parece más modular? (ver notas abajo)

NOTAS:
Una cosa que no quiero en ningún marco futuro es el requisito de tener que aceptar grandes cantidades de funcionalidad que no uso. Es decir, preferiría usar un marco que sea verdaderamente modular. Por ejemplo, para usar la interfaz de usuario de jQuery, tiene que incorporar muchas otras bibliotecas centrales que posiblemente no utilice.

Estaré experimentando con cada uno, pero algunos comentarios REALES serían excelentes. He visto algunas preguntas 'similares', pero ninguna realmente ha respondido el sesgo anterior.

Gracias de antemano!

    
pregunta Prisoner ZERO 30.11.2011 - 13:17

2 respuestas

11

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

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

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

RequireJS / yada / yada son cargadores de módulos. Necesita algún tipo de cargador de módulos si desea escribir una aplicación modular.

  

¿Dónde encaja JQuery con los distintos marcos de controlador 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 a cada uno o algunos de ellos tienen su propia 'versión de estilo JQuery' incorporada?

Backbone / knockout / JavaScriptMVC no tiene la normalización del navegador integrada, por lo que necesita una herramienta para eso. No estoy seguro de que SproutCore tenga muchas cosas ahí.

  

¿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 requiere cargadores como requireJS
  • la sincronización requiere cargadores como modul8
  • usar espacios de nombres y solo incluir archivos
  • paquetes como ender
  

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

No. La capacidad de definición incorporada en jQuery le permite usarla con un cargador AMD sin envolver jQuery. Todavía necesitas un cargador AMD. La capacidad "entonces" es solo un poco de azúcar de jQuery diferido.

  

¿Cuál parece más modular? (vea las notas abajo)

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

Quieres modular, escribe tu propia biblioteca, escribe tu propia arquitectura.

Sin embargo, si quieres el menor de los males, elegiría el backbone porque es simple y pequeño o spine que es similar

    
respondido por el Raynos 30.11.2011 - 13:51
2

Responderé en JavaScriptMVC ya que soy colaborador:

  

¿Dónde encaja JQuery con los distintos marcos de controlador?   mencionado anteriormente?

JavaScriptMVC depende de jQuery y lo usa ampliamente.

  

¿Se utiliza JQuery junto a cada uno o algunos de ellos tienen su propio   'Versión de estilo JQuery' al horno?

JavaScriptMVC no tiene ninguna funcionalidad de competencia con jQuery. Esto no es tan cierto con Backbone que tiene su propio sistema de eventos. Pero, cualquier columna vertebral o columna vertebral se suman son muy minimalistas.

  

¿Se necesitan herramientas como RequireJS si implementas uno de los   varios controladores-marcos mencionados anteriormente?

JavaScriptMVC viene con un sistema de administración de dependencias - > robar. Puedes usar JavaScriptMVC con RequireJS, pero el robo es en realidad mucho más poderoso y aproximadamente de igual tamaño descargado por un usuario.

  

¿Cuál parece más modular? (vea las notas abajo)

Esto no es criticado. JavaScriptMVC es extremadamente modular. Usas solo lo que necesitas. Comparado 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 básicos aquí: enlace

Pero JavaScriptMVC es mucho más poderoso (en términos de características) en comparación con Backbone o Spine. Por ejemplo, los controladores de eventos con plantillas previenen 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 de MVC cuando sus controles escuchan cambios en el modelo como:

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

  }
})

El controlador desvinculará 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 admite aplazados
  • $ .Controller puede "revincular" los controladores de eventos
  • $ .Model admite asociaciones, getter / setters, valores predeterminados, validaciones

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

  • jQueryMX: la funcionalidad que falta 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 sea rastreable por google.
  • FuncUnit: un marco de pruebas increíblemente potente.

Ahora, de qué usar, mucho depende. Mucho depende de si estás haciendo una "aplicación" o una "página". Una aplicación que necesita pruebas, administración de dependencias, donde te interesan las fugas de memoria, vería JMVC o SproutCore.

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

    
respondido por el Justin Meyer 01.12.2011 - 05:06

Lea otras preguntas en las etiquetas