Mean Stack

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 7

Se conoce con el acrónimo de MEAN (formado por MongoDB, Express, AngularJS y NodeJS) al

stack o compilación de estas tecnologías para desarrollar aplicaciones web usando como único
lenguaje de programación javascript en el servidor, en el cliente y en la base de datos.

Y es que la omnipresencia del javascript en las aplicaciones web se ha hecho notar en los
últimos años. Es un lenguaje de programación fácil, versátil y adaptable a todas las
plataformas. El perfil del programador que domina MEAN es cada vez más necesitado en las
empresas, ya que es capaz de hacer frente a tareas de diferentes campos.

Allá por el año 1995, Brendan Eich que trabajaba por aquel entonces en Netscape, creó un
lenguaje llamado Mocha que fue renombrado varias veces hasta quedar en JavaScript.

Fig.1.- Estructura Mean.

En primer lugar y, a pesar del halo de modernidad que rodea a todo lo que lleva JavaScript en
el lado del servidor, ya en su nacimiento, se lanzó una implementación con Netscape
Enterprise Server. Poco después de su nacimiento fue estandarizado bajo el nombre
ECMAScript. Con esto podemos entender que JavaScript es una implementación de
ECMAScript. La última versión de ECMAScript es la 6, que la veremos referida como ES6
(deprecated) o ES2015, incluso leeremos referencias que hablan de JavaScript 6. Podemos
decir que ES2015 es el lenguaje, y JavaScript o JScript, los dialectos.
Con una especificación HTML, en aquella época limitada en lo que a la interacción con el
usuario se refiere, JavaScript se convirtió en aquello que especiaba las páginas web con efectos
e interacciones.

En la actualidad, Javascript se está imponiendo a la mayoría de los lenguajes también porque


funciona en el lado del cliente ejecutándose en el navegador.

Node.js

Node.js es un entorno de ejecución para JavaScript que se ejecuta en el servidor. Está


desarrollado en el motor v8 de JavaScript de Google, lo que da lugar a que compile o ejecute
código JavaScript a gran velocidad.

Tiene un único hilo de ejecución que permite solicitudes asíncronas. Esto, sumado al excelente
modelo de eventos de JavaScript, hace que Node.js gestione la memoria de manera eficiente.

En servidores basados en lenguajes como Java o PHP, cada solicitud a este genera un nuevo
hilo que suele ir acompañado de unos 2MB de memoria. En sistemas con una memoria de 8GB
de RAM estos lenguajes permiten, teóricamente, alrededor de 4000 usuarios conectados al
mismo tiempo. A medida que una aplicación web cuyo servidor es ejecutado en un entorno de
estos lenguajes crece, la única manera que tiene de poder soportar más usuarios es
incrementando el número de servidores.

Node.js soluciona este problema, proporcionando una manera fácil de crear aplicaciones web
escalables. En lugar de crear un hilo por cada nueva solicitud al servidor y asignarle la memoria
comentada anteriormente, cada conexión dispara un evento dentro del hilo de ejecución
asíncrono de Node.js. Esto le permite soportar decenas de miles de conexiones concurrentes.
No solo gestiona de manera eficiente la memoria, también consigue que las aplicaciones web
se ejecuten más rápido. Nunca entra en punto muerto y es un entorno no bloqueante. Al
poder ejecutar varias solicitudes concurrentemente, las aplicaciones ejecutadas en Node.js
pueden llegar a ser hasta 10 veces más rápidas.

En otros entornos en los que se utilizan servidores como Apache o Tomcat, existe una
jerarquía específica de carpetas en las que se despliegan las aplicaciones, además de ficheros
de configuración muy concretos.

Hay que destacar la flexibilidad que brinda Node.js en ese aspecto, pues permite lanzar el
número de servidores que el desarrollador desee y en el directorio que vea más práctico.

Node.js contiene, por defecto, ciertos módulos con los que es posible crear una aplicación
completa.

Entre estos módulos se encuentran:

 http: Incorpora la funcionalidad de un servidor http.


 https: Incorpora la funcionalidad de un servidor https.
 fs: Permite la manipulación del sistema de ficheros.
 path: Permite la manipulación de las rutas de los ficheros.
 events: Permite la definición, creación y manejo de eventos.
 url: Permite la manipulación de las urls.
 querystring: Permite el acceso a las “querystring”.

Express

Express.js es un framework de desarrollo de aplicaciones web minimalista y flexible, de los más


usados por la comunidad de usuarios de Node.js. Está inspirado en Sinatra, un conocido
framework de Ruby; y basado en Connect, otro framework extensible de manejo de servidores
HTTP.
Si bien es cierto que con Node.js se pueden crear aplicaciones web completas, Express permite
crearlas en menos tiempo y siendo más eficaces gracias al uso de otros módulos externos.
Express se comporta como una infraestructura que proporciona una API más amplia para las
aplicaciones en Node.js.

Una vez incorporado al proyecto con la sentencia “require”, se crea la aplicación, normalmente
denominada app, con la función “express()”. Para que el servidor se lance al iniciar el proyecto
en Node.js se utiliza el método “listen()”, que equivale al método “createServer()” del módulo
nativo HTTP.

La aplicación Express dispone de una serie de métodos que se basan en la utilización de


middleware, es decir, funciones que tienen acceso al objeto de petición y al objeto respuesta
del servidor. Pueden ejecutar cualquier código o realizar cambios en la solicitud y los objetos
de respuesta.

Mongo

MongoDB es una base de datos NoSQL especialmente útil en aplicaciones escalables. Permite
que los esquemas cambien rápidamente cuando las aplicaciones empiezan a crecer.

Utiliza el estándar JavaScript Object Notation, o JSON, para la manipulación de datos; lo cual es
importante ya que MEAN busca una comunicación sencilla entre cliente y servidor a la hora de
tratar con los datos.

Puede visualizarse a través de la consola, o a través de clientes como Robo 3T (Robomongo).

Para manipular los datos en la API de un proyecto MEAN es necesario incorporar mongoose,
un módulo externo instalado desde el gestor de paquetes NPM.
El componente más importante de Mongoose es el esquema. Cada uno de ellos está asociado
a una colección de MongoDB y define el formato de los objetos dentro de esa colección.

Un esquema está formado por claves, y cada clave define una de las propiedades de los
objetos de una colección. Los tipos, o SchemaTypes, permitidos son:

 String
 Number
 Date
 Buffer
 Boolean
 Mixed
 ObjectId
 Array

Una vez se completen ciertas funcionalidades de una aplicación web, como puede ser el
registro de usuarios, es muy común crear funciones o requisitos que comprueben el formato o
características de los formularios recibidos antes de que estos sean guardados en la base de
datos. Que las contraseñas tengan una longitud máxima o que los nombres de usuario no
contengan caracteres especiales son reglas simples que pueden ayudar a mantener una base
de datos limpia y más legible.

Lo habitual es realizar estas comprobaciones desde el propio cliente, pero, si de alguna forma
el usuario consigue eludir las funciones JavaScript que lleven a cabo esas comprobaciones, la
base de datos queda expuesta a recibir datos de todo tipo que puedan ser incompatibles con
la API incorporada.

Mongoose incorpora un tipo de middleware que permite llevar a cabo, desde la propia API,
estas comprobaciones antes de que los datos sean guardados. Este middleware son los
validadores.

VALIDADORES NATIVOS

Los validadores nativos incorporados en mongoose se clasifican según el SchemaType de la


clave a tratar. Destacan los siguientes:

 Todos los SchemaType poseen el validador “required”, que comprueba que la clave
sea proporcionada en el tratamiento de los datos.
 Los SchemaType de tipo Number contienen los validadores “min” y “max”, que
comprueban que la clave a tratar contenga un valor mínimo o máximo establecido.
 Los SchemaType de tipo String contienen los validadores “minlength” y “maxlength”,
que comprueban que la clave a tratar contenga un número de caracteres mínimo o
máximo establecido.

Cada validador puede ir acompañado de un mensaje personalizable que se lance en caso de


que la clave no cumpla la regla establecida.

VALIDADORES PERSONALIZADOS

Si los validadores nativos no son suficientes para los requisitos de una aplicación web,
mongoose permite al desarrollador crear validadores personalizados a través de la opción
“validate”.

Angular

La última tendencia en el desarrollo web es la creación de aplicaciones SPA, o Single Page


Application. Son clientes completos implementados con HTML, CSS y JavaScript que se
comunican con el servidor web a través de una API REST. Angular es un framework
especialmente diseñado para crear aplicaciones web SPA.

Su interfaz está basada en componentes, no en páginas HTML. Estos componentes permiten


extender el HTML con etiquetas propias que tienen un aspecto y un comportamiento
personalizado. Se recomienda usar con TypeScript, pero también tiene soporte para el
desarrollo de aplicaciones con JavaScript (ES5 y ES6) o cualquier lenguaje que transpile a
JavaScript.

La creación de una aplicación web SPA es una tarea bastante complicada si se crea a mano
desde cero. Hay muchos ficheros y carpetas necesarios que son muy parecidos entre ellos, por
lo que un enfoque muy útil es conseguir un esqueleto inicial de una aplicación web SPA.

Para obtener uno de estos esqueletos se pueden usar generadores, como pueden ser los
basados en Yeoman; proyectos semilla disponibles en github; o una herramienta oficial de
gestión de proyectos.

En el caso de Angular, la última opción es la más interesante ya que dispone de una


herramienta oficial muy completa, Angular-CLI, que ofrece comandos para:

 Generar el proyecto inicial.


 Generar partes posteriormente.
 Ejecutar el proyecto en modo desarrollo con compilado automático de TypeScript y
actualización automática en el navegador.
 Construir el proyecto para distribución.

También podría gustarte