Frameworks de JavaScript para construir aplicaciones de una sola página

Mi objective es migrar una aplicación web existente a una aplicación de página única RESTful (SPA). Actualmente, estoy evaluando varios frameworks de aplicaciones web Javascript.


Mis requisitos son los siguientes:

  • Capa de datos REST (como los datos de brasas)
  • MV * -estructura
  • Rutas dinamicas
  • Pruebas de apoyo
  • Codificación por convención
  • Soporte SEO
  • Soporte-Historial-Soporte
  • Buena documentación (API-)
  • Listo para producción
  • Comunidad viva

Columna vertebral

La aplicación actual está utilizando backbone.js . En general, backbone.js es un buen proyecto, pero me faltan estructuras bien definidas que determinan dónde debe suceder y cómo deben implementarse las cosas. Trabajando en un equipo más grande con desarrolladores cambiantes, esto lleva a algún tipo de código no estructurado, difícil de mantener y difícil de entender. Esta es la razón por la que ahora estoy buscando un marco, que ya define todo esto.

Ascua

Miré en ember.js los últimos días. El enfoque me parece muy prometedor. Pero, desafortunadamente, el código cambia casi a diario. Entonces, no lo llamaré listo para producción. Y, desafortunadamente, no podemos esperar a que sea la versión 1.0. Pero realmente me gusta la idea detrás de este marco.

Angular

Angular.js es un marco ampliamente difundido, mantenido por Google. Pero no pude familiarizarme con el angular. Para mí, la estructura parece poco clara, faltan explicaciones de las responsabilidades generales de cada parte del marco y las implementaciones se sienten incómodas. Solo para aclarar esto: esta es solo mi impresión personal y podría estar basada en la falta de conocimiento.

Batman y meteor

Como entendí, ambos marcos necesitan una parte del servidor también. Y ya que solo queremos un backend RESTful, no importa qué idioma, técnica o software, esto no es lo que queremos. Además, la API de back-end ya existe (RoR).

Knockout , CanJS y Spine

No profundicé más en estos tres candidatos. Tal vez este sea mi próximo paso.


Así que mis preguntas ahora:

  • ¿Me estoy perdiendo algún buen marco de SPA?
  • ¿Qué marco sugerirías / recomendarías?
  • ¿Evitarías alguno de los marcos mencionados?
  • ¿Cuál es tu experiencia en aplicaciones SP más grandes?

PD: Me gustaría recomendar una excelente publicación de blog de Steven Anderson (desarrollador central de Knockout.js) sobre la conferencia “Throne of JS” (de 2012) y los marcos de trabajo de javascript en general.

PS: Sí, ya sé que hay algunas preguntas sobre SO. Pero como el desarrollo es tan rápido y rápido para los SPA, la mayoría de ellos ya están desactualizados.

2 Solutions collect form web for “Frameworks de JavaScript para construir aplicaciones de una sola página”

Recientemente tuve que decidir sobre un marco de JavaScript SPA en un proyecto también.

  • Ascua

    Miré a Ember desde el principio y tuve pensamientos similares al respecto. Me gustó mucho, pero sentí que aún era demasiado temprano para usar … casi la mitad de los tutoriales que leí no funcionaban con la versión actual porque recientemente había algo. Cambiado en cómo funcionan las plantillas.

  • Columna vertebral

    Backbone fueron los primeros marcos que miramos seriamente. No estoy seguro de entender por qué crees que no tiene “estructuras bien definidas”? Backbone es bastante claro sobre cómo dividir el código de Modelo y de Vista. Tal vez te refieres a que no hay algún tipo de plantilla de aplicación? De todos modos, Backbone parece realmente enfocado en la parte de enlace de modelo / REST, pero en realidad no prescribe nada para el enlace de vista. Si el enlace del modelo es importante para usted y está usando Rails, debería ser muy fácil hacerlo. Desafortunadamente, los servicios web para mi aplicación no coincidían, y tuve que escribir mis propios métodos .sync y .parse para todo. La separación de los códigos de Modelo y Vista fue agradable, pero ya que tendríamos que escribir todos nuestros enlaces desde cero, no valía la pena.

  • Knockear

    El golpe de gracia es como el Yin al Backbone’s Yang. Donde Backbone se enfoca en el Modelo, Knockout es un marco MVVM y se enfoca en la Vista. Tiene envoltorios observable para las propiedades de los objetos de JavaScript y utiliza un atributo de enlace de data-bind para vincular las propiedades a su HTML. Al final nos fuimos con Knockout ya que el enlace de visualización era principalmente lo que necesitábamos para nuestra aplicación. (… más otros, como veremos más adelante …) Si le gustan los enlaces de vista de Knockout y los enlaces de modelos de Backbone, también hay KnockBack que combina ambos marcos.

  • Angular

    Miré esto después de Knockout: desafortunadamente, todos parecíamos bastante contentos con la forma en que Knockout vio el enlace. Parecía mucho más complejo y más difícil de conseguir que Knockout. Y utiliza un montón de atributos HTML personalizados para hacer enlaces, que no estoy seguro de que me gusten … Puede que vuelva a echar un vistazo a Angular más adelante, porque desde que me he encontrado con varias personas que realmente me gustan el marco, tal vez Acabo de verlo demasiado tarde para este proyecto.

  • Batman , Meteor , CanJS , Spine

    Realmente no miré muy de cerca ninguno de estos. Aunque sé que Spine es un marco similar a Backbone con objetos explícitos de Controller, y está escrito en CoffeeScript.

  • Epílogo

    Como mencioné, terminamos usando Knockout porque, para nuestro proyecto, era más importante centrarse en el enlace de vista. También terminamos utilizando RequireJS para modularización, cruce de caminos y Hasher para manejar el enrutamiento y la historia, Jasmine para pruebas, así como JQuery , Twitter Bootstrap y Underscore.js (y probablemente más bibliotecas que estoy olvidando en este momento).

    El desarrollo de aplicaciones de Javascript es más parecido al ecosistema de Java que al ecosistema de Rails. Rails proporciona un núcleo sólido de cosas que vas a usar para cada aplicación (Rails framework), y la comunidad proporciona muchas personalizaciones además de eso (gems). Java proporciona … un lenguaje. Y luego puedes elegir Java EE o Spring o Play o Struts o Tapestry. Y elija JDBC o Hibernate o TopLink o Ibatis para hablar con la base de datos. Y luego puedes usar Ant o Maven o Gradle para construirlo. Y elija Tomcat o Jetty o JBoss o WebLogin para ejecutarlo. Por lo tanto, hay más énfasis en elegir lo que necesita y lo que funciona en conjunto que elegir el marco de trabajo a usar.

Ha pasado un año desde que comenzamos a desarrollar nuestro proyecto de servicios en la nube con numerosos SPA, por lo que fue una gran decisión qué marco de JavaScript utilizar para nuestra interfaz de usuario para satisfacer nuestras necesidades de architecture RESTful. y después de muchas investigaciones terminamos usando el framework Dojo .

principales características que te encantarán:

  1. Comunidad educada y un equipo que creó un patrón de diseño perfecto. Grandes convenciones y architecture modular / orientada a objetos. Con las actitudes de progtwigción de CrossBrowser 🙂
  2. MV * estructura. cree widgets de UI con plantillas .htm externas y para producción, genere todos sus javascript y plantillas en un único, minified y .js pequeño
  3. construir clases con herencia. establecedores de propiedades, una gran cantidad de herramientas de función.
  4. mecanismo pub / sub (temas nombrados en dojo)
  5. una gran cantidad de controles de IU, desde el control de formulario de validación, diálogos / información sobre herramientas hasta una solución de cuadrícula de datos y cuadrícula de datos altamente funcional y altamente personalizable (pero liviana).
  6. Un buen sistema de prueba unitaria llamado DOH. También tiene un robot para reproducir las acciones del ratón / teclado.
  7. una herramienta de consulta (como JQuery) llamada NodeList con todas las características de jquery e incluso muchos de sus complementos.
  8. Y la parte buena pero no tan completa. tiene un módulo JsonRest para usar con sus servicios REST. Es una herramienta útil pero carece de muchas características.

Para superar estos problemas, desarrollamos un sondeador AJAX, manejo de errores y solución universal de carga y notificaciones. Lo hicimos muy fácilmente usando las convenciones y estructuras del framework dojo. Si no quieres hacer eso, quizás tengas que usar otro marco para esta parte.

Al ver los grandes SPA en la web, descubrirá que todos ellos están personalizados y que utilizan múltiples marcos. Pero nuestra experiencia con Dojo solo fue fantástica. y, por lo tanto, le sugiero que no piense en ningún otro marco, ya que todos ellos están incompletos para un SPA. pero en última instancia, también tiene otra opción (que no recomiendo y no tengo información detallada). Vaya con un marco de JAVA que sea capaz de construir SPA, generando automáticamente UI y javascript.

Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.