Usando un marco como Backbone [cerrado]

24

Actualmente tengo una página http://proctors.org/tv que está impulsada por varias vistas y archivos adjuntos con toneladas de jQuery y spaghetti JavaScript hackeado, y me gustaría limpiarlo. Entiendo que los marcos más recientes de JavaScript "MVC" hacen uso de plantillas y no almacenan estrictamente todos los datos en el DOM como lo haría con jQuery.

Creo que usaría algo como Servicios y / o Vistas como back-end, con Backbone en el frente.

Hay un proyecto Do para Backbone , y recuerdo que hubo un BoF o una Sesión en DrupalCon Denver al respecto ...

Espero descubrir si vale la pena intentar reescribir esto en un nuevo marco o simplemente limpiar lo que tengo aquí.

Ryan Price
fuente
44
¿Cuál es la pregunta exactamente? Si la pregunta es "¿Alguien está usando marcos Javascript como Backbone o Ember con Drupal?" entonces es una encuesta, y como tal no es bienvenido en los sitios de Stack Exchange. Si tiene una pregunta específica sobre el uso de uno de esos marcos de JavaScript, haga esa pregunta.
kiamlaluno
2
Creo que está preguntando si existen marcos MVC javascript que puedan funcionar lo suficientemente bien con el marco javascript propio de Drupal para que resulten en menos trabajo que simplemente implementar el suyo. A mí me parece justo: para algunas cosas, la interacción con Drupal se realiza sin problemas, para otras, necesita tanto pirateo que sería mejor reescribirlo desde cero, y parece justo preguntarle a las personas que ya lo han intentado.
user56reinstatemonica8
Si desea un tutorial rápido para ejecutar Backbone + Drupal, puede consultar mi publicación de blog pixelite.co.nz/article/…
masterchief
Este tipo tiene un buen punto de partida para backbone y Drupal pixelite.co.nz/article/…
Dan Walmsley
Ja, ese tipo es @masterchief de una de las respuestas anteriores
Ryan Price

Respuestas:

18

He usado Ember y Backbone junto con Drupal, pero no de la forma en que piensas.

Ember y Backbone son herramientas excelentes para crear una aplicación web, pero Drupal no es realmente una buena herramienta para usar junto con ellas. Lo que deseas cuando creas una aplicación web es algo ligero y rápido. Desea que sea rápido para poder dar a sus usuarios la sensación de tiempos de respuesta inmediatos. Desea que sea ligero para mejorar la escala. Drupal no es rápido: el arranque completo de Drupal lleva mucho tiempo (en comparación con muchas otras opciones) si todo lo que desea hacer es proporcionar una API REST para su aplicación web. Drupal es PHP, lo que también hace que tenga mucha RAM y limita la cantidad de usuarios concurrentes.

Entonces, si Drupal es tan malo para esto, ¿por qué usarlo?

Realmente deberías usar Drupal para lo que Drupal se destaca en: un CMS. Lo que he hecho en el pasado con proyectos que necesitaban una aplicación web es usar Drupal para crear el CMS alrededor de la aplicación web. Para construir cosas como blogs, listas de contenido y me gusta. También creé módulos para definir algunas cosas de back-end, como definiciones de esquemas y otras cosas en las que tenía sentido usar Drupal, porque hizo que mi desarrollo fuera mucho más fácil.

En lugar de usar Drupal para crear la API REST que necesitaba la aplicación web, utilicé Node.js para crear la API REST real y otras comprobaciones que AJAX llama que debía realizar la aplicación web. Node.js sobresale al hacer esto. Es increíblemente rápido (tiempos de respuesta tan bajos como 30 ms para una lista de objetos). También es muy liviano, ya que JavaScript en el servidor usa acciones asíncronas, un servidor Node.js generalmente puede manejar miles de usuarios concurrentes donde PHP puede manejar quizás 100. Además de eso, ya que Node.js es JavaScript, puede reutilizar mucho del servidor de código y del lado del cliente. Literalmente, puede escribir el mismo código de validación, en lugar de tener que implementar tanto el lado del cliente en JavaScript como el lado del servidor en PHP. Si va a ir a Drupal con en Münich en unas pocas semanas, debería considerar ver la presentación de node.js.

Entonces, si usted es un desarrollador, le recomendaría encarecidamente que haga una configuración similar, y solo use Drupal para lo que es realmente bueno. Si desea crear una aplicación web simple y no espera muchos usuarios, usar Drupal como back-end podría ser una opción si ayuda a su tiempo de desarrollo.


Actualizar Drupal 8

Entonces, con el lanzamiento de Drupal 8, algo de lo anterior sigue siendo cierto, pero no en la misma extensión que antes. Drupal 8 es como Drupal 7, no una herramienta ligera, como Node.js, Rails, Django, etc. Dado que las aplicaciones de JavaScript consumen principalmente varios servicios, aún debe considerar si Drupal es la mejor herramienta para esto.

Con Drupal 8 se han mejorado muchas cosas. Los servicios son mucho más nativos, con Symphony dirigiendo la solicitud / respuesta. Drupal 8 tiene muchas posibilidades interesantes con el almacenamiento en caché avanzado y todas las excelentes características. Pero incluso con toda la grandeza de Drupal 8, sigue siendo mucho más pesado que las aplicaciones livianas. Es difícil saber qué tan exitoso se puede utilizar Drupal 8 como proveedor rápido de servicios web.

Aún así, con todo lo dicho y hecho, mi recomendación general sigue siendo la misma. Al ser un desarrollador de Drupal, es fácil usar Drupal para todo, ya que estamos familiarizados con él. Se siente seguro y Drupal se puede usar para casi cualquier cosa. Recuerde que aunque es posible usar Drupal para cualquier cosa, no significa que sea la mejor herramienta para todo. Hacer un análisis sólido y comprender las fortalezas y debilidades de las herramientas que desea utilizar en un proyecto de TI siempre será de gran ayuda y puede ayudarlo a evitar terminar en una posición de bloqueo con un resultado que no cumple con sus expectativas .

googletorp
fuente
Enfoque interesante ¿Está utilizando drupal.org/project/nodejs o está implementando su propia interfaz para Drupal DB?
mpdonadio
@googletorp, trabajé con phusion passenger e incluso ella no puede funcionar mejor sin el almacenamiento en caché y la optimización del servidor y todos los lenguajes de secuencias de comandos del lado del servidor (excepto js) tienen una gran cantidad de problemas de bloqueo. De hecho, yo mismo cambié de ruby ​​a php debido a un soporte de rendimiento dedicado en la comunidad de código abierto y una extrema facilidad de uso. Nodejs siempre será más rápido en comparación con otros idiomas.
Minty
De todos modos, el punto es que, dado que Drupal proporciona un marco de módulos de servicios increíble, pensé que podría compartir algunos conocimientos sobre el manejo de datos en el lado del cliente, especialmente la entrega de sesiones y otras cosas.
Minty
@Minty Hay un paquete de ayuda para la integración a Drupal en Nodejs: github.com/mikl/node-drupal El manejo real de la sesión depende mucho de cómo / qué hagas. CORS, etc., pero generalmente envío el Drupal session_id ya sea una cookie o en el encabezado de la solicitud.
googletorp
Acabo de leer esta increíble documentación de Backbone github.com/kjbekkelund/writings/blob/master/published/… y pensé, man backbone es una excelente manera de organizar su JavaScript y usarlo con devoluciones de llamada AJAX a través del sistema de enrutamiento. ¿Por qué no combinarlo con Drupal ya que Drupal se basa en las mismas características de enrutamiento?
AlxVallejo
6

Recientemente comencé a desarrollar mi primera aplicación backbone + drupal y realmente la estoy disfrutando. Usar el módulo Backbone junto con Servicios, Vistas de servicios y las bibliotecas requeridas. El proyecto es bastante simple: crear un carrusel de contenido manejable de 6 páginas que muestre varios datos, junto con un control deslizante de Noticias adicional que muestre contenido diferente. Esta página se encuentra en varias pantallas sin interacción del usuario, por lo que se requiere la capacidad de actualizar el contenido front-end sin actualizar el navegador. Pensé que esto encajaba perfectamente en una aplicación Drupal + Backbone con Drupal administrando el contenido y la columna vertebral controlando y sincronizando con el db. Me integré en jquery.cycle 2, que tiene una API increíble y se adapta bien al estilo de codificación MVC.

Puedo ver por qué las personas pueden asomarse al usar Drupal como marco de back-end, pero para una pequeña aplicación como esta, Drupal es ligero y rápido . Lo logré comenzando con una instalación mínima y seleccionando cuidadosamente los módulos contrib y core. Ahora tengo alrededor de 50 módulos con un poco menos de 150 líneas de código JS personalizado para el backbone y ya casi termino.

Eventualmente, intentaré confirmar esto como un ejemplo para el módulo backbone, ya que actualmente no hay ningún ejemplo que muestre cómo usar las Vistas como colecciones, etc.

En conclusión:

Merece la pena investigar esto si su proyecto coincide bien. En mi opinión, los problemas de rendimiento derivados de la pesadez de Drupal se pueden combatir fácilmente mediante el uso de mecanismos de almacenamiento en caché como Varnish, o incluso aumentar o almacenar en caché la página principal. La flexibilidad y la velocidad de desarrollo del uso de Drupal supera por completo los aspectos negativos para mí.

jefe principal
fuente
5

La respuesta básica es sí, algunas personas lo están usando. No lo he usado yo mismo (todavía no he encontrado una buena combinación de proyecto), pero actualmente hay un grupo Drupal para él, y también encajaría con la Iniciativa de Servicios Web y Contexto Básico, que es una de las Iniciativas de Drupal 8 . También hay una sesión en DrupalCon Munich 2012, Backbone.js en el Frontend .

Todavía no sé si está listo para el horario de máxima audiencia, pero en mi opinión vale la pena crear una prueba de concepto si tiene algo que podría beneficiarse de él y puede diseñar el lado JS para una interfaz y no una implementación . Eso ayudaría a aislar cualquier cambio en el backend si decide rescatar a Drupal, por cualquier razón.

mpdonadio
fuente
1
Esencialmente: Stackexchange es el lugar equivocado para preguntar sobre esto, ya que es un caso tan especial en este momento. Pasea a la discusión grupal sobre gdo
paul-m
MPD gracias por el enlace al grupo. Probablemente seguiré allí. Había hecho algunas preguntas en los grupos de usuarios, lo que realmente depende de quién esté allí. Todavía estoy tratando de averiguar cuándo debería comenzar una pregunta en Stack Exchange. Pensé que esto tendría más de una respuesta correcta, por lo que parecía un ajuste.
Ryan Price