En Node.js, una variable global es un objeto o función que está disponible en todo el entorno de ejecución sin necesidad de importarla explícitamente. Esto facilita el acceso a funcionalidades esenciales del entorno y permite una programación más eficiente.
El objeto global raíz en Node.js es global.
Este objeto es equivalente a window en los navegadores, aunque específico del entorno de ejecución de Node.js.
El objeto global contiene muchas propiedades y funciones útiles, entre ellas:
console: Permite imprimir mensajes en la consola.process: Proporciona información y herramientas para controlar el proceso que ejecuta Node.js.setTimeout y setInterval: Manejo de temporizadores.Buffer: Permite manejar datos binarios.global: Hace referencia al propio objeto global.Global Objects en Node.jsglobal:Es el objeto raíz del entorno de ejecución. Se puede acceder a otras propiedades globales a través de él. Ejemplo:
console.log(global); // Muestra todas las propiedades globales __dirname:Representa el directorio en el que se encuentra el archivo que se está ejecutando. Este objeto es útil para construir rutas absolutas hacia otros archivos y carpetas dentro de tu proyecto.
Ejemplo:
const path = require('path');
console.log(__dirname); // Muestra la ruta absoluta del directorio actual
// Usando __dirname para construir una ruta a un archivo
const filePath = path.join(__dirname, 'archivo.txt');
console.log(filePath);
// Muestra la ruta absoluta del archivo 'archivo.txt' en el directorio actual __filename:Representa la ruta absoluta del archivo que se está ejecutando.
Ejemplo:
console.log(__filename); // Muestra la ruta completa del archivo actual process:process es un objeto global en Node.js que proporciona información y control sobre el proceso que ejecuta la aplicación. Es fundamental para interactuar con el entorno del sistema y configurar la ejecución de tu aplicación.
Propiedades clave:
process.env: Un objeto que contiene las variables de entorno del sistema. Útil para manejar configuraciones sensibles.
Ejemplo:
console.log(process.env.NODE_ENV); // Muestra el entorno actual (por ejemplo, "development" o "production") process.argv: Un array que contiene los argumentos pasados desde la línea de comandos al ejecutar el script. Esto permite pasar parámetros al programa.
Ejemplo:
console.log(process.argv); // Muestra todos los argumentos de la línea de comandos process.exit(): Una función que termina el proceso de Node.js. Puedes pasar un código de salida (por defecto es 0, indicando que todo salió bien).
Ejemplo:
process.exit(1); // Termina el proceso con un código de salida 1 (indica un error) Buffer:El Buffer es una clase global en Node.js utilizada para manejar datos binarios, como imágenes, archivos de audio, y otros datos no textuales. Los buffers son útiles cuando trabajas con operaciones de entrada/salida, como lecturas de archivos o transferencias de red.
Ejemplo Básico:
const buffer = Buffer.from('Hola Node.js');
console.log(buffer); // Muestra un buffer binario
console.log(buffer.toString()); // Convierte el buffer a string Ejemplo de Uso Adicional:
const buffer1 = Buffer.from('Hola ');
const buffer2 = Buffer.from('Node.js');
const combinedBuffer = Buffer.concat([buffer1, buffer2]);
console.log(combinedBuffer.toString()); // Muestra "Hola Node.js" setTimeout y clearTimeout:setTimeout es una función que permite ejecutar una función después de un tiempo específico (en milisegundos). Por otro lado, clearTimeout se usa para cancelar la ejecución de una función programada con setTimeout.
Ejemplo Básico:
const timer = setTimeout(() => {
console.log('Esto se ejecuta después de 2 segundos');
}, 2000);
// Cancela el timeout antes de que se ejecute
clearTimeout(timer); // No se mostrará el mensaje porque se canceló el timer Ejemplo de Uso en Situaciones Prácticas:
let inputTimer;
const debounceInput = () => {
clearTimeout(inputTimer); // Evita ejecutar si ya hay un timer activo
inputTimer = setTimeout(() => {
console.log('Buscando…'); // Simula una búsqueda después de dejar de escribir
}, 300); // Espera 300 ms después de dejar de escribir
};
// Imagina que esto se llama en un evento onInput
debounceInput(); setInterval y clearInterval:setInterval es una función que ejecuta una función repetidamente en intervalos de tiempo específicos. Por otro lado, clearInterval se usa para detener un intervalo activo.
Ejemplo Básico:
const interval = setInterval(() => {
console.log('Esto se ejecuta cada segundo');
}, 1000);
// Detiene el intervalo después de 5 segundos
setTimeout(() => {
clearInterval(interval); // Cancela el intervalo
console.log('Intervalo detenido');
}, 5000); Ejemplo de Uso en Situaciones Prácticas:
Imagina que estás desarrollando un temporizador de cuenta atrás:
let seconds = 10;
const countdown = setInterval(() => {
if (seconds > 0) {
console.log(`${seconds} segundos restantes`);
seconds--;
} else {
clearInterval(countdown); // Cancela el intervalo al llegar a 0
console.log('¡Tiempo agotado!');
}
}, 1000); setImmediate y clearImmediate:Ejecuta una función inmediatamente después de las operaciones pendientes en el ciclo de eventos.
Ejemplo:
const immediate = setImmediate(() => {
console.log('Esto se ejecuta inmediatamente después de las tareas pendientes');
});
clearImmediate(immediate); // Cancela la ejecución inmediata Crear un archivo en el directorio actual usando __dirname
const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, 'archivo.txt');
fs.writeFile(filePath, 'Hola desde Node.js!', (err) => {
if (err) throw err;
console.log('Archivo creado:', filePath);
}); Leer argumentos de la línea de comandos
// Ejecuta este script con: node script.js --nombre=Juan
const args = process.argv.slice(2);
args.forEach((arg) => {
console.log(arg.split('=')[1]); // Imprime "Juan" si se pasa --nombre=Juan
}); Usar buffers para manejar datos binarios
const buffer = Buffer.from('Hola Mundo');
console.log(buffer); // Muestra los datos en formato binario
console.log(buffer.toString('utf8')); // Convierte el buffer a string global directamente:__dirname y __filename con path:process.env para configuraciones sensibles: