Curso de node JS

¿Qué es NodeJS?

El lenguaje de programación Javascript está cada vez más extendido. Aunque fundamentalmente se ocupa de las funcionalidades que tiene una página web del lado de lo que el usuario está viendo, con nodeJS podrás programar con Javascript del lado del servidor. En este curso veremos como configurarlo, hacer consultas a la base de datos, comenzar proyectos desde cero, usar sockets...

Node.js es una plataforma para el desarrollo de aplicaciones en entorno del servidor mediante programación Javascript.

Presenta grandes ventajas en la implementación de aplicaciones que deben responder en tiempo real.

Pretende disputar terreno a lenguajes de servidor como PHP, Java, C# etc.

Instalación de NodeJS

  1. En Windows o Mac: NodeJS.
  2. En linux:
    sudo apt-get install -y npm

Hola Mundo

hola-mundo.jsconsole.log("hola Mundo")

Ejecutamos:

node hola-mundo.js

Crear un nuevo proyecto

npm init

package.json

package.json{
	"name": "proyecto", // Indicamos el nombre del proyecto
	"version": "0.0.0", // Indicamos la versión del proyecto
	"private": true,
	"scripts": {
		"start": "node ./bin/www" //Indicamos el archivo que se debe ejecutar para arrancar el proyecto
	},
	"dependencies": { 
		"body-parser": "~1.13.2",
		"cookie-parser": "~1.3.5",
		"debug": "~2.2.0",
		"express": "~4.13.1",
		"hbs": "~3.1.0",
		"morgan": "~1.6.1",
		"serve-favicon": "~2.3.0"
	}
}  

Al ejecutar npm install, se busca el archivo 'package.json' y se procede a instalar todos los módulos especificados en la propiedad 'dependencies'.

Módulos

Crear módulos

Un módulo es un fichero donde se crean grupos de funciones

aritmetica.jsvar PI=3.14;
function dividir(x1,x2){
    if (x2==0){
        mostrarErrorDivision();
    }else{
        return x1/x2;
    }
}

function mostrarErrorDivision() {
    console.log('No se puede dividir por cero');
}
exports.dividir=dividir;
exports.PI=PI;
main.jsvar mat=require('./aritmetica');

console.log('La división de 8/4='+mat.dividir(8,4));
console.log('El valor de PI='+mat.PI);

Para lanzarlo todo:

node main.js

Un módulo también puede ser una carpeta que contiene un conjunto de ficheros y subcarpetas.

Módulos del núcleo de nodejs

Algunos de los módulos del núcleo de Node.js son: os, fs, http, url, net, path, process, dns etc..

prueba.jsvar os=require('os');
console.log('Sistema operativo:'+os.platform());
console.log('Versión del sistema operativo:'+os.release());
console.log('Memoria total:'+os.totalmem()+' bytes');
console.log('Memoria libre:'+os.freemem()+' bytes');

Módulo para administrar el sistema de archivos: fs

var fs=require('fs');
//writeFile(donde_vamos_a_escribir, que_vamos_a_escribir, que_vamos_a_ejecutar_despues_de_escribir)
fs.writeFile('./archivo.txt','aaaaaa\nbbbbbb',function(error){
if (error)
    console.log(error);
else
    console.log('El archivo fue creado');
});
console.log('Última línea del programa');

Como nodejs es asíncrono, veremos que antes de mostrarse el texto "El archivo fue creado" se muestra el texto "Última línea del programa".

Instalación de un módulo

npm install socket.io
forma abreviada:npm i -S socket.io
npm i --g socket.io

El parametro --g hace que el módulo se instale de forma global y esté disponible para todos los usuarios en todos los proyectos. No podremos ejecutar este comando si no somos root.

Tras instalar un módulo, será recomendable reiniciar el servidor para que los cambios surtan efecto

Módulo para actualizar los cambios con express

npm i nodemon
package.json"scripts":{
    // "start": "node ./bin/www"
    "start": "nodemon ./bin/www"
}

Para parar el servidor:

npm stop
app.jsprocess.title = myApp;
scripts.json"scripts": {
    "start": "app.js",
    "stop": "pkill --signal SIGINT myApp" /*process title*/
}

Generación de un proyecto que utilice express

Tenemos dos opciones:

Para arrancar nuestra aplicación en el puerto 3000:

npm start

Si queremos parar node:

ps auxxx | grep node #Este comando nos permite ver los servicios de node que se están ejecutando
kill -9 1480 8573 #Paramos los servicios de node activos

Ejercicios rutas

Crear un nuevo proyecto con nodejs que implemente los siguientes enrutamientos:

icono de mandar un mailPreguntame lo que quieras!
Pablo Monteserín
contacta conmigoPablo Monteserín

El servicio de resolución de dudas técnicas es sólo para los usuarios premium. Si tienes cualquier otra duda, usa el formulario de contacto. ¡Gracias!