Slide 1

Slide 1 text

Backbone.js Francisco Javier Velasco Arjona @javivelasco

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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  

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Backbone.js Models Se genera un objeto modelo por extensión:

Slide 6

Slide 6 text

Backbone.js Models Perfecta sincronía con servicios web RESTful:

Slide 7

Slide 7 text

Backbone.js Models Custom & built-in events:

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Backbone.js Collections Las colecciones manejan un conjunto de instancias de modelos

Slide 10

Slide 10 text

Backbone.js Collections Para iterar implementa funciones de Underscore.js Collection Events === Model Events

Slide 11

Slide 11 text

Backbone.js Views Se crean de forma similar a los modelos:

Slide 12

Slide 12 text

Backbone.js Views Se sobreescribe render para renderizar la vista:

Slide 13

Slide 13 text

Backbone.js Views Se pueden crear eventos sobre la vista: Multiples motores de template: Underscore, Mustache.js, Eco..

Slide 14

Slide 14 text

Backbone.js Views Sencilla implementación del observer pattern

Slide 15

Slide 15 text

Backbone.js Views Y con una colección

Slide 16

Slide 16 text

Backbone.js Views Se utilizan los eventos de las colecciones

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Backbone.js Se relacionan rutas con acciones Router & history

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

Example app ¡A poner en práctica!

Slide 23

Slide 23 text

Backbone.js Arquitectura del sistema

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

Gracias! Francisco Javier Velasco Arjona @javivelasco