javascript model-view-controller model backbone.js

javascript - ¿Backbone.js es realmente un MVC?



model-view-controller model (6)

Backbone es uno de esos MV * (MV-star). No hay controlador porque la lógica que opera la aplicación está en la Vista (algo como M (V + C) en su lugar).

Y no existe una definición unificada para "Modelo", ya que se usa de manera diferente en diferentes marcos en diferentes idiomas. Pero, en general, los modelos son solo una abstracción del almacenamiento de datos y, opcionalmente, tienen un poco de lógica, como la validación, el formato y los cambios de estado.

backbone.js ha sido mencionado como un framework MVC para Javascript. ¿Pero es?

Aquí está la descripción del modelo, de http://documentcloud.github.com/backbone/

Los modelos son el corazón de cualquier aplicación JavaScript, que contiene los datos interactivos, así como una gran parte de la lógica que lo rodea: conversiones, validaciones, propiedades computadas y control de acceso. Extiende Backbone.Model con sus métodos específicos de dominio, y Model proporciona un conjunto básico de funciones para administrar los cambios.

Ahora, esa no es mi comprensión del modelo en MVC en absoluto. En mi entendimiento, el modelo son solo las clases que modelan el dominio, por lo que su Estudiante, Escuela y Profesor se oponen. El controlador realiza la lógica de negocios en ellos e interactúa con la vista para mostrar y recibir entradas.

Este entendimiento es consistente con las diversas definiciones que encuentro en la web, IE http://en.wikipedia.org/wiki/Model_view_controller :

Model – View – Controller (MVC) es un patrón de diseño para interfaces de usuario de computadora que divide una aplicación en tres áreas de responsabilidad:

el Modelo : los objetos de dominio o las estructuras de datos que representan el estado de la aplicación.

Entonces, mi pregunta es: ¿backbone.js es realmente un marco MVC en cualquier sentido, o es más bien una forma general de ayudarlo a unir todo?

Por cierto, la definición del Modelo de las preguntas frecuentes de backbone.js parece diferir de la que mencioné anteriormente (también de backbone.js http://documentcloud.github.com/backbone/#FAQ-mvc :

Backbone.Model - Como un modelo de Rails menos los métodos de clase. Envuelve una fila de datos en lógica de negocios.

Entonces, ¿en qué sentido es backbone.js realmente un MVC o no?

(Advertencia: actualmente estoy evaluando backbone.js).


Creo que te estás quedando colgado de los nombres. No todas las estructuras MVC se adhieren a la misma convención de nomenclatura. Por ejemplo, en Django, los controladores se denominan vistas y las vistas se llaman plantillas. La columna vertebral sigue un patrón de denominación similar. Tenga en cuenta que Backbone es muy flexible en la parte de las vistas, y no aplica ninguna biblioteca de plantillas en particular.

Como ya se señaló, la lógica incluida en los modelos de Backbone es la lógica que concierne al modelo. Una base de datos relacional estándar, que es una colección de modelos (tablas), generalmente se preocupa por el tipo de datos en columnas.

La lógica que normalmente iría en sus controladores ("Vistas" de Backbone) sería cosas como manejar datos de sesión transitorios, verificar el estado del usuario (autenticado, por ejemplo, aunque no estaría haciendo eso en js), vincular vistas a modelos (Backbone sí exactamente esto, administrando dónde y cuándo se almacenan / crean los modelos según las acciones del usuario y las plantillas de enlace para actualizar los cambios del modelo).

Así que, en resumen, Backbone en realidad se adhiere bastante bien a MVC, mucho mejor que la mayoría de los frameworks "MVC" del lado del servidor, que generalmente son frameworks realmente "PAC" (Presentation-Abstraction-Control).


Es un poco confuso cuando intentas encontrar la " M " ( Modelo ) la " V " ( Ver ) y la " C " ( Controlador ).

De esa manera, siempre podemos discutir los términos, pero lo importante es la intención.

Intersección de los " Términos " con la " Intendencia ":

Ellos" :

Modelos Backbone. Las colecciones están vinculadas a los modelos .

La V" :

La plantilla de Underscore.js predeterminada representa la " Intención de vista " de MVC estándar

La C" :

Backbone View es el controlador . Se llama Ver en la red troncal (como en muchos otros como Django ) porque maneja el renderizado. Desde el punto de vista de MVC es un controlador. Las rutas están vinculadas con las Vistas.

Ahora, a veces solo para satisfacer la abreviatura de MVC, algunos la llaman " Colecciones de vista de modelo ". Pero eso es lo que no se debe decir.



Tipo de ambos. Si estás mirando el sentido estricto de un modelo; es decir, que el modelo es simplemente datos, entonces no. Pero se han colocado validaciones, conversiones, etc., porque Backbone está bastante centrado en el modelo. Desde mi propia experiencia, normalmente trato los modelos Backbone en el sentido tradicional en que el modelo es una representación de la aplicación del almacén de datos backend, y todo lo que tiene son métodos de acceso para manipular esos datos.

El punto es que a pesar de que existen las facilidades para validar o realizar el control de acceso, etc., puede elegir seguir un patrón MVC más clásico. Es totalmente de usted. Eso es lo que me encanta de Backbone es que te brinda un motor MVC en el que construyes una arquitectura de aplicación completa. Si desea seguir el patrón de diseño clásico de MVC, puede hacerlo. ¡Aclamaciones!


en backbone.JS MVC son las siglas de MODEL VIEW COLLECTION ...