Node.js

Node.js
Información sobre la plantilla
Nodejs1.png
Entorno de ejecución basado en ECMAScript y el motor V8 de Google.
CreadorRyan Lienhart Dahl
DesarrolladorNodeJS Foundation
Diseñado porRyan Lienhart Dahl
Lanzamiento inicial27 de mayo de 2009
Última versión estable12.16.1
GéneroDirigida por eventos
Sistemas Operativos compatiblesWindows, Mac OS X, Linux, Solaris, FreeBSD, OpenBSD, webOS
LicenciaLicencia MIT
Sitio web
https://nodejs.org


Node.js. Es un entorno de desarrollo, basado en el motor V8 de Google.

¿Qué es Node.js?

Node.js es un entorno de desarrollo en la capa del servidor (pero no limitándose a ello) basado en el estándar ECMAScript y en el motor V8, con I/O de datos en una arquitectura orientada a eventos. Fue creado con el enfoque de ser útil en la creación de programas de red altamente escalables, como por ejemplo, servidores web.


Aspectos Técnicos

V8

V8 es el entorno de ejecución para JavaScript creado para Google Chrome. Es software libre desde 2008, está escrito en C++ y compila el código fuente JavaScript en código de máquina en lugar de interpretarlo en tiempo real.

Node.js contiene libuv para manejar eventos asíncronos. Libuv es una capa de abstracción de funcionalidades de redes y sistemas de archivo en sistemas Windows y sistemas basados en POSIX como Linux, Mac OS X y Unix.

El cuerpo de operaciones de base de Node.js está escrito en JavaScript con métodos de soporte escritos en C++.

Módulos

Node.js incorpora varios módulos compilados en el propio binario, como por ejemplo el módulo de red, que proporciona una capa para programación de red asíncrona y otros módulos fundamentales, como por ejemplo Path, FileSystem, Buffer, Timers y el de propósito más general Stream. Es posible utilizar módulos desarrollados por terceros, ya sea como archivos ".node" precompilados, o como archivos en javascript plano. Los módulos Javascript se implementan siguiendo la especificación CommonJS para módulos,​ utilizando una variable de exportación para dar a estos scripts acceso a funciones y variables implementadas por los módulos.

Los módulos de terceros pueden extender node.js o añadir un nivel de abstracción, implementando varias utilidades middleware para utilizar en aplicaciones web, como por ejemplo los frameworks Connect y Express. Pese a que los módulos pueden instalarse como archivos simples, normalmente se instalan utilizando el Node Package Manager (npm) que nos facilitará la compilación, instalación y actualización de módulos así como la gestión de las dependencias. Además, los módulos que no se instalen en el directorio por defecto de módulos de Node necesitarán la utilización de una ruta relativa para poder encontrarlos.

Concurrencia

Node.js funciona con un modelo de evaluación de un único hilo de ejecución, usando entradas y salidas asíncronas las cuales pueden ejecutarse concurrentemente en un número de hasta cientos de miles sin incurrir en costos asociados al cambio de contexto.​ Este diseño de compartir un único hilo de ejecución entre todas las solicitudes atiende a necesidades de aplicaciones altamente concurrentes, en el que toda operación que realice entradas y salidas debe tener una función callback. Un inconveniente de este enfoque de único hilo de ejecución es que Node.js requiere de módulos adicionales como cluster para escalar la aplicación con el número de núcleos de procesamiento de la máquina en la que se ejecuta.

Desarrollo homogéneo entre cliente y servidor

Node.js puede ser combinado con una base de datos documental (por ejemplo, MongoDB o CouchDB) y JSON lo que permite desarrollar en un entorno de desarrollo JavaScript unificado. Con la adaptación de los patrones para desarrollo del lado del servidor tales como MVC y sus variantes MVP, MVVM, etc. Node.js facilita la reutilización de código del mismo modelo de interfaz entre el lado del cliente y el lado del servidor.

Utilización

Node.js suele ser muy utilizado en aplicaciones de red, por ejemplo, servidores web, streams, sockets, etc; debido a su alta concurrencia.

Ejemplos

El tipico (hello_world.js):

console.log('Hello world');

Un servidor HTTP básico

var http = require("http");
http.createServer(function(request, response) {
 response.writeHead(200, {"Content-Type": "text/html"});
 response.write("Hola Mundo");
 response.end();
}).listen(8888);
  

El código anterior crea un servidor http básico esperando a servir peticiones en el puerto 8888.

Véase también


Fuentes