By Isaac Gasi
La meta de toda arquitectura es construir algo bien hecho.
En nuestro caso, queremos que nuestro código sea:
Frameworks modernos de JavaScript y librerías te pueden brindar una structura y organización en tus proyectos, el establecimiento de una base mantenible desde el principio.
Backbone.js es precisamente uno de estos Frameworks, es OpenSource, basado en jQuery, es ligero, simple, e implementa una variación del modelo MVC.
Un camino fácil para la organización de su código utilizando variaciones de un patrón conocido.
MVC
Model-View-Controller
(Modelo - Vista - Controlador)
Representan un dominio específico de conocimiento y los datos de en una aplicación.
Piense en esto como un "tipo" de datos que puede modelar - como un usuario, fotos, o una nota de ToDo.
Típicamente constituyen la interfaz de usuario en una aplicación (por ejemplo, markup y plantillas)
Pero no tiene que ser necesariamente sólo esto.
Observan modelos, pero no se comunican directamente con ellos.
Manejan la entrada de datos (por ejemplo, los clics, las acciones del usuario) y actualizan los modelos.
No siempre siguen estrictamente el patrón anterior. Algunas soluciones (incluyendo Backbone.js) fusionan la responsabilidad del controlador en la vista, mientras que otros enfoques añaden componentes adicionales en la mezcla.
nos referimos a algunos Frameworks (en este caso Backbone.js) como un modelo MV*
Es una librería JavaScript ligera que añade estructura a su código del lado del cliente (browser). Esto hace que sea fácil de manejar y desacoplar las partes en su aplicación, dejándole con código que es más fácil de mantener a largo plazo.
Desarrolladores suelen utilizar las bibliotecas como Backbone.js para crear aplicaciones de una sola página (SPAs). SPAs son aplicaciones web que se cargan en el navegador y luego reaccionan a los cambios de datos en el lado del cliente sin necesidad de que la página completa sea actualizada desde el servidor. More UX :)
Basta con poner estas tres líneas, preferentemente al final del body (cuestiones de rendimiento)
Los modelos son muy utilies para definir la informaicón que vamos a definir en nuestra aplicación.
En ellos se encuentra el puente para que los datos se estructuren y la información sea facilmente accesible.
Definir correctamente nuestros modelos puede ayudar a que nuestro desarrollo se vuelva fácil.
Las Views se encargan de encaminar los datos para que se muestren con un template especifico.
También se encargan de tener el control/flujo de la aplicación, la interacción con usuario a través de eventos.
Entonces las View se encargan de interactuar entre Usuario - DOM - Datos
Las colleciones son muy utiles para manejar grupos de información con estructuras similares, por ejemplo, una lista de usuarios, lista de libros, lista de tareas.
La interacción con las collecciones es muy simple, a atrvés de ella podemos encontrar uno o varios modelos que necesitamos para interacción con nuestra view.
Las colecciones también implementan eventos, por lo cual, escuchar cuando se agrega, elimina, edita, o inlcusive resetar toda la colección es muy simple, esto facilita el uso dentro de las views.
Consumir una APIRest es totalmente fácil implementadolos desde una colleción de datos.
Es importante que el Backend con el cuál se este sincronizando este configurado para una comunicación a través de url semánticas.
En concreto consumir web services lo hace Backbone por nosotros, entonces sólo nos debemos concentrar en que nuestras colleciones esten debidamente comunicadas con las Views, es decir, dedicardos por completo a nuestra App.
Los routes nos permiten navegar en el flujo de la App.
Cuándo se utilizan los routes es recomendable implementar history, dado que esto activará la historía del navegador, y podremos sacerle beneficio en cuanto a rendimiento y accesibilidad para el usuario.
POdemos ocupar los router como handlers para nuestras views, collections o models.
Realmente este es un tema amplio, sin embargo mencionaré algunos tips, para implementar backbone con un drupal decouple.
Isaac García Sierra
Back End Developer
igasi.github.io
@isaac_gasi