Sept 11, 2019

5 cosas que probablemente no sabes sobre Node.js


Hace unos días, estaba leyendo un artículo sobre cómo funciona el proceso secundario de Node.js y cómo el proceso principal sigue ejecutándose en un núcleo. Después de eso, me puse a profundizar en el repositorio de Node.js para aprender más sobre su comportamiento interno. Este tipo de cosas son las cosas que nunca encontrarás en un curso en línea. Es por eso que hoy estoy escribiendo esta publicación.

La mayoría de los recursos de aprendizaje disponibles en Internet (especialmente los cursos en línea) sobre Node.js siempre enseñan sobre paquetes externos y no sobre su entorno de tiempo de ejecución. Los desarrolladores que están satisfechos solo con esos recursos, * consideremos hipotéticamente "promedio" *.

Ahora, aprenderemos sobre algunas cosas difíciles sobre el Nodo en sí, que aumentan nuestra competencia con este ecosistema.

El CallStack es parte del motor V8

Sí lo es. El V8 utiliza el Callstack como parte de su arquitectura para realizar un seguimiento de las invocaciones de funciones. Entonces, ¿qué es el CallStack? Es una estructura de datos que registra todas las llamadas a funciones, cada vez que invocamos una función toma referencias y sigue haciéndolo para cada invocación de otros anidados, incluidos aquellos que hacen una recursión.

De "Philip Roberts: ¿Qué diablos es el bucle de eventos de todos modos" en JSConf EU

Es importante mantener el Callstack no demasiado ocupado porque solo hay un CallStack disponible por proceso de Nodo. Además, solo aparece la función anidada cuando esta termina y devuelve un valor.

Entonces, ¿The Event Loop también está dentro de V8?

No. El bucle de eventos lo proporciona la biblioteca libuv. Se encarga de manejar los eventos externos que necesitan ** Node API , seleccionando de las colas de eventos y empujando sus devoluciones de llamada al Callstack. Actúa como una guía, con funciones como * setTimeout * o * fs.readFile *** que pertenecen a Node API, no a Javascript. También decide qué ejecutar a continuación en CallStack cuando está vacío.

Node.js event loop architecture - Andranik Keshishyan

¿Por qué sale Node.js?

Cuando se ejecuta un programa Node, iniciará el bucle de eventos automáticamente y seguirá iterando mientras haya algo en ejecución. Entonces, cuando la Pila de llamadas y el Bucle de eventos no tienen nada más que hacer, el proceso se cierra. El nodo mantiene el proceso en ejecución cuando inicia un temporizador o un servidor HTTP.

Nodo dependencias externas

https://www.zcfy.cc/original/architecture-of-node-js-internal-codebase-506.html

El entorno node.js tiene algunas bibliotecas para ayudar con las operaciones de bajo nivel de javascript. Estas son las bibliotecas que tenemos disponibles:

  • ** libuv **
  • ** http-parser **
  • ** c-ares **
  • ** OpenSSL (cripto) **
  • ** Zlib **

Todos ellos son externos al nodo. Tienen su propio código fuente. Tienen su propia licencia. Node solo los usa. Es bueno aprender este punto, ser justo y no echarle la culpa a Node;).

Node.js podría usarse sin V8

Node.js requiere una VM para ejecutar el proceso principal, pero no es necesariamente V8. V8 es el proyecto de código abierto de Google que no fue creado originalmente por el equipo de node.js. No es muy común, pero puedes usar Chakra en su lugar.

[Ver el repositorio de Chakra en Github] (https://github.com/nodejs/node-chakracore)

Se permiten dependencias de módulos circulares

Si tiene dos módulos que se requieren entre sí, * arrojará un error? * Bueno, no. En estos casos, se le advertirá porque cuando se inicie el bucle de requerimiento circular, el primer archivo aún no se realizará, por lo que el segundo archivo solo se representará como una versión parcial.

// module1.js

require ("./ module2")




// module2.js

require ("./ module1");

Espero que hayas aprendido cosas nuevas y que puedan ayudarte en tu viaje trabajando con este increíble entorno.

Si se sintió entusiasmado con este tipo de temas, hágamelo saber con un comentario.

5 cosas que probablemente no sabes sobre Node.js
Commentarios