// CURSO NODE JS // Nombre directorio y archivo console.log(__dirname); console.log(__filename); var path = require("path"); console.log(path.basename(__filename)); // Procesos y funciones con argumentos console.log(process.argv); function param(p){ var indice = process.argv.indexOf(p); return process.argv[indice+1]; } var nombre = param('--nombre'); var edad = param('--edad'); console.log(`Tu nombre es ${nombre} y tienes ${edad} años`) // Ejecutar: node 01 --nombre "frank" --edad 45 // Leer y escribir en consola process.stdout.write("Dime tu nombre: "); var nombre; process.stdin.on('data', function(data){ nombre = data.toString().trim(); process.stdout.write(`Hola ${nombre}`); process.exit(); }); // Leer y escribir en consola 2 var preguntas = ['Nombre? ', 'Edad? ', 'Tu equipo favorito? ' ]; var respuestas = []; function pregunta(i){ process.stdout.write(preguntas[i]); }; process.stdin.on('data', function(data){ respuestas.push(data.toString().trim()); if (respuestas.length < preguntas.length){ pregunta(respuestas.length); } else { process.exit(); } }); pregunta(0); // Módulos // https://nodejs.org/dist/latest-v14.x/docs/api/ var v8 = require('v8'); console.log(v8.getHeapStatistics()); // Módulo Readline var readline = require('readline'); var rl = readline.createInterface(process.stdin, process.stdout); rl.question('Cuál es tu nombre? ', (respuesta)=>{ console.log(`Hola, ${respuesta}`); process.exit(); }); // Módulo Readline 2 var readline = require('readline'); var util = require('util'); var rl = readline.createInterface(process.stdin, process.stdout); var persona = { nombre: '', comentarios: [] }; rl.question('Cuál es tu nombre? ', (respuesta)=>{ persona.nombre = respuesta; rl.setPrompt('Dime un comentario: '); rl.prompt(); }); rl.on('line', (input)=> { if (input.trim() === 'salir'){ var mensaje = util.format("Te llamas %s y esto me dijiste: %j", persona.nombre, persona.comentarios); console.log(mensaje); process.exit(); } persona.comentarios.push(input.trim()); rl.setPrompt('Dime un comentario: '); rl.prompt(); }); // Manejo de eventos const events = require('events'); const emitter = new events.EventEmitter(); emitter.on('eventoCustom', (mensaje, status) => { console.log(`${status}, ${mensaje}`); }); emitter.emit('eventoCustom', 'Mensaje cargado con éxito', 200); // Manejo de eventos 2 const eventEmitter = require('events').EventEmitter; const util = require('util'); var Persona = function(nombre){ this.nombre = nombre; } util.inherits(Persona, eventEmitter); let persona = new Persona('Bob'); persona.on('hablar', (mensaje) => { console.log(`${persona.nombre}: ${mensaje}`); }); persona.emit('hablar', 'Hoy es un gran día'); // Exportar Módulos const eventEmitter = require('events').EventEmitter; const util = require('util'); var Persona = function(nombre){ this.nombre = nombre; } util.inherits(Persona, eventEmitter); module.exports = Persona; // Llamar módulos const persona = require('./persona'); let persona = new Persona('Bob'); persona.on('hablar', (mensaje) => { console.log(`${persona.nombre}: ${mensaje}`); }); persona.emit('hablar', 'Hoy es un gran día'); // Ejecutar procesos const exec = require('child_process').exec; exec('bitcoin.py',(err, stdout) =>{ if(err){ throw err; } console.log('Comando ejecutado'); console.log(stdout); }); console.log('Hola desde Node JS'); // Ejecutar Python Script // The path to your python script var myPythonScript = "bitcoin.py"; // Provide the path of the python executable, if python is available as environment variable then you can use only "python" var pythonExecutable = "python.exe"; // Function to convert an Uint8Array to a string var uint8arrayToString = function(data){ return String.fromCharCode.apply(null, data); }; const spawn = require('child_process').spawn; const scriptExecution = spawn(pythonExecutable, [myPythonScript]); // Handle normal output scriptExecution.stdout.on('data', (data) => { console.log(uint8arrayToString(data)); }); // Handle error output scriptExecution.stderr.on('data', (data) => { // As said before, convert the Uint8Array to a readable string. console.log(uint8arrayToString(data)); }); scriptExecution.on('exit', (code) => { console.log("Process quit with code : " + code); }); console.log('Hola desde Node JS'); // Listar archivos // Listar archivos de forma síncrona const fs = require('fs'); var files = fs.readdirSync('./'); console.log(files); // Listar archivos de forma asíncrona const fs = require('fs'); fs.readdir('./', (error, files) => { if(error){ throw error; } console.log(files); }); // Leer Archivo de forma síncrona const fs = require('fs'); var archivo = fs.readFileSync('./archivo.txt', 'UTF-8'); console.log(archivo); // Leer Archivo de forma asíncrona const fs = require('fs'); fs.readFile('./archivo.txt', 'UTF-8', (error, file) => { if(error){ throw error; } console.log(file); }); // Escribir archivos // Validar si existe el archivo const fs = require('fs'); const archivo = 'archivo.txt'; if(fs.existsSync(archivo)){ console.log('El archivo existe'); } else { console.log('El archivo no existe'); } // Validar si existe el archivo const fs = require('fs'); const archivo = 'archivo.txt'; fs.access(archivo, fs.constants.F_OK, (err) => { if(fs.existsSync(archivo)){ console.log('El archivo existe'); } else { console.log('El archivo no existe'); } }) // Escribir en un archivo de forma síncrona const fs = require('fs'); const archivo = 'archivo.txt'; const contenido = 'Este es el contenido del texto' fs.writeFileSync(archivo, contenido); console.log('El archivo se ha escrito'); // Escribir en un archivo de forma asíncrona const fs = require('fs'); const archivo = 'archivo.txt'; const contenido = 'Este es el contenido del texto 2'; fs.writeFile(archivo, contenido, (err) => { if(err) throw('Hubo un error al escribir'); console.log('El archivo se ha escrito'); }); // Adjuntar en archivo de forma síncrona const fs = require('fs'); const archivo = 'archivo.txt'; const textoAdicional = '\nEste es otra línea'; fs.appendFileSync(archivo, textoAdicional); console.log('El archivo se ha escrito'); // Adjuntar en archivo de forma asíncrona const fs = require('fs'); const archivo = 'archivo.txt'; const textoAdicional = '\nEste es otra línea 2'; fs.appendFile(archivo, textoAdicional, (err) => { if(err) throw('Hubo un error al escribir'); console.log('El archivo se ha escrito'); }); // Usar directorios // Crear directorio de forma síncrona const fs = require('fs'); fs.mkdirSync('folder'); // Crear directorio de forma asíncrona const fs = require('fs'); fs.mkdir('folder', function(err){ if (err){ throw('Error: ' + err); } console.log('Directorio creado'); }); // Validar si existe un directorio de forma síncrona const fs = require('fs'); if (fs.existsSync('folder')){ console.log('El directorio ya existe'); } else { fs.mkdirSync('folder'); console.log('Directorio creado'); } // Validar si existe un directorio de forma asíncrona const fs = require('fs'); fs.exists('folder', function(exists) { if (exists) { console.log('Directorio ya existe'); } else { fs.mkdir('folder', function(err){ if (err){ throw('Error: ' + err); } console.log('Directorio creado'); }); } }); // Operaciones básicas de archivos // Renombrar archivo de forma síncrona const fs = require('fs'); fs.renameSync('prueba.txt','prueba2.txt'); // Renombrar archivo de forma asíncrona const fs = require('fs'); fs.rename('prueba2.txt','prueba.txt', (err) => { if (err){ throw(err); } console.log('El archivo fue renombrado'); }); // Mover archivo de forma síncrona (el dir tiene que estar creado) const fs = require('fs'); fs.renameSync('./prueba.txt','./src/prueba.txt'); // Mover archivo de forma asíncrona (el dir tiene que estar creado) const fs = require('fs'); fs.rename('./prueba.txt','./src/prueba.txt', (err) => { if (err){ throw(err); } console.log('El archivo fue movido'); }); // Eliminar archivo de forma síncrona const fs = require('fs'); fs.unlinkSync('prueba.txt'); // Eliminar archivo de forma asíncrona const fs = require('fs'); fs.unlink('./prueba.txt', (err) => { if (err){ throw(err); } console.log('El archivo fue eliminado'); }); // Leer streams const fs = require('fs'); let stream = fs.createReadStream('./file.txt', 'UTF-8'); let data = ''; stream.once('data', () => { console.log('Iniciando stream'); }); stream.on('data', (chunk) => { console.log(`&{chunk.length}`); data += chunk; }); stream.on('end', () => { console.log('Fin del stream'); console.log(data.lenght); }); // Escribir streams const fs = require('fs'); const readline = require('readline'); let i = readline.createInterface(process.stdin, process.stdout); i.question('Cuál es tu nombre? > ', (nombre) => { let stream = fs.createWriteStream(`./${nombre}.txt`); stream.write(`Esto dijo ${nombre} \n`); process.stdout.write('Qué quieres decir? \n'); i.on('line', (dicho) => { if(dicho.trim() == 'salir'){ stream.close(); i.close(); } else { stream.write(dicho.trim() + '\n'); } }); }); // Petición http const http = require('http'); http.get('http://hashmania.pcriot.com/', (res) => { console.log('statusCode:', res.statusCode); console.log('headers:', res.headers); res.on('data', (d) => { process.stdout.write(d); }); }).on('error', (e) => { console.error(e); });