0.3Primer script y el REPL de Node
Lo esencial en 30 segundos
- Dos modos: REPL para experimentar, archivo .js para desarrollar: node solo en interactivo, node app.js para lo duradero.
- console.log muestra en el terminal: la herramienta básica para ver, trazar y depurar tus valores.
- Globales Node, sin DOM: process, __dirname, global — y nunca window ni document en Node.
Minicaso hilado — Salim ejecuta su primer Hello
Salim, desarrollador junior en Argel, abre el terminal: escribe node solo y prueba 1 + 1 en el REPL, luego sale. Después crea app.js con un console.log de bienvenida, lo ejecuta con node app.js, muestra los argumentos recibidos y la carpeta actual. Cuando busca window por reflejo del front, Node le responde que eso no existe: comprende que aquí se accede al sistema, no a una página. Su cadena de ida y vuelta « editar, lanzar, leer » funciona.
Caso autónomo de esta sección: reaparece en el curso, el esquema, el script y el reto 48h de la sección 0.3.
1. REPL y archivo script
Dos formas de ejecutar JavaScript. El REPL (Read-Eval-Print Loop): al escribir node solo, se abre un entorno interactivo que evalúa cada línea al instante — perfecto para experimentar, probar una expresión o explorar una función (se sale con .exit). La forma principal: el archivo script. Se escribe el código en un .js y se lanza con node app.js — así se desarrollan aplicaciones reales, guardadas y versionables. Salim retiene: REPL para el borrador desechable, archivo para construir.
2. console.log y los globales Node
console.log() muestra en el terminal: el equivalente a « print », su herramienta básica para ver valores y depurar. Node proporciona objetos globales propios: process (argumentos con process.argv, entorno con process.env, salida con process.exit()), __dirname y __filename (carpeta y archivo actuales), y global. Salim los muestra uno por uno en su app.js en Argel y lee cada valor en el terminal.
3. Node no es un navegador
Diferencia clave con el front: en Node, sin window, document ni DOM — no hay página web. En cambio, acceso al sistema (archivos, red, procesos) vía módulos y globales. Un código que manipula el DOM no corre en Node, y viceversa. Salim pegó este recordatorio encima de su pantalla: « aquí, sin página — archivos, argumentos, procesos ». Dominar estos dos modos y estos globales es estar listo para escribir programas reales.
🔎 Ejemplo concreto — 🔎 Ejemplo concreto — Hello, Node !
console.log("Hello, Node !");
console.log(process.argv);
console.log(__dirname);
// ejecutar: node app.js Salim
Lectura: Salim ve su mensaje, la lista de argumentos y la carpeta actual.
Lección: la cadena editar, lanzar, leer funciona de principio a fin.
Vocabulario de la sección
- REPL
- Entorno interactivo abierto con node solo: lee, evalúa e imprime el JavaScript línea por línea; ideal para experimentar.
Ejemplo sencillo: Salim escribe 1 + 1 en el REPL y lee enseguida el resultado.
Lo que no es: un archivo guardado y versionable.
Reflejo: abrir el REPL para probar una idea antes de escribirla en archivo.
- Ejecutar un archivo
- Forma principal de trabajar: escribir el código en un .js y lanzarlo con node archivo.js, que ejecuta todo el archivo.
Ejemplo sencillo: Salim lanza node app.js y ve aparecer su Hello.
Lo que no es: escribir todo un programa línea por línea en el REPL.
Reflejo: en cuanto supere dos líneas, pasar a archivo.
- console.log()
- Función de visualización en el terminal; herramienta básica para ver valores, trazar la ejecución y depurar.
Ejemplo sencillo: Salim muestra cada variable con console.log antes de buscar más lejos.
Lo que no es: un resultado visual en una página web.
Reflejo: mostrar primero, suponer después.
- process
- Objeto global Node sobre el proceso en curso: argumentos (process.argv), entorno (process.env), salida (process.exit()).
Ejemplo sencillo: Salim lee el nombre pasado como argumento vía process.argv en Argel.
Lo que no es: window o document, que no existen en Node.
Reflejo: leer argv para toda pequeña herramienta de línea de comandos.
- Globales Node vs navegador
- Node ofrece process, __dirname, __filename y global con acceso al sistema; no tiene ni window, ni document, ni DOM.
Ejemplo sencillo: Salim sustituye document por __dirname cuando busca dónde está.
Lo que no es: el mismo entorno en ambos lados.
Reflejo: ante window is not defined, cambiar a lógica de sistema.
En la práctica — En la práctica — Ejecutar su primer código Node
- Abra el REPL con node solo; pruebe algunas expresiones y salga con .exit, como Salim.
- Cree app.js con un console.log de bienvenida y láncelo con node app.js.
- Muestre process.argv y __dirname desde el archivo; relance con un argumento (node app.js Salim).
- Constate que window y document no existen en Node; en cambio se accede al sistema.
Script listo para decir — contar su primera ejecución (30 s)
« Probé en el REPL con node solo, luego escribí app.js con un console.log. Con node app.js Salim, veo mi mensaje, mis argumentos y mi carpeta actual. Y verifiqué: sin window aquí, hablamos con el sistema. »
Para decir mostrando el terminal: primero el REPL, luego la ejecución del archivo con argumento.
Modelo copiar-pegar — mi primer app.js
const prenom = process.argv[2] || "Salim";
console.log("Hello, Node ! Bienvenue " + prenom + ".");
console.log("Dossier courant : " + __dirname);
console.log("Arguments recus : " + JSON.stringify(process.argv.slice(2)));
Sin argumento
Lance node app.js sin nada: el modelo muestra Salim por defecto, luego relance con su nombre para ver cambiar process.argv.
Explorador REPL
Antes del archivo: pruebe cada línea del modelo una por una en el REPL, luego ensámblelas en app.js — el borrador se vuelve duradero.
Pareja en Argel
Salim dicta, su colega escribe: uno lee el terminal en voz alta (mensaje, carpeta, argumentos), el otro verifica cada valor mostrado.
Reflejo depuración
Programa mudo: añada un console.log tras cada etapa (entrada, cálculo, salida) y relance — el depurador más viejo sigue siendo el más rápido.
✓ Buenas prácticas
- Use el REPL para probar una idea o explorar una función.
- Desarrolle en archivos .js (guardados, versionables).
- Conozca process, __dirname y global desde el inicio.
✗ Errores frecuentes
- Escribir un programa entero en el REPL efímero.
- Buscar window o document en Node (no existen).
- Olvidar que console.log es la herramienta básica de depuración.
Puntos clave
- Dos formas de ejecutar: el REPL (node solo, para EXPERIMENTAR) y los archivos script (node app.js, para DESARROLLAR).
- console.log() = la visualización en terminal: herramienta básica para ver valores y depurar.
- Objetos globales Node: process (argv, env, exit), __dirname y __filename, global — específicos de Node.
- Diferencia clave: SIN window, document ni DOM en Node; en cambio, acceso al sistema.
Reto 48h — aplique mañana
Cree app.js con el modelo de Salim, láncelo con y sin argumento y pruebe una línea del archivo en el REPL.
- Lanzo el REPL y un archivo .js explicando cuándo usar cada uno.
- Mi app.js muestra mensaje, argumentos y carpeta actual.
- Cito los globales Node y la ausencia de window y document.
Preguntas frecuentes
¿Qué diferencia hay entre el REPL y la ejecución de un archivo, y cuándo usar cada uno?
El REPL (node solo) evalúa línea por línea con resultado inmediato: ideal para experimentar (probar una función, explorar un módulo, verificar una idea). Es efímero: nada se guarda, inadecuado para código largo. La ejecución de archivo (node app.js) ejecuta todo un .js guardado, editable en VS Code y versionable: es el modo del trabajo real (servidor, script, herramienta). En la práctica: se desarrolla en archivos y se abre el REPL como borrador puntual antes de integrar.
¿Qué cambia realmente entre el JavaScript del navegador y el de Node?
El lenguaje es idéntico (sintaxis, tipos, funciones, clases, Promises, async/await — mismo motor V8). Lo que cambia es el entorno: sin DOM en Node (ni document, ni window, ni elementos HTML), pero un acceso al sistema prohibido al navegador (archivos, red, procesos vía process, sistema vía módulos). Los globales difieren (process, __dirname, global frente a window, document) y Node tiene su ecosistema npm. Venir del front es una ventaja: ya se conoce el idioma, queda aprender el entorno Node.
¿Cuándo usar el REPL en lugar de un archivo .js?