organización de aplicaciones web con backbone.js

21
Organización de aplicaciones con Backbone.js Diego Cardozo github.com/diegocard/backbone-presentation

Upload: diego-cardozo

Post on 05-Jul-2015

404 views

Category:

Software


4 download

DESCRIPTION

Charla sobre como estructurar aplicaciones web con Backbone.js, presentada en una Meetup local de JavaScript.

TRANSCRIPT

Page 1: Organización de aplicaciones web con Backbone.js

OrganizacióndeaplicacionesconBackbone.js

DiegoCardozo

github.com/diegocard/backbone-presentation

Page 2: Organización de aplicaciones web con Backbone.js

ObjetivosEstacharlanoesuntutorialdeBackboneSecentraeneldiseñodeclienteswebinteligentesVamosausarBackbonecomoejemploVemosconceptosindependientesdelatecnologíaAplicablesaotrasherramientasYdepasoaprendemosalgodeBackbone

Page 3: Organización de aplicaciones web con Backbone.js

¿Queesperoqueselleven?ConceptosútilesparadiseñarclientescomplejosConocimientosbásicosdeBackboneGanasdeaprendermás

ParalosqueconocenBackbone

BuenasprácticasCombinaciónconotrasherramientas

Page 4: Organización de aplicaciones web con Backbone.js

Agenda1. Introducción2. Arquitectura3. Ejemplo4. ComponentesdeBackbone5. Estructurarunaaplicación

Page 5: Organización de aplicaciones web con Backbone.js

Introducción(1)LosclienteswebcuentancadavezconmasrecursosPermiteconstruirclientesmasinteligentesPerolosclientescomplejosconjQuery...

SondifícilesdeconstruírCarecendeestructuraDificultanlareutilizaciónCreartupropiaestructuraseríareinventarlarueda

Page 6: Organización de aplicaciones web con Backbone.js

Introducción(2)

Page 7: Organización de aplicaciones web con Backbone.js

Introducción(3)Backbonebrinda

EstructuraalcódigoJavaScriptenelclienteVariasutilidadesreutilizables

BásicamenteesunframeworkMV*Organizamoselcódigoendistintoscomponentes

ModelosColeccionesVistasTemplatesRouters

Page 8: Organización de aplicaciones web con Backbone.js

Arquitectura(1)

Page 9: Organización de aplicaciones web con Backbone.js

Arquitectura(2)Ventajas

MantenimientomássencilloDistribucióndecargaComienzodeldesarrollomáságilLainterfazessimplementeotroclienteSeprestamuybienparatestingPerfectoparacombinarconaplicacionesmóviles

Page 10: Organización de aplicaciones web con Backbone.js

Ejemplogithub.com/diegocard/backbone-presentation/demo

Page 11: Organización de aplicaciones web con Backbone.js

Componentes(1)Modelo

varUser=Backbone.Model.extend({urlRoot:'/users'});

Page 12: Organización de aplicaciones web con Backbone.js

Componentes(2)Colección

varUsers=Backbone.Collection.extend({url:'/users'});

Page 13: Organización de aplicaciones web con Backbone.js

Componentes(3)Vista

varUserListView=Backbone.View.extend({el:'.page',render:function(){varthat=this;varusers=newUsers();users.fetch({success:function(users){vartemplate=_.template($('#user-list-template').html(),{users:users.models});that.$el.html(template);}})}});

Page 14: Organización de aplicaciones web con Backbone.js

Componentes(4)Manejodeeventos

varUserEditView=Backbone.View.extend({el:'.page',events:{'submit.edit-user-form':'saveUser','click.delete':'deleteUser'},saveUser:function(ev){varuserDetails=$(ev.currentTarget).serializeObject();varuser=newUser();user.save(userDetails,{success:function(user){router.navigate('',{trigger:true});}});}});

Page 15: Organización de aplicaciones web con Backbone.js

Componentes(5)Template

<scripttype="text/template"id="user-list-template"><ahref="#/new"class="btnbtn-primary">New</a><hr/><tableclass="tablestriped"><thead><tr><th>FirstName</th><th>LastName</th><th>Age</th><th></th></tr></thead><tbody><%_.each(users,function(user){%><tr><td><%=htmlEncode(user.get('firstname'))%></td><td><%=htmlEncode(user.get('lastname'))%></td><td><%=htmlEncode(user.get('age'))%></td><td><aclass="btn"href="#/edit/<%=user.id%>">Edit</a></td></tr><%});%></tbody></table></script>

Page 16: Organización de aplicaciones web con Backbone.js

Componentes(6)Router

varRouter=Backbone.Router.extend({routes:{"":"home","edit/:id":"edit","new":"edit",}});

Page 17: Organización de aplicaciones web con Backbone.js

Estructura(1)UsarBackbonenoesgarantíadeprolijidadSeprecisaestructurarymodularizarlaaplicaciónParaestoutilizamosRequire.jsEncontréunexcelenteejemploen:

backbonetutorials.com/organizing-backbone-using-modules

Page 18: Organización de aplicaciones web con Backbone.js

Estructura(2)Estructurasugerida

Raíz├──imgs├──css│└──style.css├──templates│├──projects││├──list.html││└──edit.html│└──users│├──list.html│└──edit.html├──js│├──libs││├──jquery│││├──jquery.min.js││├──backbone│││├──backbone.min.js││└──underscore│││├──underscore.min.js│├──models││├──users.js

Page 19: Organización de aplicaciones web con Backbone.js

Estructura(3)Ejemplo:Listadeproyectos

define(['jquery','underscore','backbone',//Usandoelplugintext!deRequire.js,//cargamoslastemplatescomotextoplano'text!templates/project/list.html'],function($,_,Backbone,projectListTemplate){varProjectListView=Backbone.View.extend({el:$('#container'),render:function(){//CompilamoslatemplateusandoUnderscore//yagregarlaplantillaalelementodelavistavardata={};varcompiledTemplate=_.template(projectListTemplate,data);this.$el.append(compiledTemplate);}});returnProjectListView;//Retornarlavista});

Page 20: Organización de aplicaciones web con Backbone.js

Recursos

backbonejs.orgbackbonetutorials.comaddyosmani.github.io/backbone-fundamentalsgithub.com/diegocard/backbone-presentation

Page 21: Organización de aplicaciones web con Backbone.js

¿Preguntas?