Hasta ahora, he sido un gran admirador del patrón MVC para desarrollar aplicaciones web. Para la web, he desarrollado principalmente en PHP (con los marcos Kohana y CodeIgniter) y Ruby (RoR).
A medida que mis aplicaciones se vuelven más pesadas en el lado de Ajax (aplicaciones de una sola página, etc.) noté que no puedo evitar traicionar los conceptos muy básicos de MVC: Javascript está haciendo la mayoría de los trabajos; llamar a los controladores solo para solicitar vistas o más código js / json parece incorrecto.
Después de luchar por mantener todos los trabajos de enrutamiento en los controladores, ahora lo he dividido fundamentalmente entre ellos y Javascript (es decir, desde el punto de vista del marco, parte de las vistas). Al preguntar por json, la subversión MVC parece aún más obvia: el código js que realiza la solicitud es el controlador; el controlador del framework simplemente está actuando como proxy de los datos del modelo, lo que realmente estoy pidiendo.
Entonces, ¿qué debo investigar?
Estaba pensando en aplicaciones de javascript puro, por ejemplo, con backbone.js y una base de datos basada en documentos y escupiendo json (couchDB) como back-end, pero me encantan mis bases de datos relacionales.
Otra opción sería la siguiente: simplemente haría "modelos enrutados" en PHP / ruby / go / whatnot. Esos analizarán la solicitud, llamarán a la base de datos, devolverán algo de json.
Este enfoque me parece interesante, pero carece de documentación sustancial o análisis académico, por lo que tengo un poco de miedo al salto.
Ideas?
fuente
Respuestas:
Si no hay ningún análisis académico, hágalo usted mismo. Simplemente experimente en su próximo proyecto a pequeña escala y vea cómo le gusta. Lea el ensayo de Paul Graham sobre por qué eligió a Lisp para su inicio, a pesar de que no se usa comúnmente. http://www.paulgraham.com/avg.html
Hay muchos marcos MVC javascript por ahí. Si desea crear una aplicación principalmente de JavaScript, hágalo.
Simplemente cree una API tranquila en rails o cualquier marco que use que sea solo un contenedor para la base de datos, y no tendrá que renunciar a su base de datos relacional. Simplemente llame a la API como llamaría a la base de datos si fuera una aplicación lógica basada en servidor.
Además, si construye su aplicación de esta manera, puede incorporar soporte fuera de línea muy fácilmente.
fuente