Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Node JS es un intérprete Javascript del lado del servidor que cambia la noción de cómo
debería trabajar un servidor. Su meta es permitir a un programador construir aplicaciones
altamente escalables y escribir código que maneje decenas de miles de conexiones
simultáneas en una sólo una máquina física.
Instalación
Node
"Hola mundo"
Si todo ha salido bien, entonces significa que Node funciona correctamente en nuestro
sistema y desplegará el mensaje. El servidor Node JS, también se puede verificar creando
un bucle que imprima los primeros números naturales
Podemos utilizar la función setTimeout(), que nos sirve para ejecutar instrucciones con un
retardo expresado en milisegundos.
setTimeout(function() {
console.log('Hola NodeJS');
}, 3000);
setInterval(function() {
console.log('Hola NodeJS');
}, 1000);
Si hacemos una inevitable comparación de Node con PHP, para programar en nuestra
máquina debemos instalar algún intérprete Apache, como Xampp por ejemplo, una vez
instalado ya tenemos listo nuestro servidor para a crear nuestros proyectos. Esto en
Node.js funciona de forma diferente, ya que aquí nosotros tendremos que crear nuestro
propio servidor.
En Windows, Node debería haberse instalado en C:\Program Files\nodejs, si no es así
entonces se debe buscar la ubicación en donde se realizó la instalación dentro de la
carpeta Nodejs.
cd C:\Program Files\nodejs\holamundo
Una vez dentro vamos a compilar el archivo que acabamos de crear con el
comando node y el nombre del archivo:
node holamundo.js
Si todo ha salido bien la consola te responderá con el mensaje: ‘El servidor esta
funcionando correctamente en http://localhost:3000/’
Y ahora para probar que nuestro servidor en serio está funcionando correctamente vamos
a abrir un navegador cualquiera y escribir la siguiente dirección:
http://localhost:3000/
Si todo ha salido bien aparecerá el mensaje “Hola mundo”
Ahora vamos a analizar las líneas del código que acabamos de escribir:
Esta función a su vez recibirá dos parámetros, uno será el request o petición, un objeto
que contendrá información como por ejemplo la url que está visitando el cliente, y un
segundo parámetro que también es un objeto que nos permitirá responder al navegador.
Con el método writeHead() definiremos la salida 200 con un texto plano, osea sin html, ni
nada, sólo texto:
respuesta.writeHead(200, 'text/plain');
respuesta.end('Hola mundo.');
Nos servirá para finalizar la respuesta con el texto que finalmente leerá el navegador.
.listen(3000, '127.0.0.1');
En nuestro caso el puerto 3000 y la dirección 127.0.0.1.
Si en cambio quisiéramos devolver una salida HTML en lugar de texto plano deberíamos
reemplazar:
respuesta.writeHead(200, 'text/plain');
respuesta.end('Hola mundo.');
Aquí la cabecera que devolverá el servidor al navegador será mediante código html:
respuesta.writeHead(200, 'text/html');
Y obviamente el código html que podrá interpretar el navegador del cliente. El código
finalmente quedará:
Ahora vamos a volver a la consola y vamos a escribir ctrl + C para detener nuestro
servidor y una vez más vamos a escribir:
node holamundo.js
http://localhost:3000/
Algo bastante útil a la hora de recoger datos en una petición, en una página web, son las
variables de tipo GET. Variables que son visibles en la url lo cual nos permite por ejemplo
darle un aspecto de tipo dinámico a la misma, por ejemplo un buscador, en donde se
recuperan variables dependerán de los valores que se pasen por la url.
Una URL con una variable de tipo GET tiene un aspecto como éste:
http://mipagina/?productos=zapatos
http://mipagina/?productos=zapatos&color=negro
Vamos a crear tres grupos de animales: aves, mamíferos y reptiles y los mostraremos en
un combo y al seleccionar uno nos devolverá un listado de animales que pertenecen al
mismo.
Para ello vamos a crear una carpeta nueva dentro de nuestros proyectos y dentro un
archivo index.js y un directorios llamado módulos, y dentro de este último un archivo
llamado animales.js
var lista = { 'aves': new Array('Loro' , 'Canario'), 'mamiferos': new Array('Perro' , 'Caballo' ,
'Tigre'), 'reptiles': new Array('Cocodrilo', 'Tortuga', 'Iguana') };
function dibujarCodigoHtml(grupo){
var html = '<!DOCTYPE html>';
html += '<html>';
html += '<head>';
html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
html += '</head>';
html += '<body>';
html += '<form action="">';
html += '<label> Seleccione el tipo de animal: </label>';
html += '<select name="grupo"> ' + listarGrupos(grupo) + ' </select>';
html += '<input type="submit" value="Listar" />'; html += '</form>';
html += listarAnimales(grupo);
html += '</body>'; html += '</html>';
return html; }
A su vez dentro de ésta se llamarán a otras dos, listarGrupos(), que recibirá como
parámetro el grupo actual y nos devolverá un listado con todos los grupos:
function listarGrupos(grupo){
var html = '<option value=""> --- </option>';
var selected;
for (var item in lista) {
selected = (item == grupo) ? 'selected="selected"' : '';
html += '<option '+selected+' value="'+item+'"> ' + item + ' </option>';
}
return html;
}
function listarAnimales(grupo){
var html = '';
if(lista[grupo] != undefined){
html += '<ul>';
for (var i in lista[grupo]) {
html += '<li>' + lista[grupo][i] + '</li>';
}
html += '</ul>';
}
return html;
}
exports.dibujarCodigoHtml = dibujarCodigoHtml;
Para probar la aplicación, es necesario activar el servidor (index.js) desde la consola
La diferencia entre enviar formularios por GET a enviarlos por POST radica, que mediante
el primero estos serán visibles en la URL, mientras que por POST estarán ocultos. Enviar
un formulario GET sería muy útil para por ejemplo un buscador, ya que luego podría
copiarse esa URL para recuperar la búsqueda. Mientras que POST sería útil para un
formulario de Login por ejemplo, ya que esos datos no deberían mostrarse en la URL al
enviar el formulario.
if(peticion.method == 'POST')
Por eso, una vez recuperados los datos utilizamos el evento on() nuevamente pero con el
valor ‘end’, osea cuando ha finalizado:
peticion.on('end', function(){
var data_post_objeto = querystring.parse(data_post);
mensajes_lista.push({nombre: data_post_objeto.nombre, mensaje:
data_post_objeto.mensaje});
respuesta.writeHead(200, {'Content-Type': 'text/html'});
respuesta.end(mensajes.dibujarCodigoHtml(mensajes_lista)); });
Express es un Framework que nos permitirá acceder a las funcionalidades que nos
provee Node, pero en forma mucho más fácil y rápida.Node es autosuficiente, es decir
que al igual que otros lenguajes de programación como PHP, no necesita de un
framework, no tiene un límite, y todo lo que podemos hacer con un framework, lo
podemos hacer sin éste. Sin embargo, para agilizar los tiempos de desarrollo de
aplicaciones basadas en este tipo de arquitecturas, es de mucha importancia utilizar un
framework que nos agilice el trabajo.
Instalación
Vamos a entrar dentro de nuestra carpeta de nodejs, por ejemplo en de los usuarios
Windows, debería estar en la siguiente ruta “C:\Program Files\nodejs”:
cd C:\Program Files\nodejs
Como todo framework, Express presenta un esqueleto con directorios que nos permitirán
separar las distintas funcionalidades del sistema como por ejemplo las vistas. Para
instalar ese árbol de directorios, vamos a posicionarnos dentro de la carpeta nodejs, y ahí
dentro vamos a crear una nueva carpeta a la que yo voy a llamar: “proyecto1”
cd proyecto1
express
Una vez creado el esqueleto nos informará que sería bueno instalar también las
dependencias
npm install
Ya con nuestro proyecto instalado podemos iniciarlo. Si entramos ahora dentro del mismo
veremos que hay un archivo llamado app.js. Éste es nuestro archivo principal, así que
vamos a compilarlo:
node app.js
La aplicación por defecto escuchará en el puerto 3000, sin embargo, puede ser que en el
sistema de este puerto esté ocupado por otro programa, y entonces devolverá un error
por consola. Para solucionar esto vamos se debe editar ese archivo app.js, y vamos a
buscar la línea:
http://localhost:3000/
En algunos casos, se muestra por pantalla un mensaje de error con algo como: “doctype
5` is deprecated, para solucionarlo , se debe editar el archivo dentro de nuestro proyecto
a view -> layout.jade y buscar:
doctype 5
doctype
Para hacer una pequeña prueba, vamos a editar este archivo y vamos a buscar las
siguientes líneas:
app.get('/', routes.index);
app.get('/users', user.list);
Aquí por defecto la aplicación está definiendo dos acciones mediante el evento get().
Acciones que podrán ser accedidas desde la página principal y el path ‘/users’. Vamos a
crear nuestra propia acción agregando debajo de esas líneas lo siguiente:
app.get('/prueba', function(req, res){
res.send('Acción de prueba'); });
http://localhost:3000/prueba