Movatterモバイル変換


[0]ホーム

URL:


Ir al contenido
WikipediaLa enciclopedia libre
Buscar

Node.js

De Wikipedia, la enciclopedia libre
Node.js
Logo Node.js
Información general
Tipo de programaDirigida por eventos
AutorRyan Lienhart Dahl
DesarrolladorNode.js Developers
Joyent
Lanzamiento inicial27 de mayo de 2009[1]
LicenciaLicencia MIT
Estado actualActivo
Información técnica
Programado enJavaScript,C++,Python
Versiones
Última versión estable25.4.0 (info)(19 de enero de 2026 (30 días)[2]​)
Última versión en pruebas20.7.0(18 de septiembre de 2023 (2 años y 5 meses)[3]​)
Historial de versioneslista versiones
Enlaces

Node.js es un entorno en tiempo de ejecución multiplataforma, de código abierto, para la capa del servidor (pero no limitándose a ello) basado en el lenguaje de programaciónJavaScript, asíncrono, conE/S de datos en unaarquitectura orientada a eventos y basado en el motorV8 de Google. Fue creado con el enfoque de ser útil en la creación de programas de red altamente escalables, como por ejemplo,servidores web.[4]​ Fue creado porRyan Dahl en 2009 y su evolución está apadrinada por la empresaJoyent, que además tiene contratado a Dahl en plantilla.[5][6]

Node.js es similar en su propósito aTwisted oTornado dePython,Perl Object Environment dePerl,libevent olibev deC,EventMachine deRuby,vibe.d deD yJava EE deJava existeApache MINA,Netty,Akka,Vert.x,Grizzly oXsocket.Al contrario que la mayoría del códigoJavaScript, no se ejecuta en un navegador, sino en el servidor. Node.js implementa algunas especificaciones deCommonJS.[7]​ Node.js incluye un entornoREPL para depuración interactiva.

Ejemplos

[editar]
Ryan Dahl (nacido en 1981) es un ingeniero de software estadounidense, conocido por crear Node.js y Deno.

Versión de unhola mundo de unservidor HTTP escrito en Node.js:

consthttp=require('http');consthostname='127.0.0.1';constport=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}/`);});

Otro ejemplo con un servidorTCP que escucha en elpuerto 7000 y responde con cualquier cosa que se le envíe:

varnet=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);

Otro ejemplo, pero ahora con discord.js. Este es el código básico para hacer funcionar un bot enDiscord

const{Client,Intents}=require('discord.js');constclient=newClient({intents:[Intents.FLAGS.GUILDS]});client.on('ready',()=>{console.log(`Logged in as${client.user.tag}!`);});client.on('interactionCreate',asyncinteraction=>{if(!interaction.isCommand())return;if(interaction.commandName==='ping'){awaitinteraction.reply('Pong!');}});client.login('token');

Aspectos técnicos

[editar]

Concurrencia

[editar]

Node.js funciona con un modelo de evaluación de un únicohilo 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 alcambio de contexto.[8]​ 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óncallback.Un inconveniente de este enfoque de único hilo de ejecución es que Node.js requiere de módulos adicionales comocluster[9]​ para escalar la aplicación con el número denúcleos de procesamiento de la máquina en la que se ejecuta.

V8

[editar]

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

Node.js contienelibuv 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 enPOSIX 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

[editar]

Node.js incorpora varios "módulos básicos" 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ónCommonJS para módulos,[10]​ utilizando una variable de exportación para dar a estos scripts acceso a funciones y variables implementadas por los módulos.[11]

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 frameworksconnect yexpress. Pese a que los módulos pueden instalarse como archivos simples, normalmente se instalan utilizando elNode 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. Elwiki Node.js proporciona una lista de varios de los módulos de terceros disponibles.

Desarrollo homogéneo entre cliente y servidor

[editar]

Node.js puede ser combinado con unabase de datos documental (por ejemplo,MongoDB oCouchDB) ybases de datos relacionales comoMySQL,PostgreSQL, entre otros, lo que permite desarrollar en un entorno de desarrollo JavaScript unificado. Con la adaptación de lospatrones para desarrollo del lado del servidor tales comoMVC y sus variantesMVP,MVVM, etc. Node.js facilita lareutilización de código del mismo modelo de interfaz entre el lado del cliente y el lado del servidor.

Bucle de eventos

[editar]

Node.js se registra con el sistema operativo y cada vez que un cliente establece una conexión se ejecuta un callback. Dentro del entorno de ejecución de Node.js, cada conexión recibe una pequeña asignación de espacio de memoria dinámico, sin tener que crear un hilo de ejecución.[12]​ A diferencia de otros servidores dirigidos por eventos, el bucle de gestión de eventos de Node.js no es llamado explícitamente sino que se activa al final de cada ejecución de una función callback. El bucle de gestión de eventos se termina cuando ya no quedan eventos por atender.

Versiones

[editar]

Las nuevas versiones principales de Node.js se sacan de la rama máster deGitHub cada seis meses. Las versiones pares se sacan en abril, y las impares en octubre. Cuando se libera una versión impar, la versión par anterior pasa a soporte a largo plazo (Long Term Support, LTS), que da a la versión un soporte activo de 18 meses desde la fecha de inicio de la LTS. Después de estos 18 meses, la versión recibe otros 12 meses de soporte de mantenimiento. Una versión activa recibirá los cambios compatibles unas pocas semanas después de que aterricen en la versión estable actual. Una versión de mantenimiento recibirá solamente actualizaciones críticas y de documentación.[13]

La estrategia y política de las versiones LTS se gestiona por el LTS Working Group en colaboración con el Technical Steering Committee deNode.js Foundation.

VersiónNombreFecha de
liberación
Estado LTSInicio LTSInicio de
mantenimiento
Fin de
mantenimiento
Versión antigua, sin servicio técnico: v0.10.x2013-03-11Versión antigua, sin servicio técnico: Sin soporte-2015-10-012016-10-31
Versión antigua, sin servicio técnico: v0.12.x2015-02-06Versión antigua, sin servicio técnico: Sin soporte-2016-04-012016-12-31
Versión antigua, sin servicio técnico: 4.xArgon[13]2015-09-08Versión antigua, sin servicio técnico: Sin soporte2015-10-012017-04-012018-04-30
Versión antigua, sin servicio técnico: 5.x2015-10-29No No LTSN/D2016-06-30
Versión antigua, sin servicio técnico: 6.xBoron[13]2016-04-26Versión antigua, sin servicio técnico: Sin soporte2016-10-182018-04-302019-04-30
Versión antigua, sin servicio técnico: 7.x2016-10-25No No LTSN/D2017-06-30
Versión antigua, sin servicio técnico: 8.xCarbon[13]2017-05-30Versión antigua, sin servicio técnico: Sin soporte2017-10-312019-01-012019-12-31
Versión antigua, sin servicio técnico: 9.x2017-10-01No No LTSN/D2018-06-30
Versión antigua, sin servicio técnico: 10.xDubnium[13]2018-04-24Versión antigua, sin servicio técnico: Sin soporte2018-10-302020-05-192021-04-30
Versión antigua, sin servicio técnico: 11.x2018-10-23No No LTSN/D2019-06-01
Versión antigua, sin servicio técnico: 12.xErbium[13]2019-04-23Versión antigua, sin servicio técnico: Sin soporte2019-10-212020-11-302022-04-30
Versión antigua, sin servicio técnico: 13.x2019-10-22No No LTS-2020-04-012020-06-01
Versión antigua, sin servicio técnico: 14.xFermium[13]2020-04-21Versión antigua, sin servicio técnico: Sin soporte2020-10-272021-10-192023-04-30
Versión antigua, sin servicio técnico: 15.x2020-10-22No No LTS-2021-04-012021-06-01
Versión antigua, sin servicio técnico: 16.xGallium[13]2021-04-20Versión antigua, sin servicio técnico: Sin soporte2021-10-262022-10-182023-09-11
Versión antigua, sin servicio técnico: 17.x2021-10-19No No LTSN/D2022-06-01
Versión antigua, sin servicio técnico: 18.xHydrogen[13]2022-04-19Versión antigua, sin servicio técnico: Sin soporte2022-10-252023-10-182025-04-30
Versión antigua, sin servicio técnico: 19.x2022-10-18No No LTSN/D2023-06-12
Versión antigua, con servicio técnico: 20.xIron[13]2023-04-18Versión antigua, con servicio técnico: Mantenimiento LTS2023-10-242024-10-222026-04-30
Versión antigua, sin servicio técnico: 21.x2023-10-17No No LTSN/D2024-06-01
Versión estable actual:22.xJod[13]2024-04-24Versión estable actual:Activo LTS2024-10-292025-10-212027-04-30
Versión antigua, sin servicio técnico: 23.x2024-10-16No No LTSN/D2025-06-01
Versión estable actual:24.x2025-05-06Versión estable actual:Actual2025-10-282026-10-202028-04-30
Versión antigua, sin servicio técnico: 25.x2025-10-21No No LTSN/D2026-06-01
Última versión prevista para lanzamiento: 26.x2026-04-21Última versión prevista para lanzamiento: Prevista LTS2026-10-202027-10-192029-04-30


Comunidad

[editar]

Existe una comunidad muy activa de desarrolladores de Node.js que se comunican a través de grupos de discusión,nodejs ynodejs-dev y el canalIRC #node.js enfreenode. La comunidad se reúne enNodeConf, una convención de desarrolladores centrada en Node.js.[14]

Véase también

[editar]

Referencias

[editar]
  1. Joyent.«node».Github. Consultado el 16 de junio de 2015. 
  2. «<title>Releases · nodejs/node». Consultado el 2 de mayo de 2024 – víaGitHub. 
  3. «Node.js 20 ChangeLog». Consultado el 22 de septiembre de 2023 – víaGitHub. 
  4. Finley, Klint (25 de enero de 2011).«Wait, What's Node.js Good for Again?».ReadWriteWeb(en inglés). Archivado desdeel original el 21 de junio de 2013. Consultado el 16 de junio de 2015. 
  5. https://mashable.com/2011/03/10/node-js/
  6. Alex Handy (24 de junio de 2011).«Node.js pushes JavaScript to the server-side». SDTimes. Consultado el 24 de junio de 2011. 
  7. https://web.archive.org/web/20110724011601/http://wiki.commonjs.org/wiki/Implementations/node.js
  8. https://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/
  9. cluster
  10. «CommonJS Implementations». Archivado desdeel original el 23 de marzo de 2010. Consultado el 15 de mayo de 2011. 
  11. Ryswyck, Jan.«Taking Baby Steps with Node.js – CommonJS and Creating Custom Modules». Archivado desdeel original el 28 de junio de 2011. Consultado el 15 de mayo de 2011. 
  12. About Node.js, Node.js Website
  13. abcdefghijk«nodejs/Release».GitHub(en inglés). Consultado el 24 de septiembre de 2025. 
  14. «Copia archivada». Archivado desdeel original el 17 de septiembre de 2012. Consultado el 2 de agosto de 2014. 

Enlaces externos

[editar]
Control de autoridades

Obtenido de «https://es.wikipedia.org/w/index.php?title=Node.js&oldid=171881141»
Categorías:
Categorías ocultas:

[8]ページ先頭

©2009-2026 Movatter.jp