APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos...

46
SERGIO GARCÍA MONDARAY APLICACIONES WEB CON NODEJS + EXPRESS + EJS

Transcript of APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos...

Page 1: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

SERGIO GARCÍA MONDARAY

APLICACIONES WEB CON NODEJS + EXPRESS + EJS

Page 2: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Tipos de aplicaciones web

NodeJS

Express

EJS

Patrones habituales

APLICACIONES WEB CON NODEJS + EXPRESS + EJS

Contenido

Page 3: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

SPA

TIPOS DE APLICACIONES WEB

/ PAGE-REDRAW

Page 4: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

TIPOS DE APLICACIONES WEB

PAGE-REDRAW (multi-page)

SPA (single-page)

Page 5: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

TIPOS DE APLICACIONES WEB

Enfoque clásico del desarrollo web: el cliente solicita páginas y el servidor las construye.

Los navegadores web fueron diseñados para este tipo de aplicaciones.

Son perfectas para SEO (Search Engine Optimization).

Hay muchos lenguajes y frameworks diseñados para construir este tipo de aplicaciones.

PAGE-REDRAW

Page 6: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

TIPOS DE APLICACIONES WEB

PAGE-REDRAW

CLIENTE SERVIDOR

GET

HTML

form POST

HTMLRe

fresh

Page 7: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

TIPOS DE APLICACIONES WEB

PAGE-REDRAW

CLIENTE SERVIDOR

GET

HTML

Ajax POST

Page 8: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

TIPOS DE APLICACIONES WEB

PAGE-REDRAW

CLIENTE SERVIDOR

GET

HTML

GET

HTMLRe

fresh

Page 9: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

TIPOS DE APLICACIONES WEB

Enfoque moderno: el cliente solicita una única página una sola vez.

El resto de peticiones (Ajax/Websockets) no devuelven HTML.

Mayor lógica en el lado del cliente.

Los navegadores web no están tan preparados.

Empiezan a surgir frameworks SPA, como AngularJS, Ember, Meteor…

SPA (SINGLE-PAGE APP.)

Page 10: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

TIPOS DE APLICACIONES WEB

SPA (SINGLE-PAGE APP.)

CLIENTE SERVIDOR

GET

HTML

GET/POST/PUT

JSON

RefreshNEVER

Page 11: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

TIPOS DE APLICACIONES WEB

PARA HOY:PAGE-REDRAW

Page 12: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

NODE JSJAVASCRIPT EN EL SERVIDOR

Page 13: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Javascript en el servidor

Javascript autónomo

Peticiones: mejor muchas pequeñas que pocas grandes

Single-Thread

Orientado a eventos (no bloqueante)

NODE JS

Page 14: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

NODE JS

Page 15: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

NODE JS

Ejecución normal

Page 16: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

NODE JS

Ejecución en cluster

Page 17: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Hello worldServidor básico con NodeJS

$ curl “localhost:3000”Hello world

NODE JS

Page 18: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

EXPRESSHTTP PARA SERES HUMANOS

Page 19: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

EXPRESS

Framework web para NodeJS

Inspirado en Sinatra

Dependiente de Connect

Para webs SPA o Multi-page

Perfecto para APIs

Es una capa fina

Express 4.0+ no dependerá de Connect

¿Qué es?

Page 20: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

EXPRESSPopularidad

Page 21: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

EXPRESSEn el mundo real

MySpace

LearnBoost

Persona (Mozilla)

Cozy

Apiary.io

+26k aplicaciones web

Page 22: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Hello world

var express = require('express');var http = require('http');var app = express();!app.get('/', function (req, res) { res.send(‘Hello world’);});!http.createServer(app).listen(3000);

Servidor básico con Express

EXPRESS

$ curl “localhost:3000”Hello world

Page 23: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Servir archivos estáticosEXPRESS

app.js

public/hello.txt

Page 24: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Body

EXPRESS

Page 25: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Body

• HTTP 200 • Content-Length • Content-Type:

JSON

EXPRESS

Page 26: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Query

EXPRESS

Page 27: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Params

EXPRESS

Page 28: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

EJSHTML PROGRAMADO

Page 29: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

EXPRESS

Sistema de plantillas HTML

Utiliza Javascript para programar el HTML

En cliente y en servidor

¿Qué es?

Page 30: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Hello worldServidor básico con Express + EJS

var express = require('express');var http = require('http');var app = express();app.set('view engine', 'ejs');!app.get('/', function (req, res) { res.render('index', { title: ‘Hello', text: ‘world' });});!http.createServer(app).listen(3000);

<h1> <%= title %></h1><p> <%= text %></p>

$ curl “localhost:3000”<h1>Hello</h1><p>world</p>

app.js bash

views/index.ejs

EJS

Page 31: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Reemplazo por valor, escapado. Para tipos básicos.

<h1> <%= title %></h1>

$ curl “http://localhost:3000”!<h1>hello</h1>

views/index.ejs bash

EJS<%= … %>

...res.render('index', { title: ‘hello’});...

app.js

Page 32: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Reemplazo por valor, escapado. Para tipos básicos.

<h1> <%= title %></h1>

$ curl “http://localhost:3000”!<h1>a &lt; b</h1>

views/index.ejs bash

EJS<%= … %>

...res.render('index', { title: ‘a < b’});...

app.js

Page 33: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Reemplazo por valor, literal. Para tipos básicos.

<h1> <%- title %></h1>

$ curl “http://localhost:3000”!<h1>a < b</h1>

views/index.ejs bash

EJS<%- … %>

...res.render('index', { title: ‘a < b’});...

app.js

Page 34: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Código JS crudo, para ser ejecutado.

<h1> <% title %></h1>

$ curl “http://localhost:3000”!<h1></h1>

views/index.ejs bash

EJS<% … %>

...res.render('index', { title: ‘a < b’});...

app.js

Page 35: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Código JS crudo, para ser ejecutado.

<% if (false) { %> hola<% } else { %> <%- title %><% } %>

$ curl “http://localhost:3000”!a < b

views/index.ejs bash

EJS<% … %>

...res.render('index', { title: ‘a < b’});...

app.js

Page 36: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Código JS crudo, para ser ejecutado.

<% var a = 2; %>hello <%- a %>

$ curl “http://localhost:3000”!hello 2

views/index.ejs bash

EJS<% … %>

...res.render('index', { title: ‘a < b’});...

app.js

Page 37: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

ASPECTOS AVANZADOSPATRONES HABITUALES

Page 38: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Control de acceso

Disposición de rutas

Esquema típico de una aplicación

Modelo compartido

PATRONES HABITUALES

Page 39: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Control de acceso (con clave)PATRONES HABITUALES

Page 40: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

PATRONES HABITUALESControl de acceso (con sesiones)

Page 41: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Disposición de rutasPATRONES HABITUALES

app.js

routes/ sample.js

Page 42: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Esquema de una aplicación

PATRONES HABITUALES

Estáticos

Rutas

Vistas

Page 43: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Modelo compartido

PATRONES HABITUALES

model/Persona.js

Page 44: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Modelo compartido

PATRONES HABITUALES

app.js

Page 45: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

Modelo compartido

PATRONES HABITUALES

public/model.html

Page 46: APLICACIONES WEB CON NODEJS + EXPRESS + EJSfiles.meetup.com/2301351/nodejs+express+ejs.pdf · Tipos de aplicaciones web NodeJS Express EJS Patrones habituales APLICACIONES WEB CON

GRACIAS POR SU ATENCIÓN

SERGIO GARCÍA MONDARAY@sgmonda

https://github.com/sgmonda [email protected]