¿Por qué necesitamos dos mvc para una aplicación web tanto para frontend como para backend?

Asumiré por el bien de la pregunta que el front-end es realmente un MVC, aunque actualmente los paradigmas de front-end más populares son MV * (como en algo).

Esto se debe a que estos dos MVC no cumplen el mismo rol, y el hecho de que ambos extremos están usando el mismo paradigma se debe simplemente a la efectividad del mismo.


El modelo:

  • Del lado del servidor: conexión a la base de datos para recuperar / almacenar información: obtenga una lista de nombres de estudiantes.
  • Lado del cliente: estructuración de datos AJAX: obtenga una representación JSON de los nombres de los estudiantes, almacénelos para una fácil manipulación en un objeto con métodos convenientes como eliminar (que, por ejemplo, desencadena una solicitud DELETE al servidor).

El controlador:

  • Del lado del servidor: el coordinador entre datos y vistas: el cliente solicitó una página que necesita la lista de nombres de estudiantes; obténgalo del modelo e insértelo en una vista determinada, luego envíelo.
  • Lado del cliente: lo mismo aquí. En algunos casos, también se encarga del enrutamiento, es decir, cambiar la URL sin actualizar la página (simplemente solicite otro JSON para llenar la página).

La vista:

  • Del lado del servidor: muy probablemente una página html de plantilla, que el controlador toma como una cadena grande e inserta datos donde sea necesario: recorra los nombres de los estudiantes y genere una línea de ‘
  • studentName [i]
  • ‘ cada vez . Al final, obtienes una cadena html válida.

  • Lado del cliente: manipula la interfaz de usuario, agrega interactividad: haz que los estudiantes cuyo apellido comience con ‘A’ parpadeen en rojo y, cuando se cierne, muestren más información.

La gran razón por la que hay dos MVC es porque el front-end no puede comunicarse directamente con una base de datos del servidor, y el back-end no puede actualizar dinámicamente la IU y responder a la interactividad. Los dos MVC hacen diferentes trabajos.

Dicho esto, hace un tiempo, y si realmente estira la definición de ‘aplicación web‘, servir páginas simples y estáticas sin JavaScript era viable. En ese caso, no hay necesidad de un paradigma del lado del cliente. Al hacer clic en una página, se activa una solicitud al servidor, que utiliza MVC para enviarle otra página, enjuagar y repetir. Algunos podrían recordar esos juegos de hacer clic, actualizar y hacer clic en PHP en ese entonces.

Pero las aplicaciones web modernas necesitan interactividad; no puede crear una buena experiencia actualizando la pantalla cada vez que realiza una acción. ¿Te imaginas que Facebook se actualiza cada vez que le envías un mensaje a tu amigo?


Notas al margen:

1. Meteor intenta cambiar esto, al menos en apariencia, “fusionando” el lado del cliente y el lado del servidor a través de Node.js (JavaScript en el servidor). Esto puede aliviar algo de dolor.

2. Teóricamente, si existe un sistema de vista del lado del cliente tan poderoso que solo puede tomar los datos y alimentarlos a una interfaz de usuario sin preocuparse demasiado por organizar los datos y coordinarlos con los controladores, entonces también podría eliminar una gran parte de La necesidad de un MVC front-end.