¿Qué es realmente Node.js?



Node.js es un tiempo de ejecución de JavaScript. ¿Qué significa esto y cómo funciona?
El entorno Node.js incluye todo lo que necesita para ejecutar un programa escrito en JavaScript.

Anteriormente, solo podía ejecutar JavaScript en un navegador, pero una vez que los desarrolladores lo expandieron, ahora puede ejecutar JS en su computadora como una aplicación independiente. Entonces estaba Node.js.

Ahora puede hacer mucho más con JavaScript que solo sitios web interactivos.

JavaScript ahora tiene la capacidad de hacer lo que pueden hacer otros lenguajes de programación de scripts, como Python.

Tanto JavaScript basado en navegador como Node.js se ejecutan en el tiempo de ejecución V8. Este motor usa su código JS y lo convierte en un código de máquina más rápido. El código de máquina es un código de bajo nivel que una computadora puede ejecutar sin tener que interpretarlo primero.

¿Por qué Node.js?


Aquí está la definición formal dada en el sitio web oficial de Node.js:
- Node.js: tiempo de ejecución de JavaScript basado en el motor JavaScript V8 de Chrome.
- Node.js utiliza un modelo de E / S sin bloqueo controlado por eventos que lo hace fácil y eficiente.
- El ecosistema del paquete Node.js, npm, es el ecosistema de bibliotecas de código abierto más grande del mundo.

Ya discutimos la primera línea de esta definición: "Node.js es un tiempo de ejecución de JavaScript basado en el motor JavaScript V8 de Chrome". Ahora veamos las otras dos líneas, para que podamos entender por qué Node.js es tan popular.

I / O significa entrada / salida. Puede ser cualquier cosa: desde leer / escribir archivos locales hasta una solicitud HTTP en la API. La E / S lleva tiempo y, por lo tanto, bloquea otras funciones.

Considere un escenario en el que solicitamos usuario1 y usuario2 desde el backend, y luego imprímalos en la pantalla / en la consola. La respuesta a esta solicitud lleva tiempo, pero ambas solicitudes de datos de usuario se pueden ejecutar de forma independiente y al mismo tiempo.



Bloqueo de entrada-salida


En el método de bloqueo, la solicitud de datos del usuario2 no se activa hasta que los datos del usuario1 se imprimen en la pantalla.

Si se tratara de un servidor web, tendríamos que iniciar un nuevo hilo para cada nuevo usuario. Pero JavaScript es de un solo subproceso (pero tiene un bucle de evento de un solo subproceso, del que hablaremos más adelante). Por lo tanto, esto hará que JavaScript no sea muy adecuado para tareas de subprocesos múltiples.

E / S sin bloqueo


Por otro lado, utilizando una solicitud sin bloqueo, puede iniciar una solicitud de datos para el usuario2 sin esperar una respuesta a la solicitud del usuario1. Puede iniciar ambas solicitudes en paralelo.

La E / S sin bloqueo elimina la necesidad de múltiples subprocesos porque el servidor puede manejar múltiples solicitudes a la vez.

Bucle de eventos de JavaScript


Si tiene 26 minutos, consulte la excelente explicación del video Node Event Loop:



Si no, aquí hay una explicación paso a paso de cómo funciona Event Loop en JavaScript:



1. Enviar main () a la pila de llamadas.

2. Envíe console.log () a la pila de llamadas. Comienza de inmediato y aparece.

3. Envíe setTimeout (2000) a la pila. setTimeout (2000) es la API del nodo. Cuando lo llamamos, registramos un par de eventos de devolución de llamada. El evento esperará 2.000 milisegundos y luego volverá a llamar.

4. Después del registro, setTimeout (2000) aparece en la pila de llamadas.

5. Ahora el segundo setTimeout (0) se registra de la misma manera. Ahora tenemos dos API de nodo en espera de ejecución.

6. Después de esperar 0 segundos, setTimeout (0) se mueve a la cola de devolución de llamada, y lo mismo sucede con setTimeout (2000).

7. En la cola de ejecución de devolución de llamada, las funciones esperan que la pila de llamadas esté vacía, porque solo se puede ejecutar una función a la vez. Esto proporciona un bucle de eventos.

8. Se llama al último console.log () y se llama a main () desde la pila de llamadas.

9. El bucle de eventos ve que la pila de llamadas está vacía, pero la cola de devolución de llamada no lo está. Por lo tanto, mueve las devoluciones de llamada (en orden) a la pila de llamadas para ejecutar.

Npm



Estas son bibliotecas construidas por la comunidad. Resolverán los problemas más comunes. npm (Node Package Manager) contiene paquetes que puede usar en sus aplicaciones para que su desarrollo sea más rápido y más eficiente.

Requerir


Requerir tiene tres funciones:

Carga los módulos suministrados con Node.js, por ejemplo, desde el sistema de archivos o HTTP, desde la API Node.js.
Carga bibliotecas de terceros como Express y Mongoose que instala desde npm.
Le permite crear sus propios archivos y dividir el proyecto en módulos.
Requerir es una función, y toma un parámetro de ruta y devuelve module.exports.

Módulos de nodo


Los módulos de nodo son bloques de código reutilizables cuya existencia no afecta accidentalmente a otro código.

Puede escribir sus propios módulos y usarlos en varias aplicaciones. Node.js tiene un conjunto de módulos integrados que puede usar sin una instalación especial.

V8 acelera JavaScript usando C ++


V8 es un motor de código abierto escrito en C ++.

JavaScript -> V8 (C ++) -> código de máquina

V8 implementa ECMAScript como se especifica en ECMA-262. ECMAScript fue creado por Ecma International para estandarizar JavaScript.

V8 puede funcionar de forma autónoma o puede integrarse en cualquier aplicación C ++. Gracias a esto, puede escribir su propio código C ++ y ponerlo a disposición para JavaScript.

Eventos


Los eventos son todo lo que sucedió en nuestra aplicación y lo que podemos responder.

El nodo tiene dos tipos de eventos:

  • Eventos del sistema: kernel C ++ de la biblioteca libuv. (Por ejemplo, terminando de leer un archivo).
  • Eventos personalizados: núcleo de JavaScript.


Escribiendo Hello World en Node.js


Por que no

Cree el archivo app.js y agregue lo siguiente.

console.log ("Hello World!");

Abra un terminal Node, cambie el directorio a la carpeta en la que se guarda el archivo y ejecute el nodo app.js.

Voila: acabas de escribir "Hello World" en Node.js.

Hay toneladas de recursos que puede usar para obtener más información sobre Node.js, incluido freeCodeCamp.org.

Source: https://habr.com/ru/post/es420123/


All Articles