creando tus propias implementaciones. Muy bien, veamos algunas demostraciones. Aquí, voy a mostrarte la tubería de ejecución y cómo
Node.js funciona detrás de escena. Entonces, primero de todo, solo tengo un archivo
JavaScript aquí, y en solo el archivo
JavaScript, estoy llamando a un programa, un programa en C++, pero no pienses en C++ aquí, solo estamos viendo cómo se realiza el paso a paso. Bueno, para empezar, estamos leyendo un archivo. Recuerda que te dije,
JavaScript es una mentira, porque estamos leyendo una cadena y diciéndosela a V8, y V8 está haciendo toda la magia detrás de escena. No hay tal cosa como
JavaScript. Así que estamos leyendo el archivo, obteniendo todo el contexto. Veamos. Y luego compilamos. Esta compilación es simplemente transformar todo el código
JavaScript en instancias de C++, para que podamos llamarlo de inmediato. Es bastante bueno. Y luego podemos usar run, que es como evolucionar, simplemente ejecutarlo, simplemente ejecutar este código. Y vamos a tener nuestros resultados, y esperar eventos. Recuerda el bucle de eventos, recuerda el while true. El while true se ejecutará después de ejecutar nuestro código, ¿verdad? Porque se ejecutará en el futuro. Y solo para que sepas, solo por curiosidad, aquí estoy leyendo el archivo solo como un lado en C++, solo copiar y pegar, la forma más fácil de leer un archivo, no usando LibuV en este caso, pero vamos a ver que no es tan mágico, ¿verdad? No es tan difícil. Es difícil compilar y gestionar todo el entorno, pero es bastante genial. Aquí tuve que reunir todas las bibliotecas, así que pasé al menos un mes, Dios mío, mi trabajo se retrasó tratando de hacer esto, estaba llorando en casa, fue realmente difícil. Pero tienes que descargar V8 desde la fuente, tienes que compilar, generar un binario, y aquí vamos a copiar todas las entradas, solo el encabezado C++, solo referencias de cómo vamos a llamar a este binario. Podemos pensar en este binario como una API web, ¿verdad? Para libuvi, lo mismo, compilo todo, y cuando inicio C, no soy un desarrollador de C++, ¿verdad? Soy un desarrollador de
Node.js, y conozco NodeMod. Así que NodeMod, podemos observar archivos y simplemente ejecutar otra instrucción. Así que implementé mi propio recarga en vivo aquí. Pero veamos estos comandos funcionando sin ningún script. Así que estoy usando make. Entonces make va a leer ese archivo make, reunir todos los binarios, y luego va a generar un binario para nosotros. Y recuerda,
Node.js es solo un binario, ¿verdad?
Node.js, cuando escribes node y el nombre del archivo,
Node.js solo está leyendo el archivo, exactamente de la misma manera que estamos haciendo aquí. Así que lo ejecuto y puedo ver el hola mundo al final. Bastante sencillo por ahora. Pero, ¿qué pasa si podemos llamar a console.log? Cuando trabajamos con
JavaScript, cualquier cosa que dependa del entorno, cuando tienes que llamar algo del sistema operativo, donde dependes del entorno, como un console.log, o imprimir cosas, no están en
JavaScript. Mira este ejemplo, qué bonito es, ¿verdad? Si ejecuto console.log, no veo ningún error, lo cual es extraño para mí, porque console.log debería ser indefinido, ¿verdad?