¡Buen dia amigos!
Les presento a la traducción de esta guía Node.js .
Otras partes:
Parte 1
Parte 2
Parte 3
Parte 4
Introducción a Node.js
Node.js es un tiempo de ejecución de JavaScript abierto y multiplataforma. Esta es una gran solución para casi cualquier proyecto.
Node.js ejecuta el motor V8 JavaScript, el núcleo de Google Chrome, fuera del navegador. Esto hace que Node.js sea muy eficiente.
Las aplicaciones Node.js se ejecutan como un solo proceso, sin crear un nuevo hilo para cada solicitud. Node.js proporciona un conjunto de primitivas de E / S asíncronas en la biblioteca estándar que protegen JavaScript del bloqueo, y generalmente las bibliotecas en Node.js se escriben utilizando paradigmas de no bloqueo, lo que hace que el comportamiento de bloqueo sea la excepción en lugar de la regla.
Cuando Node.js realiza una operación de E / S, como leer (datos) de la red, acceder a una base de datos o sistema de archivos, en lugar de bloquear el hilo y esperar a que se completen los ciclos de la CPU, Node.js continuará ejecutando la operación después de recibir una respuesta.
Esto permite que Node.js procese miles de solicitudes al mismo tiempo a través de un único servidor sin la necesidad de un sistema de coherencia de subprocesos que pueda convertirse en una fuente de errores graves.
Una ventaja significativa de Node.js es que millones de desarrolladores que escriben JavaScript para el navegador ahora tienen la capacidad de escribir código del lado del servidor además del código del lado del cliente sin tener que aprender un lenguaje (de programación) completamente diferente.
En Node.js, los nuevos estándares ECMAScript se pueden usar sin problemas, no tiene que esperar a que todos los usuarios actualicen sus navegadores: usted decide qué versión de ECMAScript usar cambiando la versión Node.js, también puede agregar características experimentales ejecutando Node.js con banderas (correspondientes).
Un gran número de bibliotecas.
Npm, con su estructura simple, contribuye al rápido crecimiento del ecosistema Node.js; hoy, más de 1 millón de paquetes abiertos están registrados con npm, que puede usar de forma gratuita.
Ejemplo de aplicación Node.js
El caso de uso más común para Node.js es crear un servidor web:
const http = require('http')
const hostname = '127.0.0.1'
const port = process.env.PORT
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}/`)
})
En primer lugar, incluimos el módulo http .
Node.js tiene una biblioteca estándar fantástica que incluye soporte de redes de primer nivel.
El método
createServer()
http
crea un nuevo servidor HTTP y lo devuelve.
El servidor está configurado para escuchar en un puerto y host específicos. Cuando el servidor está listo, se inicia la función de devolución de llamada, en este caso informando que el servidor se está ejecutando.
Cuando se recibe una nueva solicitud, se dispara un evento de solicitud que contiene dos objetos: una solicitud (un objeto http.IncomingMessage (un mensaje entrante)) y una respuesta (un objeto http.ServerResponse (una respuesta del servidor)).
Estos objetos son necesarios para procesar la llamada HTTP.
El primer objeto contiene los detalles de la solicitud. No se utiliza en nuestro ejemplo, pero puede acceder a los encabezados de solicitud y sus datos.
El segundo objeto se usa para proporcionar datos al solicitante.
En este caso, a través de
res.statusCode = 200
establecemos la propiedad statusCode en 200 como un indicador del éxito de la solicitud.
Establecemos el encabezado Content-Type (contenido o tipo de contenido)
res.setHeader('Content-Type', 'text/plain')
y cierre la respuesta agregando contenido como argumento para
end()
:
res.end('Hello World\n')
Marcos y herramientas de Node.js
Node.js es una plataforma de bajo nivel. Se han creado miles de bibliotecas diferentes para satisfacer las necesidades de los desarrolladores.
Con el tiempo, muchos de ellos se hicieron muy populares. Aquí hay una lista de algunos de ellos:
- AdonisJs: - , . Adonis — - Node.js.
- Express: -. , , .
- Fastify: -, . Fastify -.
- hapi: , .
- koa: Express . - , Express.
- Loopback.io: .
- Meteor: -, JavaScript, . - meteor , , React, Vue Angular. .
- Micro: HTTP-.
- NestJS: TypeScript Node.js- , .
- Next.js: React- .
- Nx: NestJS, Express, React, Angular .. Nx , .
- Socket.io: .
Node.js
Lo creas o no, Node.js tiene solo 10 años.
En comparación, JavaScript ha existido durante 24 años y la web durante 30.
10 años es poco tiempo para la tecnología, pero a veces parece que Node.js siempre lo ha sido.
Conocí a Node.js cuando solo pasaron 2 años desde su inicio, pero incluso entonces, a pesar de la información limitada, sentí que le esperaba un gran futuro.
En esta sección, observamos la historia general de Node.js.
Un poco de historia
JavaScript es un lenguaje de programación inventado por Netscape como una herramienta de secuencias de comandos para manipular páginas web en el navegador Netscape Navigator .
Parte del modelo de negocio de Netscape ha sido vender servidores web que incluyen el marco Netscape LiveWire, que puede crear páginas dinámicas usando JavaScript del lado del servidor. Desafortunadamente, Netscape LiveWire falló y JavaScript del lado del servidor no fue popular hasta Node.js.
Uno de los factores clave en la popularidad de Node.js es su sincronización. JavaScript había sido reconocido como un lenguaje (de programación) serio unos años antes gracias a las aplicaciones "Web 2.0" (como Flickr, Gmail y otras) que mostraban al mundo cómo podría ser la web moderna.
Los motores de JavaScript también han mejorado significativamente a medida que los navegadores se esfuerzan por mejorar el rendimiento en beneficio de los usuarios. Los equipos de desarrolladores de los principales navegadores trabajaron arduamente para implementar el mejor soporte para JavaScript y su ejecución más rápida. El motor que utiliza Node.js, V8 (también conocido como Chrome V8, el motor JavaScript de código abierto del proyecto Chromium) salió victorioso de esta competencia.
Node.js surgió en el momento correcto y en el lugar correcto. Afortunadamente, esta no es la única razón de su popularidad. El proyecto contenía una gran cantidad de ideas y enfoques innovadores para el desarrollo de JavaScript del lado del servidor que muchos desarrolladores disfrutaron.
2009
- Node.js apareció
- Npm apareció
2010
- Rápido
- Socket.io
2011
- npm versión 1.0
- Node.js: LinkedIn, Uber .
- hapi
2012
- Node.js
2013
- - Node.js: Ghost
- Koa
2014
- : Node.js io.js ( — git) ES6
2015
- Node.js Foundation
- IO.js Node.js ( — git)
- npm ()
- Node.js 4 ( 1, 2 3 )
2016
2017
- npm
- Node.js 8
- HTTP/2
- V8 Node.js , Node.js JS Chrome
- 3 npm
2018
- Node.js 10
- Soporte experimental del módulo ES con extensión .mjs
¿Cómo instalar Node.js?
Node.js se puede instalar de varias maneras.
Las distribuciones para las principales plataformas están disponibles en el sitio web oficial .
Una forma muy conveniente de instalar Node.js es usar el administrador de paquetes. Cada sistema operativo tiene el suyo.
En macOS, esto es Homebrew , lo que facilita la instalación de Node.js usando la línea de comando:
brew install node
La lista de administradores de paquetes para Linux, Windows y otros sistemas está aquí .
nvm
Es una forma popular de ejecutar Node.js. Le permite cambiar fácilmente entre las versiones de Node.js, instalar nuevas versiones para probar y deshacer las instalaciones en caso de que algo salga mal.
También es muy útil cuando necesita probar el código en versiones anteriores de Node.js.
Para más detalles
nvm
sigue este enlace .
Mi consejo es usar el instalador oficial si recién estás comenzando y no has usado Homebrew antes.
Después de instalar Node.js, obtiene acceso al programa ejecutable
node
en la línea de comando.
¿Qué tan bien necesita saber JavaScript para trabajar con Node.js?
Como principiante, es difícil determinar su nivel de programación.
También es difícil determinar dónde termina JavaScript y dónde comienza Node.js, y viceversa.
Personalmente, sugeriría obtener una buena comprensión de los siguientes conceptos básicos de JavaScript antes de sumergirse en Node.js:
- Sintaxis o estructura léxica
- Expresiones (esencialmente la misma sintaxis)
- Tipos de datos)
- Variables
- Las funciones
- Esta palabra clave
- Funciones de flecha
- Ciclos
- Área de visibilidad
- Matrices
- Literales de plantilla o cadena
- Un punto y coma (probablemente casos de su uso obligatorio, por ejemplo, cuando se trabaja con IIFE)
- Régimen estricto
- ECMAScript 6, 2016, 2017
Dominar estos conceptos es el comienzo del camino de un desarrollador profesional de pila completa.
Los siguientes conceptos también son clave para comprender la programación asincrónica, que es una parte fundamental de Node.js:
- Programación asíncrona y devoluciones de llamada (devoluciones de llamada)
- Temporizadores (contadores)
- Promesas promesas)
- Asíncrono / espera
- Corto circuitos
- Bucle de eventos (pila de llamadas)
La diferencia entre Node.js y el navegador
JavaScript se puede usar tanto en el navegador como en Node.js.
Sin embargo, crear aplicaciones de navegador es muy diferente de crear aplicaciones Node.js.
Si bien JavaScript se usa en ambos casos, existen algunas diferencias clave específicas del desarrollo.
Desde el punto de vista de una interfaz de JavaScript (desarrollador front-end - el lado del cliente de una aplicación), desarrollar aplicaciones en Node.js tiene una ventaja significativa, expresada en el hecho de que en todas partes, tanto en el cliente como en el servidor, se utiliza el mismo lenguaje de programación: JavaScript.
Esta es una gran oportunidad para convertirse en una pila completa: todos sabemos lo difícil que es aprender completamente y profundamente un nuevo lenguaje de programación, y en este caso, no existe tal necesidad.
Lo único que necesita ser estudiado es el ecosistema.
En el navegador, la mayoría de las veces tenemos que lidiar con el DOM y otras API web como las cookies. Por supuesto, no existen en Node.js. Node.js carece de ventanas, documentos y otros objetos específicos del navegador.
Los navegadores, por otro lado, carecen de las maravillosas API proporcionadas por Node.js a través de módulos, como el acceso al sistema de archivos.
Otra diferencia importante es que en Node.js controlas el tiempo de ejecución del código. Si no está desarrollando una aplicación abierta que cualquiera pueda implementar en cualquier lugar, sabrá qué versión de Node.js se usa para ejecutar la aplicación. Esto es muy conveniente, a diferencia del tiempo de ejecución del navegador, porque los usuarios deciden qué navegador usar.
Esto significa que puede escribir código JavaScript compatible con su versión de Node.js.
Dado que JavaScript se está desarrollando de manera muy dinámica, los navegadores no siempre tienen tiempo para implementar rápidamente nuevas funciones del lenguaje, y los usuarios no siempre se actualizan de manera oportuna, por lo que en la web a menudo tiene que mantener JavaScript antiguo.
Para transpilar el código a ES5, puede usar Babel; en Node.js, esto no es necesario.
Otra diferencia es que Node.js usa el sistema modular CommonJS, mientras que los navegadores admiten módulos ES.
En la práctica, esto significa que en Node.js usamos
require()
, y en el navegador import
.
Gracias por su atención, amigos. Si encuentra errores y errores tipográficos, no dude en escribir en PM, se lo agradeceré.
Continuará…