fbpx
Wikipedia

Node.js

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ón JavaScript, asíncrono, con E/S de datos en una arquitectura orientada a eventos y basado en el motor V8 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 por Ryan Dahl en 2009 y su evolución está apadrinada por la empresa Joyent, que además tiene contratado a Dahl en plantilla.[5][6]

Node.js
Información general
Tipo de programa Dirigida por eventos
Autor Ryan Lienhart Dahl
Desarrollador Node.js Developers
Joyent
Lanzamiento inicial 27 de mayo de 2009[1]
Licencia Licencia MIT
Estado actual Activo
Información técnica
Programado en C++, JavaScript
Versiones
Última versión estable 14.17.4 (info) ( 29 de julio de 2021 (6 meses y 28 días)[2]​)
Última versión en pruebas 16.6.1 ( 03 de agosto de 2021 (6 meses y 23 días)[3]​)
Historial de versiones lista versiones
Enlaces
Sitio web oficial
Repositorio de código

Node.js es similar en su propósito a Twisted o Tornado de Python, Perl Object Environment de Perl, libevent o libev de C, EventMachine de Ruby, vibe.d de D y Java EE de Java existe Apache MINA, Netty, Akka, Vert.x, Grizzly o Xsocket. Al contrario que la mayoría del código JavaScript, no se ejecuta en un navegador, sino en el servidor. Node.js implementa algunas especificaciones de CommonJS.[7]​ Node.js incluye un entorno REPL para depuración interactiva.

Ejemplos

Versión de un hola mundo de un servidor HTTP escrito 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}/`); }); 

Otro ejemplo con un servidor TCP que escucha en el puerto 7000 y responde con cualquier cosa que se le envíe:

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

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

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

Aspectos técnicos

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.[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ón callback. Un inconveniente de este enfoque de único hilo de ejecución es que Node.js requiere de módulos adicionales como cluster[9]​ para escalar la aplicación con el número de núcleos de procesamiento de la máquina en la que se ejecuta.

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 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ón CommonJS 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 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. El wiki Node.js proporciona una lista de varios de los módulos de terceros disponibles.

Desarrollo homogéneo entre cliente y servidor

Node.js puede ser combinado con una base de datos documental (por ejemplo, MongoDB o CouchDB) y bases de datos relacionales como MySQL, PostgreSQL, entre otros, 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.

Bucle de eventos

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

Las nuevas versiones principales de Node.js se sacan de la rama máster de GitHub 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 mantenimiendo 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 de Node.js Foundation.

Versión Nombre Fecha de
liberación
Estado LTS Inicio LTS Inicio de
mantenimiento
Fin de
mantenimiento
Versión antigua, sin servicio técnico: v0.10.x 2013-03-11 Versión antigua, sin servicio técnico: Sin soporte - 2015-10-01 2016-10-31
Versión antigua, sin servicio técnico: v0.12.x 2015-02-06 Versión antigua, sin servicio técnico: Sin soporte - 2016-04-01 2016-12-31
Versión antigua, sin servicio técnico: 4.x Argon[13] 2015-09-08 Versión antigua, sin servicio técnico: Sin soporte 2015-10-01 2017-04-01 2018-04-30
Versión antigua, sin servicio técnico: 5.x 2015-10-29   No LTS N/D 2016-06-30
Versión antigua, sin servicio técnico: 6.x Boron[13] 2016-04-26 Versión antigua, sin servicio técnico: Sin soporte 2016-10-18 2018-04-30 Abril de 2019
Versión antigua, sin servicio técnico: 7.x 2016-10-25   No LTS N/D 2017-06-30
Versión antigua, sin servicio técnico: 8.x Carbon[13] 2017-05-30 Versión antigua, sin servicio técnico: Sin soporte 2017-10-31 2019-01-01[14] Diciembre de 2019
Versión antigua, sin servicio técnico: 9.x 2017-10-01   No LTS N/D 2018-06-30
Versión antigua, con servicio técnico: 10.x Dubnium[13] 2018-04-24 Versión antigua, con servicio técnico: Mantenimiento 30 de octubre de 2018 19 de mayo de 2019 30 de abril de 2021
Versión antigua, sin servicio técnico: 11.x 2018-10-23   No LTS N/D 1 de junio de 2019
Versión antigua, con servicio técnico: 12.x Erbium[13] 2019-04-23 Versión antigua, con servicio técnico: Mantenimiento 21 de octubre de 2019 20 de octubre de 2020 30 de abril de 2022
Versión antigua, sin servicio técnico: 13.x - 22 de octubre de 2019   No LTS - 1 de abril de 2020 1 de junio de 2020
Versión estable actual: 14.x Fermium[13] 21 de abril de 2020 Versión estable actual: Activo 20 de octubre de 2020 19 de octubre de 2021 30 de abril de 2023
Versión estable actual: 15.x - 22 de octubre de 2020   No LTS - 1 de abril de 2021 1 de junio de 2021
Última versión prevista para lanzamiento: 16.x - 21 de abril de 2021 Última versión prevista para lanzamiento: Prevista 26 de octubre de 2021 18 de octubre de 2022 30 de abril de 2024

Comunidad

Existe una comunidad muy activa de desarrolladores de Node.js que se comunican a través de grupos de discusión, nodejs y nodejs-dev y el canal IRC #node.js en freenode. La comunidad se reúne en NodeConf, una convención de desarrolladores centrada en Node.js.[15]

Véase también

Referencias

  1. Joyent. «node». Github. Consultado el 16 de junio de 2015. 
  2. «Node.js 14 ChangeLog». Consultado el 23 de febrero de 2021 – via GitHub. 
  3. «Node.js 13 ChangeLog». Consultado el 22 de diciembre de 2019 – via GitHub. 
  4. Finley, Klint (25 de enero de 2011). . ReadWriteWeb (en inglés). Archivado desde el original el 21 de junio de 2013. Consultado el 16 de junio de 2015. 
  5. http://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. http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/
  8. cluster
  9. . Archivado desde el original el 23 de marzo de 2010. Consultado el 15 de mayo de 2011. 
  10. Ryswyck, Jan. . Archivado desde el original el 28 de junio de 2011. Consultado el 15 de mayo de 2011. 
  11. About Node.js, Node.js Website
  12. «nodejs/Release». GitHub (en inglés). Consultado el 15 de noviembre de 2017. 
  13. «node 8 reschedule». Github. Consultado el 22 de enero de 2019. 
  14. . Archivado desde el original el 17 de septiembre de 2012. Consultado el 2 de agosto de 2014. 

Enlaces externos

  • Sitio oficial (inglés)
  • Repositorio de código fuente (inglés)
  • Lista de correo Nodejs - Grupo de discusión sobre Node.js (inglés)
  • Lista de correo Nodejs-dev - Grupo de discusión sobre fallos y cambios en Node.js (inglés)
  • NPMJS. El gestor de paquetes de Node.js (inglés)
  • (inglés)
  • Como desarrollar tu propia extensión nativa para Node.js (inglés)
  • NodeNica, comunidad nicaragüense de Node.js (español)
  • Concurrencia y paralelismo, por Marisa Gil (español)
  • Curso de NodeJS (español)
  • Hosting NodeJS (español)
  •   Datos: Q756100
  •   Multimedia: Node.js

node, entorno, tiempo, ejecución, multiplataforma, código, abierto, para, capa, servidor, pero, limitándose, ello, basado, lenguaje, programación, javascript, asíncrono, datos, arquitectura, orientada, eventos, basado, motor, google, creado, enfoque, útil, cre. Node js es un entorno en tiempo de ejecucion multiplataforma de codigo abierto para la capa del servidor pero no limitandose a ello basado en el lenguaje de programacion JavaScript asincrono con E S de datos en una arquitectura orientada a eventos y basado en el motor V8 de Google Fue creado con el enfoque de ser util en la creacion de programas de red altamente escalables como por ejemplo servidores web 4 Fue creado por Ryan Dahl en 2009 y su evolucion esta apadrinada por la empresa Joyent que ademas tiene contratado a Dahl en plantilla 5 6 Node jsInformacion generalTipo de programaDirigida por eventosAutorRyan Lienhart DahlDesarrolladorNode js DevelopersJoyentLanzamiento inicial27 de mayo de 2009 1 LicenciaLicencia MITEstado actualActivoInformacion tecnicaProgramado enC JavaScriptVersionesUltima version estable14 17 4 info 29 de julio de 2021 6 meses y 28 dias 2 Ultima version en pruebas16 6 1 03 de agosto de 2021 6 meses y 23 dias 3 Historial de versioneslista versionesEnlacesSitio web oficial Repositorio de codigo editar datos en Wikidata Node js es similar en su proposito a Twisted o Tornado de Python Perl Object Environment de Perl libevent o libev de C EventMachine de Ruby vibe d de D y Java EE de Java existe Apache MINA Netty Akka Vert x Grizzly o Xsocket Al contrario que la mayoria del codigo JavaScript no se ejecuta en un navegador sino en el servidor Node js implementa algunas especificaciones de CommonJS 7 Node js incluye un entorno REPL para depuracion interactiva Indice 1 Ejemplos 2 Aspectos tecnicos 2 1 Concurrencia 2 2 V8 2 3 Modulos 2 4 Desarrollo homogeneo entre cliente y servidor 2 5 Bucle de eventos 3 Versiones 4 Comunidad 5 Vease tambien 6 Referencias 7 Enlaces externosEjemplos EditarVersion de un hola mundo de un servidor HTTP escrito en Node js const http require http const hostname 127 0 0 1 const port 1337 http createServer req res gt res writeHead 200 Content Type text plain res end Hello World n listen port hostname gt console log Server running at http hostname port Otro ejemplo con un servidor TCP que escucha en el puerto 7000 y responde con cualquier cosa que se le envie 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 Otro ejemplo pero ahora con discord js Este es el codigo basico para hacer funcionar un bot en Discord const Client Intents require discord js const client new Client intents Intents FLAGS GUILDS client on ready gt console log Logged in as client user tag client on interactionCreate async interaction gt if interaction isCommand return if interaction commandName ping await interaction reply Pong client login token Aspectos tecnicos EditarConcurrencia Editar Node js funciona con un modelo de evaluacion de un unico hilo de ejecucion usando entradas y salidas asincronas las cuales pueden ejecutarse concurrentemente en un numero de hasta cientos de miles sin incurrir en costos asociados al cambio de contexto 8 Este diseno de compartir un unico hilo de ejecucion entre todas las solicitudes atiende a necesidades de aplicaciones altamente concurrentes en el que toda operacion que realice entradas y salidas debe tener una funcion callback Un inconveniente de este enfoque de unico hilo de ejecucion es que Node js requiere de modulos adicionales como cluster 9 para escalar la aplicacion con el numero de nucleos de procesamiento de la maquina en la que se ejecuta V8 Editar V8 es el entorno de ejecucion para JavaScript creado para Google Chrome Es software libre desde 2008 esta escrito en C y compila el codigo fuente JavaScript en codigo de maquina en lugar de interpretarlo en tiempo real Node js contiene libuv para manejar eventos asincronos Libuv es una capa de abstraccion 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 esta escrito en JavaScript con metodos de soporte escritos en C Modulos Editar Node js incorpora varios modulos basicos compilados en el propio binario como por ejemplo el modulo de red que proporciona una capa para programacion de red asincrona y otros modulos fundamentales como por ejemplo Path FileSystem Buffer Timers y el de proposito mas general Stream Es posible utilizar modulos desarrollados por terceros ya sea como archivos node precompilados o como archivos en javascript plano Los modulos Javascript se implementan siguiendo la especificacion CommonJS para modulos 10 utilizando una variable de exportacion para dar a estos scripts acceso a funciones y variables implementadas por los modulos 11 Los modulos de terceros pueden extender node js o anadir un nivel de abstraccion implementando varias utilidades middleware para utilizar en aplicaciones web como por ejemplo los frameworks connect y express Pese a que los modulos pueden instalarse como archivos simples normalmente se instalan utilizando el Node Package Manager npm que nos facilitara la compilacion instalacion y actualizacion de modulos asi como la gestion de las dependencias Ademas los modulos que no se instalen en el directorio por defecto de modulos de Node necesitaran la utilizacion de una ruta relativa para poder encontrarlos El wiki Node js proporciona una lista de varios de los modulos de terceros disponibles Desarrollo homogeneo entre cliente y servidor Editar Node js puede ser combinado con una base de datos documental por ejemplo MongoDB o CouchDB y bases de datos relacionales como MySQL PostgreSQL entre otros lo que permite desarrollar en un entorno de desarrollo JavaScript unificado Con la adaptacion de los patrones para desarrollo del lado del servidor tales como MVC y sus variantes MVP MVVM etc Node js facilita la reutilizacion de codigo 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 conexion se ejecuta un callback Dentro del entorno de ejecucion de Node js cada conexion recibe una pequena asignacion de espacio de memoria dinamico sin tener que crear un hilo de ejecucion 12 A diferencia de otros servidores dirigidos por eventos el bucle de gestion de eventos de Node js no es llamado explicitamente sino que se activa al final de cada ejecucion de una funcion callback El bucle de gestion de eventos se termina cuando ya no quedan eventos por atender Versiones EditarLas nuevas versiones principales de Node js se sacan de la rama master de GitHub cada seis meses Las versiones pares se sacan en abril y las impares en octubre Cuando se libera una version impar la version par anterior pasa a soporte a largo plazo Long Term Support LTS que da a la version un soporte activo de 18 meses desde la fecha de inicio de la LTS Despues de estos 18 meses la version recibe otros 12 meses de soporte de mantenimiento Una version activa recibira los cambios compatibles unas pocas semanas despues de que aterricen en la version estable actual Una version de mantenimiendo recibira solamente actualizaciones criticas y de documentacion 13 La estrategia y politica de las versiones LTS se gestiona por el LTS Working Group en colaboracion con el Technical Steering Committee de Node js Foundation Version Nombre Fecha deliberacion Estado LTS Inicio LTS Inicio demantenimiento Fin de mantenimientoVersion antigua sin servicio tecnico v0 10 x 2013 03 11 Version antigua sin servicio tecnico Sin soporte 2015 10 01 2016 10 31Version antigua sin servicio tecnico v0 12 x 2015 02 06 Version antigua sin servicio tecnico Sin soporte 2016 04 01 2016 12 31Version antigua sin servicio tecnico 4 x Argon 13 2015 09 08 Version antigua sin servicio tecnico Sin soporte 2015 10 01 2017 04 01 2018 04 30Version antigua sin servicio tecnico 5 x 2015 10 29 No LTS N D 2016 06 30Version antigua sin servicio tecnico 6 x Boron 13 2016 04 26 Version antigua sin servicio tecnico Sin soporte 2016 10 18 2018 04 30 Abril de 2019Version antigua sin servicio tecnico 7 x 2016 10 25 No LTS N D 2017 06 30Version antigua sin servicio tecnico 8 x Carbon 13 2017 05 30 Version antigua sin servicio tecnico Sin soporte 2017 10 31 2019 01 01 14 Diciembre de 2019Version antigua sin servicio tecnico 9 x 2017 10 01 No LTS N D 2018 06 30Version antigua con servicio tecnico 10 x Dubnium 13 2018 04 24 Version antigua con servicio tecnico Mantenimiento 30 de octubre de 2018 19 de mayo de 2019 30 de abril de 2021Version antigua sin servicio tecnico 11 x 2018 10 23 No LTS N D 1 de junio de 2019Version antigua con servicio tecnico 12 x Erbium 13 2019 04 23 Version antigua con servicio tecnico Mantenimiento 21 de octubre de 2019 20 de octubre de 2020 30 de abril de 2022Version antigua sin servicio tecnico 13 x 22 de octubre de 2019 No LTS 1 de abril de 2020 1 de junio de 2020Version estable actual 14 x Fermium 13 21 de abril de 2020 Version estable actual Activo 20 de octubre de 2020 19 de octubre de 2021 30 de abril de 2023Version estable actual 15 x 22 de octubre de 2020 No LTS 1 de abril de 2021 1 de junio de 2021Ultima version prevista para lanzamiento 16 x 21 de abril de 2021 Ultima version prevista para lanzamiento Prevista 26 de octubre de 2021 18 de octubre de 2022 30 de abril de 2024Comunidad EditarExiste una comunidad muy activa de desarrolladores de Node js que se comunican a traves de grupos de discusion nodejs y nodejs dev y el canal IRC node js en freenode La comunidad se reune en NodeConf una convencion de desarrolladores centrada en Node js 15 Vease tambien EditarJavaScript V8 NPM el gestor de paquetes para Node js Entorno de desarrollo MEAN Meteor framework web Referencias Editar Joyent node Github Consultado el 16 de junio de 2015 Node js 14 ChangeLog Consultado el 23 de febrero de 2021 via GitHub Node js 13 ChangeLog Consultado el 22 de diciembre de 2019 via GitHub Finley Klint 25 de enero de 2011 Wait What s Node js Good for Again ReadWriteWeb en ingles Archivado desde el original el 21 de junio de 2013 Consultado el 16 de junio de 2015 http mashable com 2011 03 10 node js Alex Handy 24 de junio de 2011 Node js pushes JavaScript to the server side SDTimes Consultado el 24 de junio 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 Archivado desde el original el 23 de marzo de 2010 Consultado el 15 de mayo de 2011 Ryswyck Jan Taking Baby Steps with Node js CommonJS and Creating Custom Modules Archivado desde el original el 28 de junio de 2011 Consultado el 15 de mayo de 2011 About Node js Node js Website a b c d e f g nodejs Release GitHub en ingles Consultado el 15 de noviembre de 2017 node 8 reschedule Github Consultado el 22 de enero de 2019 Copia archivada Archivado desde el original el 17 de septiembre de 2012 Consultado el 2 de agosto de 2014 Enlaces externos EditarSitio oficial ingles Repositorio de codigo fuente ingles Lista de correo Nodejs Grupo de discusion sobre Node js ingles Lista de correo Nodejs dev Grupo de discusion sobre fallos y cambios en Node js ingles NPMJS El gestor de paquetes de Node js ingles How To Node tutorial de Node js ingles Como desarrollar tu propia extension nativa para Node js ingles NodeNica comunidad nicaraguense de Node js espanol Concurrencia y paralelismo por Marisa Gil espanol Curso de NodeJS espanol Hosting NodeJS espanol Datos Q756100 Multimedia Node js Obtenido de https es wikipedia org w index php title Node js amp oldid 140539697, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos