Introducción
Introducción
El hecho de que el desarrollo de las aplicaciones web esté desde siempre en constante evolución, habla sobre las dos necesidades que cada vez se vuelven más significativas:
-
La primera es industrializar y por lo tanto, reutilizar, las piezas de software cuyo funcionamiento ha sido puesto a prueba, para aumentar la productividad (y la seguridad) del desarrollo.
-
La segundo es optimizar la carga de los servidores que no para de aumentar (principalmente en el caso de la gestión de las redes sociales o del comercio en línea).
La industrialización del desarrollo de aplicaciones web, exige crear aplicaciones modulares. De esta manera, los módulos implementan grandes funcionalidades y se pueden identificar las piezas de software (componentes) a partir de los cuales se construyen los módulos.
La optimización de la carga de los servidores, implica reenfocar éstos sobre la gestión de los flujos de datos y descargarlos de la tarea de generación de páginas web. Con este enfoque, el cliente (en la mayor parte de los casos, un navegador), debe recibir una aplicación completa (o casi completa, algunos componentes se podrían cargar más adelante), lo suficientemente ligera como para ser cargada en la memoria central y beneficiarse del entorno de ejecución del navegador. Esto también implica que el usuario debe poder navegar entre las vistas...
La arquitectura MEAN para una aplicación web
La arquitectura MEAN pone en juego a cuatro actores: el SGBD MongoDB, el framework Express, el framework Angular y un servidor Node.js.
Esta arquitectura permite:
-
Desacoplar completamente la parte cliente (el «client-side») de la parte servidor (el «server-side»). El cliente invoca al servidor, seleccionando las rutas para las que la sintaxis RESTful orientada a datos, no exhibe las operaciones subyacentes.
-
Acceder a los datos de manera extremadamente reactiva, gracias a la eficacia del servidor Node.js y a la flexibilidad del servidor de bases de datos NoSQL MongoDB.
-
Crear páginas web de manera modular y reutilizable (con componentes y módulos), gracias al framework aplicativo Angular.
-
Homogenizar el desarrollo alrededor del lenguaje JavaScript y de su extensión TypeScript, que permite una programación orientada a objetos con clases (también es posible utilizar el lenguaje Dart).
1. El principio de las aplicaciones mono página (single page applications)
Las aplicaciones mono página inicialmente se cargan en el cliente, los accesos en el servidor solo se destinan a los intercambios de datos.
Los beneficios de una arquitectura como esta, son numerosos:
-
El fuerte desacoplamiento entre la aplicación cliente y el servidor, permite una evolución sencilla de estas dos entidades.
-
El servidor es mucho menos solicitado por cada cliente...
Angular en el centro de la arquitectura MEAN
La aplicación Angular generalmente está formada por diferentes módulos (un módulo principal y varios (sub)módulos, que implementan las grandes funcionalidades de la aplicación). Los módulos agrupan ellos mismos los componentes implementados por las clases. Cada componente para el que la vista aparece en la interfaz global (que se corresponde con la página única de la aplicación), tiene una plantilla. Esta plantilla se puede integrar en la plantilla de otro componente, a través de una etiqueta que representa el componente (esta etiqueta está en lenguaje HTML), o se puede insertar en un momento dado en una ubicación particular (un outlet) por el router que activa temporalmente el componente.
La implementación del router permite crear vistas temporales e instaura un desacoplamiento fuerte entre una acción (expresada por la selección de una ruta) y uno o varios componentes activados, como consecuencia de esta acción.
Los servicios Angular que son componentes de «utilidades» (se podrán utilizar por varios componentes y no tienen plantilla), administran principalmente el flujo de datos desde o hacia el servidor Node.js. En cuanto a él, el servidor Node.js dialoga con los servicios Angular a través de servicios web gestionados por el framework Express, y gestiona...
Presentación de El hilo rojo: una aplicación de e-commerce
Para ilustrar nuestro propósito, le proponemos crear paso a paso una maqueta de aplicación de e-commerce (un marketplace). El hilo rojo solo presentará el marco mínimo de una aplicación cómo esta, tanto desde el lado de la aplicación cliente Angular, como del servidor (implementaremos una base de datos extremadamente simplificada).
Por lo tanto, esta maqueta de una aplicación de e-commerce se construirá a través de la arquitectura MEAN, movilizando:
-
Una base de datos MongoDB que tiene tres colecciones:
-
Una colección Users que memoriza los identificadores de los clientes.
-
Una colección Products que memoriza los productos en venta.
-
Una colección Carts que memoriza las cestas de la compra en curso.
-
Un servidor Node.js que gestiona los servicios web que intercambian datos entre la base de datos MongoDB y la aplicación Angular.
-
Una aplicación mono página Angular modular que gestiona, a diferencia del módulo principal, dos módulos (susceptibles de ser reutilizados en otras aplicaciones):
-
Un módulo que permite seleccionar los productos aplicando cualquier combinación de criterios de búsqueda sobre:
-
sus tipos;
-
sus marcas;
-
sus precios (a través de los intervalos de precio);
-
su popularidad.
o realizando una búsqueda sobre palabras clave.
-
Un módulo...