Node.js 101

Fundamentos

Julián Duque

Ingeniero en NodeSource

Organizador MedellinJS

http://about.me/julianduque - @julian_duque

Primer Capítulo

¿Qué es Node.js?

Node.js es una plataforma construida sobre el runtime de JavaScript de Google Chrome V8 para construir facilmente aplicaciones de red rápidas y escalables

Node.js utiliza un modelo orientado a eventos, con I/O no bloqueante que lo hace liviano y eficiente

Node.js no es un lenguaje

Node.js no es un framework

El ecosistema de paquetes de Node.js, npm, es el mas grande ecosistema de librerias open source en el mundo

Segundo Capítulo

¿Por qué Node.js?

Bloqueante vs No-Bloqueante

console.log('Fetching article...')

var result = query("SELECT * FROM articles WHERE id = 1")

console.log('Here is the result:', result)

En plataformas típicas de programación, las operaciones I/O son bloqueantes

Esperar por I/O es un desperdicio

Mientras esperamos por operaciones I/O nuestro programa es incapaz de hacer otro tipo de operaciones, este es un gran desperdicio de recursos

I/O esta usualmente escondido

System.out.println("Reading file...");
BufferedReader br = new BufferedReader(new FileReader("in.txt"));

try {
  StringBuilder sb = new StringBuilder();
  String line;

  while ((line = br.readLine()) != null)
    sb.append(line + "\n");
  System.out.print(sb.toString());
} finally {
  br.close();
}

System.out.println("Finished reading file!");

Las operaciones de I/O no son faciles de reconocer

Programación Orientada a Eventos

No bloquee el I/O

function handleResult(result) {
  console.log('Here is the result:', result)
}

select('SELECT * FROM articles WHERE id = 1', handleResult)

console.log('Fetching article...')
  • Continúa ejecutando código
  • Escucha un evento (el resultado está listo)
  • Cuando el evento es ejecutado, realice operaciones sobre el resultado

¿Event Loop?

 

Filosofía Node.js

Core Pequeño, Un Vibrante Ecosistema

Tercer Capítulo

Demos

Mucha cháchara, más acción!

Muchas Gracias!