26
Backbone.js Francisco Javier Velasco Arjona @javivelasco

Taller backbone.js - Betabeers Córdoba (18/10/2012)

Embed Size (px)

DESCRIPTION

Javier Velasco imparte un completo taller sobre backbone.js y sus usos. 2º Betabeers Córdoba (18/10/2012)

Citation preview

Page 1: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js Francisco Javier Velasco Arjona

@javivelasco

Page 2: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Qué es Backbone.js?

Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.

http://backbonejs.org

Page 3: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Por qué es necesario?

Organiza la estructura de tu app. Simplifica la persistencia en el server-side. Desacopla el DOM de los datos. Sincroniza modelos, colecciones con el DOM.

“Get  your  truth  out  of  the  DOM”  Jeremy  Ashkenas  

Page 4: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

MVC MV*

Modelos que representan el dominio de la aplicación. Vistas que se suelen asociar a UI. Controladores que manejan la interacción.

Backbone.js delega responsabilidades del controlador en las vistas y convierte el controlador en el router

Page 5: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Models

Se genera un objeto modelo por extensión:

Page 6: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Models

Perfecta sincronía con servicios web RESTful:

Page 7: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Models

Custom & built-in events:

Page 8: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Models

Muchos métodos útiles defaults establece valores por defecto clear elimina los atributos toJSON formatea los atributos validate valida al modificar

http://backbonejs.org/#Model

Page 9: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Collections

Las colecciones manejan un conjunto de instancias de modelos

Page 10: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Collections

Para iterar implementa funciones de Underscore.js

Collection Events === Model Events

Page 11: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Views

Se crean de forma similar a los modelos:

Page 12: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Views

Se sobreescribe render para renderizar la vista:

Page 13: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Views

Se pueden crear eventos sobre la vista:

Multiples motores de template: Underscore, Mustache.js, Eco..

Page 14: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Views

Sencilla implementación del observer pattern

Page 15: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Views

Y con una colección

Page 16: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Views

Se utilizan los eventos de las colecciones

Page 17: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Router & history

Varias vistas centradas en el mismo elemento del DOM Al hacer el switch entre vistas, el navegador no cambia de URL Para eso ofrece Backbone.js el router. Until recently, hash fragments (#page) were used to provide these permalinks, but with the arrival of the History API, it’s now possible to use standard URLs (/page). Backbone.Router provides methods for routing client-side pages, and connecting them to actions and events

http://backbonejs.org

Page 18: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Se relacionan rutas con acciones

Router & history

Page 19: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Gracias al pushState se evita el hashbang!

Router & history

Se suele llamar a start incluyéndolo en un método del router A tener en cuenta utilizando pushState API:

El server debe ser capaz de generar la página Los eventos se deben disparar a mano

Page 20: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Zombie views: instanciar modelos, asociarlos a vistas sobre el mismo DOM element. La instancia de modelo cambia, la vista se re-renderiza; es un gran problema. Memory leak: declarar constantemente instancias. Siempre que sea posible hay que instanciar los objetos una vez. RESTful applications: el mapping entre ids debe estar en armonía. Buena integración, pero hay que pensarlo siempre. Otros...

Aspectos importantes

Page 21: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Official Documentation http://backbonejs.org/

Recipes with Backbone.js by Nick Gauthier http://recipeswithbackbone.com/

Developing Backbone Applications by Addy Osmani http://addyosmani.github.com/backbone-fundamentals/

Backbone.js Patterns by Rico Sta Cruz http://ricostacruz.com/backbone-patterns/

Recursos

Page 22: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Example app ¡A poner en práctica!

Page 23: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Arquitectura del sistema

Page 24: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

RESTful

Resource   GET   POST   PUT   DELETE  /films   Obtener  

lista  de  films  Crear  nuevo  film  

-­‐-­‐   -­‐-­‐  

/films/id   Obtener  un  film  

-­‐-­‐   Modificar  un  film  

Eliminar  un  film  

Posibles peticiones al server

Page 25: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Backbone.js

Project skeleton

Disponible en github: https://github.com/javivelasco/betabeers-bbapp-skeleton (.git)

Page 26: Taller backbone.js - Betabeers Córdoba (18/10/2012)

Gracias! Francisco Javier Velasco Arjona

@javivelasco