Node.js es el entorno de ejecución de JavaScript que estuvimos usando en el transcurso de este workshop para ejecutar nuestros programas.
// `saludo.js`
console.log('¡Hola Node.js!');
# En la terminal ejecutá el siguiente comando
# Deberías ver '¡Hola Node.js!'
node saludo.js
En este módulo vamos a aprender a trabajar con parámetros de ejecución en Node.js. Entre otras cosas, esto nos va a permitir empezar a escribir programas genéricos.
Vamos a explicar este tema en el contexto de un ejemplo: vamos a construir un programa genérico para sumar 2 números que el usuario que ejecute el programa decida cuales son.
Siempre que estemos ejecutando un programa en el contexto de Node.js, tenemos a nuestra disposición un array que podemos obtener con process.argv
que contiene los parámetros de ejecución de nuestro programa.
// `parametros.js`
// Declaro y asigno una variable con los parámetros de ejecución de este programa
var arrayDeParametrosDeEjecucion = process.argv;
// Muestro por la terminal el array. Deberías ver algo parecido a esto:
// [
// '/Users/crisduran/.nvm/versions/node/v6.3.1/bin/node',
// '/Users/crisduran/Documents/CDuran/javascript-101/parametros.js'
// ]
console.log(arrayDeParametrosDeEjecucion);
# Ejecuto el programa que escribimos anteriormente en la terminal
node parametros.js
Por defecto, todos los programas que se ejecutan en Node.js reciben en process.argv
un array
con 2 string
indicando:
- Como primer valor (
process.argv[0]
) el path en tu disco duro donde se encuentra el ejecutable de Node.js. - Como segundo valor (
process.argv[1]
) el path en tu disco duro donde se encuentra el archivo que estás ejecutando.
Esta información no nos resulta muy útil por el momento, pero tenemos que saber que existe para poder profundizar en el tema.
El punto donde esto se pone bueno es cuando te cuento que si agregás valores al final del comando que usás para ejecutar tu programa, Node.js los va a agregar en el array process.argv
y vos vas a poder usarlos para lo que necesites.
// `hola.js`
// Declaro y asigno una variable con el array de argumentos de ejecución
var parametros = process.argv;
// Declaro una variable `nombre` que va a tener como valor el tercer elemento
// dentro del array de parámetros
var nombre = parametros[2];
// Muestro por la terminal un saludo
console.log('Hola', nombre);
# Hasta este módulo, veniamos ejecutando nuestros programas como `node archivo.js`
# A partir de ahora, podemos pasar parámetros a nuestros programas!
# Deberías ver 'Hola JavaScript'
node hola.js JavaScript
Esto nos va a permitir empezar a escribir programas que no dependan de que nosotros como programadores tengamos escritos en el código los números que queremos sumar, o el nombre del usuario que queremos mostrar por la terminal. A partir de ahora, nuestro código va a operar con variables sin que conozcamos el valor que van a tener al momento de ejecución.
Veamos un ejemplo más para intentar aclarar más esta idea:
// `historia.js`
// Declaro y asigno una variable con el valor del tercer elemento
// dentro del array de argumentos de ejecución del programa
var nombre1 = process.argv[2];
// Hago lo mismo para el cuarto elemento
var nombre2 = process.argv[3];
// Muestro por la terminal los siguientes mensajes
console.log('Este archivo ha recibido 2 nombres como parámetros de ejecución');
console.log('El primero es', nombre1);
console.log('El segundo es', nombre2);
# Deberías ver:
# 'Este archivo ha recibido 2 nombres como parámetros de ejecución'
# El primero es Juan
# El segundo es Pedro
node historia.js Juan Pedro
En el caso particular de los números, necesitamos aprender un detalle extra. Node.js agrega en el array process.argv
todos los parámetros de ejecución como string. Por este motivo, los números que nosotros enviemos como argumentos de ejecución los vamos a tener que convertir a tipo de dato numérico antes de operar con ellos mediante la función Number
.
La función
Number
recibe como parámetro un string y devuelve el número que representa. Por ejemplo:Number('20')
devuelve el número20
.
Veamos un ejemplo aplicado de todo:
// `suma.js`
// Declaro y asigno 2 variables con el contenido de los parámetros
var numeroEnFormatoTexto1 = process.argv[2];
var numeroEnFormatoTexto2 = process.argv[2];
// Recordá que si usás el operador de suma (+) en 2 string, los mismos
// se concatenan
console.log('Los 2 números concatenados:', numeroEnFormatoTexto1 + numeroEnFormatoTexto1);
// Declaro 2 variables que van a tener como valor el resultado de convertir
// los parámetros de ejecución de string a número
var numero1 = Number(numeroEnFormatoTexto1);
var numero2 = Number(numeroEnFormatoTexto2);
console.log('Los 2 números sumados:', numero1 + numero2);
# Deberías ver en la consola los siguientes mensajes:
# Los 2 números concatenados: 35
# Los 2 números sumados: 8
node suma.js 3 5
-
Podés usar la cantidad de parámetros que quieras a la hora de ejecutar tus programas.
-
Si el valor que querés pasar contiene espacios, usá comillas para indicar que es un único valor, de lo contrario, la terminal va a creer que son muchos diferentes y los va a separar cuando cree el array
process.argv
.Si queremos escribir un programa que reciba mi nombre completo y mi edad
# Incorrecto node mi-gran-programa.js Cristhian Javier Duran 27 # Correcto node mi-gran-programa.js 'Cristhian Javier Duran' 27
-
Un año de vida para las personas, representa 7 años en la vida de un perro. Escribí un programa que reciba como parámetro tu edad (no te olvides de usar la función
Number
para convertirla de string a número) y mostrá por la terminal cuantos años tendrías si fueras un perro (tu edad multiplicada por 7). -
Escribí un programa que reciba el nombre de una persona (string) y la nota de su trabajo práctico (número). Mostrar por la terminal el mensaje adecuado dependiendo de las siguientes condiciones:
- Si su nota es mayor a 7, mostrar:
# Completar los 3 puntos con los datos correspondientes 'El/La alumno/a llamado/a ... se sacó un ...' 'Felicitaciones por aprobar'
- Si su nota es mayor a 4 pero menor a 7, mostrar:
# Completar los 3 puntos con los datos correspondientes 'El/La alumno/a llamado/a ... se sacó un ...' 'La próxima entrega espero un mejor trabajo'
- Si su nota es menor a 4, mostrar:
# Completar los 3 puntos con los datos correspondientes 'El/La alumno/a llamado/a ... se sacó un ...' 'Nos vemos en Marzo'