Backbone.js es un framework de JavaScript que permite crear aplicaciones basadas en el patrón de arquitectura Modelo-vista-controlador (MVC). Las aplicaciones que siguen este esquema están formadas por tres componentes básicos:
- Modelo. Es la representación de los datos que maneja la aplicación. Generalmente, se sostiene por una base de datos. Gestiona el acceso, eliminación y modificación de la información.
- Vista. Genera las salidas visibles por el usuario. Incluye una interfaz que le permite interactuar con la información del modelo. Puede acceder al modelo, pero no modificarlo directamente.
- Controlador. Un intermediario entre las otras dos capas. Recibe peticiones de la vista (por ejemplo, una modificación de datos), las efectúa y devuelve a la vista el resultado de la operación. Así, se genera una nueva vista, actualizada.
La adaptación a este patrón es la principal diferencia entre Backbone.js y proyectos relacionados, como la biblioteca jQuery. Sin embargo, Backbone.js no debe tomarse como una alternativa a jQuery, sino que incluso puede actuar como su complemento. Muchas veces se utiliza Backbone.js para definir la estructura de la aplicación y jQuery para definir otros aspectos, como el diseño o la usabilidad. Backbone.js presenta una gran capacidad de integración con otras soluciones.
Al patrón MVC, Backbone.js agrega otros elementos:
- Eventos. Módulos que se disparan cuando se produce una acción determinada (por ejemplo, un cambio en el modelo).
- Colecciones. Conjuntos ordenados de modelos.
- Routers. Permiten separar una misma página en distintas secciones y mostrar, en cada una de ellas, contenido diferente. Es decir, la ruta de la página no está atada a su contenido.
- Sincronización. Una función nos permite mantener los datos del modelo sincronizados entre el cliente y el servidor, evitando posibles inconsistencias.
Backbone.js es ideal para crear aplicaciones web de lado cliente y de una sola página cuya complejidad exija el apoyo de una estructura definida para un proceso de desarrollo ordenado. Sin embargo, el uso de una página única para montar la aplicación hace que existan pocos cambios de página, acumulándose en memoria objetos que ya no se utilizan (garbage) y dándose un uso ineficiente de ese recurso.