Desendolcador(es) | OpenJS Foundation (en) y Ryan Dahl |
---|---|
Versión inicial | 27 mayu 2009 |
Última versión | 21.7.1 (versión estable (es) , 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) , Android y iOS |
Tipu | marco de aplicaciones (es) , software llibre, sistema en tiempo de ejecución (es) y software de códigu abiertu |
Llicencia | Licencia MIT (es) |
Más información | |
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 |
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.[1] 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.[2] [3]
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.[4] Node.js inclúi una redolada REPL pa depuración interactiva.
Ejemplo
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
Concurrencia
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.[5] 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[6] pa esguilar l'aplicación col númberu de nucleos de procesamientu de la máquina na que s'executa.
V8
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
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,[7] utilizando una variable d'esportación pa dar a estos scripts accesu a funciones y variables implementaes polos módulos.[8]
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
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
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.[9] 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
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.[10]
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[10] | 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[10] | 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[10] | 2018-04-24 | Plantía:Version | Ochobre de 2018 | Abril de 2020 | Abril de 2021 |
11.x[10] | 2018-10-23 | Non LTS | N/D | Xunu de 2019 |
Comunidá
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.[11]
Ver tamién
- JavaScript
- V8
- NPM, el xestor de paquetes pa Node.js.
- Redolada de desenvolvimientu MEAN
- Meteor (framework web)
Referencies
- ↑ «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.
- ↑ http://mashable.com/2011/03/10/node-js/
- ↑ Alex Handy (24 de xunu de 2011). «Node.js pushes JavaScript to the server-side». SDTimes. Consultáu'l 24 de xunu de 2011.
- ↑ https://web.archive.org/web/20110724011601/http://wiki.commonjs.org/wiki/Implementations/node.js
- ↑ http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/
- ↑ cluster
- ↑ «CommonJS Implementations». Archiváu dende l'orixinal, el 20 de payares de 2015. Consultáu'l 15 de mayu de 2011.
- ↑ Ryswyck, Jan. «Taking Baby Steps with Node.js – CommonJS and Creating Custom Modules». Consultáu'l 15 de mayu de 2011.
- ↑ About Node.js, Node.js Website
- 1 2 3 4 5 «nodejs/Release» (inglés). Consultáu'l 15 de payares de 2017.
- ↑ «Copia archivada». Archiváu dende l'orixinal, el 17 de setiembre de 2012. Consultáu'l 2 d'agostu de 2014.
Enllaces esternos
- Sitiu oficial (inglés)
- Repositorio de código fuente (inglés)
- Llista de corréu Nodejs - Grupu de discutiniu sobre Node.js (inglés)
- Llista de corréu Nodejs-dev - Grupu de discutiniu sobre fallos y cambeos en Node.js (inglés)
- NPMJS. El xestor de paquetes de Node.js (inglés)
- How To Node, tutorial de Node.js (inglés)
- Como desenvolver la to propia estensión nativa pa Node.js (inglés)
- NodeNica, comunidá nicaragüense de Node.js (español)
- Concurrencia y paralelismu, por Marisa Gil (español)