Estamos comenzando a publicar una serie de materiales que son una traducción paso a paso del
tutorial Node.js para principiantes. Es decir, en este caso, el "principiante" es alguien que tiene algún conocimiento del navegador JavaScript. Escuchó que hay una plataforma de servidor, cuyos programas también están escritos en JS, y le gustaría dominar esta plataforma. Quizás encuentre aquí algo útil para usted, incluso si ya está familiarizado con Node.js.
Por cierto, el año pasado tuvimos un
proyecto similar en términos de scripts bash. Luego, después de publicar todos los materiales planificados, los recopilamos en forma de
archivo PDF . También está previsto hacerlo esta vez.

Hoy discutiremos las características de Node.js, comenzaremos a conocer el ecosistema de esta plataforma y escribiremos el mensaje "Hello World" del lado del servidor.
[Le aconsejamos que lea] Otras partes del cicloParte 1:
Información general y primeros pasosParte 2:
JavaScript, V8, algunos trucos de desarrolloParte 3:
Hosting, REPL, trabajar con la consola, módulosParte 4:
archivos npm, package.json y package-lock.jsonParte 5:
npm y npxParte 6:
bucle de eventos, pila de llamadas, temporizadoresParte 7:
Programación asincrónicaParte 8:
Guía de Node.js, Parte 8: Protocolos HTTP y WebSocketParte 9:
Guía de Node.js, parte 9: trabajar con el sistema de archivosParte 10:
Guía de Node.js, Parte 10: Módulos estándar, flujos, bases de datos, NODE_ENVPDF completo de la guía Node.js Revisión de Node.js
Node.js es un código abierto de JavaScript multiplataforma que se ejecuta en servidores. Desde el lanzamiento de esta plataforma en 2009, se ha vuelto extremadamente popular y hoy juega un papel muy importante en el campo del desarrollo web. Si considera la cantidad de estrellas que un determinado proyecto en GitHub recolectó como un indicador de popularidad, entonces
Node.js , que tiene más de 50,000 estrellas, es un proyecto muy, muy popular.
La plataforma Node.js se basa en el motor JavaScript V8 de Google, que se utiliza en el navegador Google Chrome. Esta plataforma se utiliza principalmente para crear servidores web, pero su alcance no se limita a esto.
Considere las características principales de Node.js.
▍velocidad
Una de las principales características atractivas de Node.js es la velocidad. El código JavaScript que se ejecuta en Node.js puede ser dos veces más rápido que el código escrito en lenguajes compilados como C o Java, y en órdenes de magnitud más rápidos que los lenguajes interpretados como Python o Ruby. La razón de esto es la arquitectura sin bloqueo de la plataforma, y los resultados específicos dependen de las pruebas de rendimiento utilizadas, pero, en general, Node.js es una plataforma muy rápida.
▍Simplicidad
La plataforma Node.js es fácil de aprender y usar. De hecho, es realmente muy simple, es especialmente notable en comparación con otras plataformas de servidores.
▍JavaScript
Node.js ejecuta código escrito en JavaScript. Esto significa que millones de desarrolladores front-end que ya usan JavaScript en el navegador pueden escribir tanto el código del servidor como el del cliente en el mismo lenguaje de programación sin tener que aprender una herramienta completamente nueva para pasar al desarrollo del servidor.
El navegador y el servidor utilizan los mismos conceptos de lenguaje. Además, en Node.js, puede cambiar rápidamente al uso de los nuevos estándares ECMAScript a medida que se implementan en la plataforma. Para hacer esto, no necesita esperar hasta que los usuarios actualicen sus navegadores, ya que Node.js es un entorno de servidor que el desarrollador controla por completo. Como resultado, hay nuevas funciones de idioma disponibles cuando instala la versión de soporte de Node.js.
▍V8 motor
En el corazón de Node.js, entre otras soluciones, se encuentra el motor JavaScript de código abierto V8 de Google, que se utiliza en el navegador Google Chrome y otros navegadores. Esto significa que Node.js utiliza los logros de miles de ingenieros que han hecho que el tiempo de ejecución de JavaScript JavaScript sea increíblemente rápido y continúen trabajando para mejorar V8.
▍Asincronía
En los lenguajes de programación tradicionales (C, Java, Python, PHP), todas las instrucciones son, por defecto, bloqueantes a menos que el desarrollador se encargue explícitamente de la ejecución de código asíncrono. Como resultado, si, por ejemplo, en dicho entorno, se realiza una solicitud de red para cargar algún código JSON, la ejecución de la secuencia desde la que se realiza la solicitud se suspenderá hasta que se complete la recepción y el procesamiento de la respuesta.
JavaScript simplifica enormemente la escritura de código asíncrono y sin bloqueo mediante un solo hilo, funciones de devolución de llamada (devoluciones de llamada) y un enfoque de desarrollo basado en eventos. Cada vez que necesitamos realizar una operación pesada, pasamos el mecanismo de devolución de llamada apropiado, que se llamará inmediatamente después de completar esta operación. Como resultado, para que el programa continúe funcionando, no es necesario esperar los resultados de tales operaciones.
Un mecanismo similar surgió en los navegadores. No podemos permitirnos esperar, digamos, la finalización de la solicitud AJAX, sin poder responder a las acciones del usuario, por ejemplo, clics en los botones. Para que sea conveniente para los usuarios trabajar con páginas web, todo, y descargar datos de la red, y procesar clics en los botones, debe ocurrir simultáneamente, en tiempo real.
Si alguna vez creó un controlador de eventos de clic de botón, ya utilizó técnicas de programación asincrónicas.
Los mecanismos asincrónicos permiten que un solo servidor Node.js procese simultáneamente miles de conexiones, sin cargar al programador con tareas para administrar flujos y organizar la ejecución de código paralelo. Cosas como esta son a menudo fuentes de error.
Node.js proporciona al desarrollador mecanismos básicos de entrada y salida sin bloqueo y, en general, las bibliotecas utilizadas en el marco Node.js se escriben utilizando paradigmas sin bloqueo. Esto hace que el comportamiento del código de bloqueo sea la excepción en lugar de la norma.
Cuando Node.js necesita realizar una operación de E / S, como descargar datos de la red, acceder a la base de datos o al sistema de archivos, en lugar de bloquear el hilo principal que espera los resultados de dicha operación, Node.js inicia su ejecución y continúa haciendo otras cosas hasta hasta que se reciban los resultados de esta operación.
▍Bibliotecas
Gracias a la simplicidad y conveniencia de trabajar con el administrador de paquetes para Node.js llamado
npm , el ecosistema Node.js está prosperando. Ahora en el
registro npm hay más de medio millón de paquetes de código abierto que cualquier desarrollador de Node.js puede usar libremente.
Después de examinar algunas de las características principales de la plataforma Node.js, la probaremos en acción. Comencemos con la instalación.
Instalar Node.js
Node.js se puede instalar de varias maneras, que ahora consideraremos.
Por lo tanto, los paquetes de instalación oficiales para todas las plataformas principales se pueden encontrar
aquí .
Hay otra forma muy conveniente de instalar Node.js, que es utilizar el administrador de paquetes disponible en el sistema operativo. Por ejemplo, el administrador de paquetes macOS, que es el estándar de facto en esta área, se llama
Homebrew . Si está en su sistema, puede instalar Node.js ejecutando este comando en la línea de comando:
brew install node
Aquí puede encontrar una lista de administradores de paquetes para otros sistemas operativos, incluidos Linux y Windows.
Un administrador de versiones popular para Node.js es
nvm . Esta herramienta le permite cambiar convenientemente entre diferentes versiones de Node.js, con ella puede, por ejemplo, instalar y probar la nueva versión de Node.js, y luego, si es necesario, volver a la anterior. Nvm también es útil en situaciones en las que necesita probar algún código en la versión anterior de Node.js.
Aconsejaría a los principiantes que utilicen los instaladores oficiales de Node.js. Para usuarios de macOS, recomendaría instalar Node.js usando Homebrew. Ahora que ha instalado Node.js, es hora de escribir "Hello World".
La primera aplicación Node.js
El ejemplo más común de la primera aplicación para Node.js es un servidor web simple. Aquí está su código:
const http = require('http') const hostname = '127.0.0.1' const port = 3000 const server = http.createServer((req, res) => { res.statusCode = 200 res.setHeader('Content-Type', 'text/plain') res.end('Hello World\n') }) server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`) })
Para ejecutar este código, guárdelo en el archivo
server.js
y ejecute el siguiente comando en el terminal:
node server.js
Para verificar el servidor, abra algún navegador e ingrese http:
http://127.0.0.1:3000
en la barra de direcciones, es decir, la dirección del servidor que se mostrará en la consola después de que se inicie con éxito. Si todo funciona como debería, se mostrará "Hello World" en la página.
Veamos este ejemplo.
Primero, tenga en cuenta que el código contiene el comando de conexión del módulo
http .
La plataforma Node.js es propietaria de un maravilloso
conjunto estándar de módulos , que incluye mecanismos bien desarrollados para trabajar con la red.
El método
createServer()
del objeto
http
crea un nuevo servidor HTTP y lo devuelve.
El servidor está configurado para escuchar en un puerto específico en un host determinado. Cuando el servidor está listo, se llama a la devolución de llamada correspondiente, informándonos que el servidor está funcionando.
Cuando el servidor recibe la solicitud, se
request
evento de
request
, que proporciona dos objetos. El primero es la solicitud (
req
, el objeto
http.IncomingMessage ), el segundo es la respuesta (
res
, el objeto
http.ServerResponse ). Son los mecanismos de procesamiento de solicitudes HTTP más importantes.
El primero proporciona información sobre la solicitud a nuestra disposición. En nuestro ejemplo simple, no usamos estos datos, pero, si es necesario, usando el objeto
req
, puede acceder a los encabezados de solicitud y a los datos transmitidos en él.
El segundo es necesario para formar y enviar una respuesta a la solicitud.
En este caso, formamos la respuesta a la solicitud de la siguiente manera. Primero, establezca la propiedad
statusCode
en
200
, que indica la operación exitosa:
res.statusCode = 200
A continuación, configuramos el encabezado
Content-Type
:
res.setHeader('Content-Type', 'text/plain')
Después de eso, completamos la preparación de la respuesta agregando su contenido como argumento al método
end()
:
res.end('Hello World\n')
Ya hemos dicho que se ha formado un poderoso ecosistema alrededor de la plataforma Node.js. Ahora discutiremos algunos marcos populares y herramientas de ayuda para Node.js.
Frameworks y herramientas auxiliares para Node.js
Node.js es una plataforma de bajo nivel. Para simplificar el desarrollo y facilitar la vida de los programadores, se creó una gran cantidad de bibliotecas. Algunos de ellos se han vuelto muy populares con el tiempo. Aquí hay una breve lista de bibliotecas que creo que están excelentemente hechas y que vale la pena explorar:
- Expreso Esta biblioteca proporciona al desarrollador una herramienta extremadamente simple pero poderosa para crear servidores web. La clave del éxito de Express fue un enfoque minimalista y un enfoque en los mecanismos básicos del servidor sin tratar de imponer una cierta visión de la arquitectura de servidor "única correcta".
- Meteorito Este es un potente marco completo que implementa un enfoque isomorfo para desarrollar aplicaciones JavaScript y para usar código tanto en el cliente como en el servidor. Once Meteor era una herramienta independiente que incluye todo lo que un desarrollador podría necesitar. Ahora también está integrado con bibliotecas front-end como React , Vue y Angular . Meteor, además de desarrollar aplicaciones web convencionales, también se puede utilizar en el desarrollo móvil.
- Koa Este marco web fue creado por el mismo equipo que está trabajando en Express. Durante su desarrollo, que se basó en años de experiencia trabajando en Express, se prestó atención a la simplicidad de la solución y su tamaño compacto. Este proyecto apareció como una solución al problema de realizar cambios serios en Express que son incompatibles con otros mecanismos marco que podrían dividir a la comunidad.
- Next.js. Este marco está diseñado para organizar la representación del lado del servidor de las aplicaciones React .
- Micro . Esta es una biblioteca muy compacta para crear microservicios HTTP asíncronos.
- Socket.io . Esta es una biblioteca para desarrollar aplicaciones de red en tiempo real.
De hecho, en el ecosistema Node.js, puede encontrar una biblioteca auxiliar para resolver casi cualquier tarea. Como saben, lleva mucho tiempo construir un ecosistema de este tipo. La plataforma Node.js apareció en 2009. Durante su existencia, han sucedido muchas cosas que vale la pena conocer para un programador que quiere aprender esta plataforma.
Una breve historia de Node.js
Node.js tiene 9 años este año. Esto, por supuesto, no es tanto, si comparamos esta edad con la edad de JavaScript, que ya tiene 23 años, o con la edad de 25 años de la web, existente en la forma en que la conocemos, si cuenta desde la apariencia del navegador Mosaic.
9 años es un período corto para la tecnología, pero ahora parece que la plataforma Node.js siempre ha existido.
Comencé a trabajar con Node.js desde las primeras versiones de la plataforma cuando solo tenía 2 años. Incluso entonces, a pesar de que no había tanta información sobre Node.js, uno ya podía sentir que Node.js era muy serio.
Ahora hablemos de las tecnologías que subyacen a Node.js y consideremos brevemente los principales eventos relacionados con esta plataforma.
Entonces, JavaScript es un lenguaje de programación que se creó en Netscape como un lenguaje de scripting diseñado para administrar páginas web en el
navegador Netscape Navigator .
Parte del negocio de Netscape consistía en vender servidores web, que incluían un entorno llamado Netscape LiveWire. Le permitía crear páginas web dinámicas usando JavaScript del lado del servidor. Como puede ver, la idea de usar JS para el desarrollo del servidor es mucho más antigua que Node.js. Esta idea es casi tan antigua como el propio JavaScript, pero JS del lado del servidor no ganó popularidad en los tiempos en cuestión.
Uno de los factores clave debido a que la plataforma Node.js se ha vuelto tan extendida y popular es el momento de su aparición. Entonces, unos años antes de esto, JavaScript comenzó a considerarse un lenguaje serio. Esto sucedió gracias a las aplicaciones Web 2.0, como Google Maps o Gmail, que mostraron al mundo las capacidades de las tecnologías web modernas.
Gracias a la guerra competitiva del navegador, que continúa hasta nuestros días, el rendimiento de los motores JavaScript ha aumentado considerablemente. Los equipos de desarrollo detrás de los principales navegadores trabajan todos los días para mejorar el rendimiento de sus soluciones, lo que tiene un efecto beneficioso en JavaScript en general. Uno de estos motores es el ya mencionado V8, utilizado en el navegador Chrome y utilizado en Node.js. Es uno de los resultados del deseo de los desarrolladores de navegadores de obtener un código JS de alto rendimiento.
Por supuesto, la popularidad de Node.js se basa no solo en una combinación exitosa de circunstancias y en el hecho de que esta plataforma apareció en el momento adecuado. Ella presentó al mundo un enfoque innovador para el desarrollo del lado del servidor en JavaScript. Considere los hitos en la historia de Node.js.
92009
- El advenimiento de Node.js
- Crea la primera opción npm .
102010
112011
- Salga npm 1.0.
- Grandes compañías como LinkedIn y Uber han comenzado a usar Node.js.
▍2012
- El rápido aumento de la popularidad de Node.js.
132013
- El advenimiento de Ghost , la primera gran plataforma de publicación que usa Node.js.
- Lanzamiento de Koa .
142014
- Eventos dramáticos tuvieron lugar este año. Apareció el proyecto IO.js , que es una bifurcación de Node.js, cuyo propósito era, entre otras cosas, introducir el soporte de ES6 y acelerar el desarrollo de la plataforma.
152015
- Fundación de la Fundación Node.js.
- Fusión de IO.js y Node.js.
- En npm hay una oportunidad de trabajar con módulos privados.
- Salida Node.js 4 (debe tenerse en cuenta que esta plataforma no tenía las versiones 1, 2 y 3).
162016
172017
- Npm está empezando a centrarse más en la seguridad.
- Salida Node.js 8
- El advenimiento del soporte HTTP / 2 .
- V8 es reconocido oficialmente como un motor JS diseñado no solo para Chrome, sino también para Node.
- Se realizan 3 mil millones de descargas de npm semanalmente.
182018
- Salida Node.js 10.
- Soporte para módulos ES .
- Soporte experimental para mjs .
Resumen
Hoy se familiarizó con la plataforma Node.js, descubrió su instalación, escribió y probó la primera aplicación simple. La próxima vez hablaremos sobre cuánto conocimiento de JavaScript necesita desarrollar con éxito para Node.js, cómo el navegador y el código JS del lado del servidor son diferentes, y discutiremos algunos de los trucos de desarrollo de Node.js.
Estimados lectores! Dime, ¿empezaste Hello World para Node.js?
Las siguientes partes del manual:
Parte 1:
Información general y primeros pasosParte 2:
JavaScript, V8, algunos trucos de desarrolloParte 3:
Hosting, REPL, trabajar con la consola, módulosParte 4:
archivos npm, package.json y package-lock.jsonParte 5:
npm y npxParte 6:
bucle de eventos, pila de llamadas, temporizadoresParte 7:
Programación asincrónica