Universidad Nacional de Ingeniería
Escuela de Ciencia de la Computación
Node.js es un entorno de ejecución para javascript, de código abierto para el lado del servidor.
Construido sobre el motor V8 de Google (C++) .
Node.js se usa para realizar aplicaciones web de I/O como sitios de streaming, single web apps, etc.
Nos permite correr código Javascript en backend fuera del browser.
Single Threaded: Node.js utiliza un único modelo de subprocesos (event loop). Mecanismo de evento ayuda al servidor a responder de una manera "non-blocking" y hace que el servidor sea altamente escalable en comparación con los servidores tradicionales que crean hilos limitados para manejar las solicitudes.
console.log("Inicio");
setTimeout( () => {
console.log("Dentro de una función asíncrona 1");
}, 3000);
setTimeout( () => {
console.log("Dentro de una función asíncrona 2");
}, 3000);
console.log(" Done ");
Un motor JavaScript es un programa o un intérprete que ejecuta Javascript, puede ser implementado como intérprete estándar o como un compilador just-in-time que compila Javascript en bytecode.
Un poco de ES6
// Uso de let en vez de var
let variable = 'Hello';
const PI = '3.14';
function suma( a,b ){
let c = a+b;
return c;
}
function hello( name ){
console.log("Hi " + name);
}
// Arrow functions
let suma = (a,b) => a+b;
let hello = name => console.log("Hi " + name);
// hello.js
// Es de buena suerte comenzar con el Hello World!
console.log("Hello World");
Antes de empezar con lo bueno vamos a ver como funciona un servidor...
// Importamos nuestro modulo
const test = require('name_module');
// Usamos el modulo
test.function();
// index.js
const http = require("http");
const module = require("./module");
const hostname = "127.0.0.1";
const port = 8080;
const server = http.createServer((req, res) => {
res.statusCode = 200; //OK
res.setHeader("Content-Type", "text/plain");
res.write(module.titulo);
res.write("\n" + dt.message);
res.write(module.greeting());
res.write("\n Today is: " + module.myDateTime());
res.end();
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
// module.js
console.log("initializing module.js");
module.exports.title = "First server"
module.exports.message = "Welcome to our server";
module.exports.greeting = (name) => {
console.log("Hi " + name)
};
module.exports.getDate = () => Date();
Nuestro módulo
Paquetes de 3ros
Existen numerosos paquetes en internet listos para ser usados, que ya han sido testeados, pero debemo ser cautelosos ya que el abuso de instalación de paquetes puede hacer pesada nuestra aplicación
Con npm init crea nuestro package.json para poder administrar los paquetes que vamos a ir instalando como lodash, mongo, nodemon, etc..
El archivo package.json nos permite además ver las versiones de lo paquetes que estamos usando así como tambien podemos usar otras directivas
Lodash facilita muchas cosas ya que nos permite trabajar con arrays, objetos, numeros, cadenas, etc...
// Instalamos con:
// npm i --save lodash
// Load the full build.
var _ = require('lodash');
_.chunk(['a', 'b', 'c', 'd'], 2);
// >> [['a', 'b'], ['c', 'd']]
_.isString(true);
// >> false
_.isString('Andrew');
// >> true
_.uniq([1,2,3,3,2,1,4,5]);
// >> [1,2,3,4,5]
Este paquete monitorea cualquier cambio en nuestra aplicacion node.js y reinicia automaticamente el servidor.
Yargs nos ayuda a crear herramientas de línea de comandos interactivas, analizando argumentos y generando una elegante interfaz de usuario