La historia de Javascript es bastante curiosa, por así decirlo. Este lenguaje de programación a diferencia de otras tecnologías web ha pasado de menos a más, lo cual habla muy bien del mismo.
En sus primeros años Javascript no se pensó como un lenguaje de programación, sino más bien una extensión de Html, tres funciones locas que algo simple, una validación, una ventana popup, un cartel de advertencia, nada más. Pero con el paso del tiempo Javascript ha adquirido terreno importante en la web, con la llegada de Ajax para comunicar al navegador con el servidor sin tener que recargar la página o bien con librerías como Jquery, le dio al navegador un potencial que hasta ese momento sólo se conseguía con tecnologías como Flash. Como un jugador que entra a la cancha para ayudar a sus compañeros y con el paso del tiempo termina convirtiéndose en la estrella del equipo, eso es para mí Javascript.
Node.js, ¿Qué es eso?
Lo primero que te dicen cuando preguntás es: «Javascript en el servidor», ¿pero cómo si Javascript no corre en el servidor? Node.js es una tecnología con pocos años, vio la luz a finales del 2009 presentada por su creador Ryan Dahl, es un lenguaje de programación en el servidor como PHP, Asp, Ruby on Rails, etc; pero con la sintaxis de Javascript.
Ahora bien, antes de empezar voy a aclarar un punto que aclaré cuando publiqué el primer posteo de Ruby on Rails. Todo lo que suba a este blog está orientado a personas que recién se inician en Node, por tanto si ya tenés conocimientos avanzados del lenguaje de poco te servirá estas publicaciones. Porque aquí yo no voy a enseñarte Node.js, sino que vamos a aprender juntos y desde cero.
Programación orientada a eventos
Mientras escribo esto mi experiencia con Javascript y con PHP, este último como lenguaje de servidor, es de 4 ó 5 años. Sin embargo desde que empecé a ver Node.js me sucedieron dos cosas. En primer lugar, como dije antes, la sintaxis es la misma que Javascript, con la diferencia, claro ésta, que el Javascript que todos conocemos se usa para crear funcionalidad en un botón, animar un div, etc; mientras que Node.js procesa una petición web, se conecta a una base de datos y todo lo que hace cualquier lenguaje de servidor. Y segundo, si venís como yo de PHP te digo desde ya que que Node.js y PHP lo único que tienen en común es que ambos son lenguajes de servidor, más nada, ambos trabajan en forma muy diferente.
En PHP el código se lee de izquierda a derecha, de arriba hacia abajo, el intérprete lee el código paso a paso y devuelve una respuesta al navegador. Node.js se programa con eventos, este concepto es difícil de entender, y más difícil para mí es explicarlo. El profesor Jesús Conde define a los eventos en español como escuchas o vigilantes. Osea un evento es un objeto que espera qué suceda algo para disparar una acción.
Si hicieron un ejemplo con cosas de la vida real, un evento podría tener un detector de humo, que es un aparato que está esperando todo el tiempo algo: que haya humo, lo cual hará que en el momento que suceda eso se dispare una acción, el aparato comenzará a sonar. Ahora en un ejemplo más relacionado con Node, podríamos usar al mismo servidor, por ejemplo el servidor estará esperando que un usuario se conecte para incrementar de a 1, en un contador de visitas.
¿Por qué tengo que aprender Node.js y qué puede hacer?
Los que venimos del mundo de PHP estamos un poco cansados de tanto Framework tras Framework, o que sí PHP, Asp, Java, Ruby on Rails, Python; desde mi punto de vista estas herramientas son muy poderosas, pero no tenemos por qué saber todas, a veces es mejor tener fuertes conocimientos de algo específico que saber un poquito de cada una. Sin embargo Node.js trae consigo una nueva forma de encarar la web, es algo diferente, tal vez con el paso del tiempo te guste o no, pero no podrás negar que intentaste algo nuevo.
Con Node podremos hacer cualquier cosa que podamos hacer con cualquier otra tecnología, además éste nos permitirá crear aplicaciones en tiempo real, por ejemplo un chat. Node nos da la posibilidad de construir aplicaciones bidireccionales, osea el Ajax no sólo será un envío del navegador al servidor, sino también del servidor al navegador. Pero esto ya lo veremos más adelante.
Instalación
Para empezar a probar cosas con Node simplemente debemos ir a su página y descargarnos el instalador e instalarlo:
Una vez instalado vamos a abrir la consola de comandos, si estás en windows yendo a Inicio -> Todos los programas -> Accesorios -> Símbolo de sistema, y una vez dentro vamos a escribir el comando:
node
![]()
Una vez dentro vamos a escribir cualquier cosa como por ejemplo:
"Hola mundo"

Si todo ha salido bien, entonces significa que Node funciona correctamente en nuestro sistema. Para salir del modo REPL tendrás que pulsar ctrl + D.
Hola mundo
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, pero OJO, esto en Node es muy fácil, así que no te asustes, de hecho crear nuestro propio servidor nos da muchas ventajas.
Seguramente si tenés instalado Windows como yo, Node debería haberse instalado en C:\Program Files\nodejs, si no es así entonces tendrás que buscar la ubicación en donde se realizó la instalación dentro de la carpeta Nodejs.
Vamos a ir dentro de esa carpeta nodejs y dentro vamos a crear otra llamada holamundo. Luego vamos a entrar dentro de ésta y vamos a crear ahí un archivo con extensión .js llamado holamundo.js. Y este archivo vamos a editarlo con el siguiente código:
var http = require('http');
http.createServer(function(peticion, respuesta){
respuesta.writeHead(200, 'text/plain');
respuesta.end('Hola mundo.');
}).listen(3000, '127.0.0.1');
console.log('El servidor esta funcionando correctamente en https://localhost:3000/');
Ahora vamos a abrir nuevamente la consola de comando y vamos a entrar dentro de la carpeta holamundo con el comando cd y la ubicación al mismo, en mi caso:
cd C:\Program Files\nodejs\holamundo
ahora ya estamos ubicados dentro de nuestro primer proyecto Node.js.
![]()
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 https://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:
https://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:
var http = require('http');
Incluimos el módulo http, el cual nos permitirá procesar y responder mensajes de un servidor web. A su vez esa variable http es un objeto que tiene un método, o mejor dicho un evento .createServer() que recibirá como parámetro una función callback, osea una función que se disparará cada vez que haya una petición nueva en nuestro sitio. De esta manera nosotros vamos entendiendo de a poco a qué se refiere con programación orientada a eventos, a http le asignamos un evento que escucha, que vigila cada petición que entra y ejecuta una función anónima:
http.createServer(function(peticion, respuesta){
respuesta.writeHead(200, 'text/plain');
respuesta.end('Hola mundo.');
}).listen(3000, '127.0.0.1');
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');
Mientras que .end():
respuesta.end('Hola mundo.');
Nos servirá para finalizar la respuesta con el texto que finalmente leerá el navegador.
Además debemos indicarle mediante al método listen() el puerto y la url en dónde escuchará la petición nuestra aplicación:
.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.');
Por algo como esto:
var codigo_html = '<html> <head> <title> Ejemplo de hola mundo </title> </head> <body> Hola mundo </body> </html>'; respuesta.writeHead(200, 'text/html'); respuesta.end(codigo_html);
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á:
var http = require('http');
http.createServer(function(peticion, respuesta){
var codigo_html = '<html> <head> <title> Ejemplo de hola mundo </title> </head> <body> Hola mundo </body> </html>';
respuesta.writeHead(200, 'text/html');
respuesta.end(codigo_html);
}).listen(3000, '127.0.0.1');
console.log('El servidor esta funcionando correctamente en https://localhost:3000/');
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
Al visitar nuevamente la dirección:
https://localhost:3000/
Veremos nuevamente un ‘Hola mundo’ pero con código Html.
Siguiente: Introducción a Node.js, parte 2: Crear página estática

Me ha encantado lo bien que lo explicas. Llevaba dándome de cabezazos con esto toda la mañana, hasta que he encontrado tu página.
Mil gracias!!
Gracias a vos, Sara, por pasarte y firmar. Espero sigas con Node, de a poquito vamos aprendiendo todos juntos de esta nueva y maravillosa tecnología.
Que tengas un lindo día.
Saludos!
La verdad… muy buen tutorial, me encanto como lo explicaste todo, lo entendi todo a la primera dando una pasada rapida, cuando tenga un momento lo leo con mas calma, pero la verdad, encantado, no pares de escribir tutoriales!
Gracias!
Gracias a vos por comentar.
Saludos!
Que bueno, entendí muy bien la primera parte, espero que sigas en esa línea ya que pretendo sumergirme en este lenguaje. Gracias Ferchu por darte el tiempo para preparar estos temas.
Gracias a vos por comentar.
Que tengas un buen día.
Saludos!
Pienso igual que todos esta genial explicado.
Gracias.
Gracias a vos comentar.
Saludos!
De verdad muy interesante muchos de los tutoriales que encontre no llegaron a explicar muchas cosas de lo que tu hiciste…
yo intente aprender STYLUS y NIB pero bueno no pude asi que preferi comenzar desde Inicio = 0 jajaja bueno muchas gracias y de verdad espero podamos ver mas de tu aporte Mil Gracias
Gracias a vos Adrián, por comentar.
Saludos!
Muy bien explicado, si señor!
Mil gracias !!!! todo muy bien explicado….
Gracias a vos por comentar, Marilyn.
Saludos!
Muy agradecido, de veras.
No hay demasiada información de calidad sobre este tema.
Muchos estamos muy perdidos todavía con esto.
Casi, repito «casi», hecho de menos mis días de programación con Visual Basic .NET + Access. Solo usaba 2 lenguajes (VB y SQL) y 2 programas.
Ahora aprendo, uso o usaré: Node.js + HTML5 + CSS3 + JavaScript + Type Script + SASS + Bootstrap + JQuery + MySQL + WebStorm + Emmet + Ajax + Font Awesome + Heidi SQL + FlySpeed SQL … y de momento nada más.
🙂
Gracias a vos por comentar José Luis.
Saludos!
Y EN LINUX?