Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

157
Views
¿Cómo se requiere trabajo bajo el capó en NodeJS?

Trato de entender cómo funciona el arranque de nodeJS, pero estoy apilado con la función require

  1. Primer uso de require dentro de internal/bootstrap/node.js (Vea la imagen a continuación)
  2. require pasado a este archivo en src/node.cc como native_module_require
  3. node.cc toma require de internal/bootstrap/loaders.js (que se ejecutó antes del paso 1)
  4. internal/bootstrap/loaders.js usa internalBinding , que usa getInternalBinding
  5. getInternalBinding crear desde...
  6. src/node_binding.cc , parece un poco complicado, pero mi caso ( "native_module" del paso 4) es findModule(modlist_internal...
  7. modlist_internal guardado en node_module_register
  8. que se llama desde napi_module_register
  9. que se llama desde NAPI_MODULE
  10. pero no puedo encontrar dónde se usa NAPI_MODULE (excepto para prueba y banco)

bloques de código

Uso la versión 16.14.0 LTS de nodeJS de GitHub

¿Qué estoy tratando de hacer? Nada especial, solo curiosidad, también estudio el código fuente del proyecto anterior, que puede ejecutar el nodo dentro del navegador https://github.com/olydis/node-in-browser , pero usa la versión anterior de nodeJS (con diferentes require ), y el proyecto no se actualiza hace algunos años. Además, me pregunto cómo stackblitz.com lanza una versión moderna de nodeJS dentro del navegador.

PD: también hay una carpeta lib\internal\modules\ que de alguna manera está relacionada con require e import , pero no creo que se use en el proceso de arranque, tal vez un poco más tarde.

PPS, solo conozco javaScript, por lo que puedo perderme algo importante en el código fuente de C ++

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

En la sección .data del ejecutable del nodo hay cadenas C++ que contienen fuentes js nativas. En la sección .text del ejecutable del nodo hay fragmentos de código ejecutable compilados a partir de esas cadenas. V8 mantiene los enlaces entre las fuentes js nativas y los fragmentos de código ejecutable a través de asignaciones dentro del objeto global del aislado de la instancia V8, y el nodo configura el aislado V8 con las asignaciones/enlaces correctos durante la inicialización. Require es una de las fuentes js nativas.

El código js adicional se convierte en código ejecutable y datos por nodo a través de V8. Su programa, que requieren las llamadas, es un código js de este tipo. Dado que require es un módulo js nativo, existe un enlace al código ejecutable, por lo que V8 sabe qué dirección usar al compilar la llamada. La implementación de require tiene lógica para averiguar si su argumento es un módulo nativo o no, ya que hay una lógica diferente para importar módulos nativos y no nativos.

Entonces, una llamada a require funciona al compilarse en una llamada a una función precompilada que es parte del ejecutable del nodo que V8 conoce gracias a la configuración del nodo de V8.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!