Node.js ye una redolada en tiempu d'execución multiplataforma, de códigu abiertu, pa la capa del servidor (pero nun llindándose a ello) basáu nel llinguaxe de programación ECMAScript, asíncrono, con I/O de datos nuna arquiteutura empobinada a eventos y basáu nel motor V8 de Google. Foi creáu col enfoque de ser útil na creación de programes de rede altamente escalables, como por casu, servidores web.[2] Foi creáu por Ryan Dahl en 2009 y la so evolución ta apadrinada pola empresa Joyent, qu'amás tien contratáu a Dahl en plantía.[3] [4]

Ficha de softwareNode.js
Desendolcador(es) OpenJS Foundation (en) Traducir y Ryan Dahl
Versión inicial 27 mayu 2009
Última versión 21.7.1 (versión estable (es) Traducir, 8 marzu 2024)
Escritu en Llinguaxe de programación C, C++ y JavaScript
Sistema operativu Linux, Microsoft Windows, BSD, macOS, sistema operativu asemeyáu a Unix, Advanced Interactive Executive (es) Traducir, Android y iOS
Tipu marco de aplicaciones (es) Traducir, software llibre, sistema en tiempo de ejecución (es) Traducir y software de códigu abiertu
Llicencia Licencia MIT (es) Traducir
Más información
Twitter nodejs
Youtube UCQPYJluYC_sn_Qz_XE-YbTQ
Sitiu web Web oficial
Códigu fonte Códigu fonte
Etiqueta de Stack Exchange Stack Exchange
GitHub nodejs
Cambiar los datos en Wikidata

Node.js ye similar nel so propósitu a Twisted o Tornáu de Python, Perl Object Environment de Perl, libevent o libev de C, EventMachine de Ruby, vibe.d de D y Java EE de Java esisti Apache MINA, Netty, Akka, Vert.x, Grizzly o Xsocket. Al contrariu que la mayoría del códigu JavaScript, nun s'executa nun navegador, sinón nel servidor. Node.js implementa delles especificaciones de CommonJS.[5] Node.js inclúi una redolada REPL pa depuración interactiva.

Ejemplo editar

Versión d'un hola mundu d'un servidor HTTP escritu en Node.js:

const http = require('http');

const hostname = '127.0.0.1';
const port = 1337;

http.createServer((req, res) => {
 res.writeHead(200, { 'Content-Type': 'text/plain' });
 res.end('Hello World\n');
}).listen(port, hostname, () => {
 console.log(`Server running at http://${hostname}:${port}/`);
});

Otru exemplu con un servidor TCP qu'escucha nel puerto 7000 y respuende con cualquier cosa que se-y unvie:

var net = require('net');

net.createServer(function (stream) {
 stream.write('hello\r\n');

 stream.on('end', function () {
 stream.end('goodbye\r\n');
 });

 stream.pipe(stream);
}).listen(7000);

Aspeutos téunicos editar

Concurrencia editar

Node.js funciona con un modelu d'evaluación d'un únicu filo d'execución, usando entraes y salíes asíncronas les cualos pueden executase concurrentemente nun númberu d'hasta cientos de miles ensin incurrir en costos acomuñaos al cambéu de contestu.[6] Esti diseñu de compartir un únicu filo d'execución ente toles solicitúes atiende a necesidaes d'aplicaciones altamente concurrentes, nel que toa operación que realice entraes y salíes tien de tener una función callback. Un inconveniente d'esti enfoque d'únicu filo d'execución ye que Node.js rique de módulos adicionales como cluster[7] pa esguilar l'aplicación col númberu de nucleos de procesamientu de la máquina na que s'executa.

V8 editar

V8 ye la redolada d'execución pa JavaScript creáu para Google Chrome. Ye software llibre dende 2008, ta escritu en C++ y compila el códigu fonte JavaScript en códigu de máquina en llugar d'interpretalo en tiempu real.

Node.js contién libuv pa remanar eventos asíncronos. Libuv ye una capa d'astracción de funcionalidades de redes y sistemes d'archivu en sistema Windows y sistemes basaos en POSIX como Linux, Mac OS X y Unix.

El cuerpu d'operaciones de base de Node.js ta escritu en JavaScript con métodos de soporte escritos en C++.

Módulos editar

Node.js incorpora dellos "módulos básicos" compilados n'el mesmu binariu, como por casu el módulu de rede, qu'apurre una capa pa programación de rede asíncrona y otros módulos fundamentales, como por casu Path, FileSystem, Buffer, Timers y el de propósitu más xeneral Stream. Ye posible utilizar módulos desenvueltos por terceros, yá sía como archivos ".node" precompilados, o como archivos en javascript planu. Los módulos Javascript impleméntense siguiendo la especificación CommonJS pa módulos,[8] utilizando una variable d'esportación pa dar a estos scripts accesu a funciones y variables implementaes polos módulos.[9]

Los módulos de terceros pueden estender node.js o añader un nivel d'astracción, implementando delles utilidaes middleware pa utilizar n'aplicaciones web, como por casu los frameworks connect y express. Magar que los módulos pueden instalase como archivos simples, de normal instálense utilizando'l Node Package Manager (npm) que nos facilitará la compilación, instalación y actualización de módulos según la xestión de les dependencies. Amás, los módulos que nun s'instalen el direutoriu por defectu de módulos de Node van precisar l'usu d'una ruta relativa pa poder atopalos. El wiki Node.js apurre una llista de dellos de los módulos de terceros disponibles.

Desenvolvimientu homoxéneu ente veceru y servidor editar

Node.js puede ser combináu con una base de datos documental (por casu, MongoDB o CouchDB) y JSON lo que dexa desenvolver nuna redolada de desenvolvimientu JavaScript unificáu. Cola adautación de los patrones pa desenvolvimientu del llau del servidor tales como MVC y les sos variantes MVP, MVVM, etc. Node.js facilita la reutilización de códigu del mesmu modelu de interfaz ente'l llau del veceru y el llau del servidor.

Bucle d'eventos editar

Node.js rexistrar col sistema operativu y cada vez qu'un veceru establez una conexón executa un callback. Dientro de la redolada d'execución de Node.js, cada conexón recibe una pequeña asignación d'espaciu de memoria dinámicu, ensin tener que crear un filo d'execución.[10] A diferencia d'otru servidores empobinaos por eventos, el bucle de xestión d'eventos de Node.js nun ye llamáu explícitamente sinón que s'activa a la fin de cada execución d'una función callback. El bucle de xestión d'eventos terminar cuando yá nun queden eventos por atender.

Releases editar

Les nueves releases major de Node.js sacar de la caña master de GitHub cada seis meses. Les versiones pares sacar n'abril, y les impares n'ochobre. Cuando se lliberar una versión impar, la versión par anterior pasa a soporte al llargu plazu (Long Term Support, LTS), que da a la versión un soporte activu de 18 meses dende la fecha d'entamu de la LTS. Dempués d'estos 18 meses, la versión recibe otros 12 meses de soporte de caltenimientu. Una versión activa va recibir los cambeos compatibles unes poques selmanes dempués de qu'aterricen na versión estable actual. Una versión de mantenimiendo va recibir namái actualizaciones crítiques y de documentación.[11]

La estratexa y política de les versiones LTS xestionar pol LTS Working Group en collaboración col Technical Steering Committee de Node.js Foundation.

Release Nome !Fecha release Estáu LTS Entamu LTS Empecipio caltenimientu !Fin

caltenimientu

v0.10.x 2013-03-11 Plantía:Version - 2015-10-01 2016-10-31
v0.12.x 2015-02-06 Plantía:Version - 2016-04-01 2016-12-31
4.x Argon 2015-09-08 Plantía:Version 2015-10-01 2017-04-01 2018-04-30
5.x 2015-10-29 Non LTS N/D 2016-06-30
6.x Boron[11] 2016-04-26 Plantía:Version 2016-10-18 2018-04-30 Abril de 2019
7.x 2016-10-25 Non LTS N/D 2017-06-30
8.x Carbon[11] 2017-05-30 Plantía:Version 2017-10-31 Abril de 2019 Avientu de 2019
9.x 2017-10-01 Non LTS N/D 2018-06-30
10.x Dubnium[11] 2018-04-24 Plantía:Version Ochobre de 2018 Abril de 2020 Abril de 2021
11.x[11] 2018-10-23 Non LTS N/D Xunu de 2019

Comunidá editar

Esiste una comunidá bien activa de desarrolladores de Node.js que se comuniquen al traviés de grupos de discutiniu, nodejs y nodejs-dev y la canal IRC #node.js en freenode. La comunidá axuntar en NodeConf, una convención de desarrolladores centrada en Node.js.[12]

Ver tamién editar

Referencies editar

  1. «Release 21.7.1» (8 marzu 2024). Consultáu'l 22 marzu 2024.
  2. «Wait, What's Node.js Good for Again?» (inglés). ReadWriteWeb (25 de xineru de 2011). Archiváu dende l'orixinal, el 21 de xunu de 2013. Consultáu'l 16 de xunu de 2015.
  3. http://mashable.com/2011/03/10/node-js/
  4. Alex Handy (24 de xunu de 2011). «Node.js pushes JavaScript to the server-side». SDTimes. Consultáu'l 24 de xunu de 2011.
  5. https://web.archive.org/web/20110724011601/http://wiki.commonjs.org/wiki/Implementations/node.js
  6. http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/
  7. cluster
  8. «CommonJS Implementations». Archiváu dende l'orixinal, el 20 de payares de 2015. Consultáu'l 15 de mayu de 2011.
  9. Ryswyck, Jan. «Taking Baby Steps with Node.js – CommonJS and Creating Custom Modules». Consultáu'l 15 de mayu de 2011.
  10. About Node.js, Node.js Website
  11. 11,0 11,1 11,2 11,3 11,4 «nodejs/Release» (inglés). Consultáu'l 15 de payares de 2017.
  12. «Copia archivada». Archiváu dende l'orixinal, el 17 de setiembre de 2012. Consultáu'l 2 d'agostu de 2014.

Enllaces esternos editar