SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
Filipe Giusti
Roadmap
● Introdução
● Básico
○
○
○
○
○

Características
Model
View
Eventos
Router

● Além
Introdução
● Estrutura mínima para uma app decente
● Release inicial 10/2010
● MV alguma coisa
○ Porque sempre tem MV?

● Única dependência: Underscore.js
○ Para usar router e persistência: jQuery ou Zepto

● Comunidade: suficiente
Básico - Características
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.
Básico - Model
// Our basic **Todo** model has `title`, `order`, and `completed` attributes.
app.Todo = Backbone.Model.extend({
defaults: {
title: '',
completed: false
},

// Toggle the `completed` state of this todo item.
toggle: function () {
this.save({completed: !this.get('completed')});
}
});
var todo1 = new app.Todo({title: 'First title', order: 1});
Básico - Model
●
●
●
●
●
●
●

initialize
get & set
id
attributes
changedAttributes
parse
toJSON
Básico - Model
● Observer pattern
● Validação
○ isValid - validation
○ Backbone.validation

● Relações
○ backbone-relational.js
○ backbone-associations
○ supermodel.js
Básico - Model
● Persistência
○
○
○
○
○
○

url - urlRoot
parse
sync - fetch - save - destroy
REST JSON
LocalStorage?
Websockets?
Básico - Model - Persistência
app.Todo = Backbone.Model.extend({
urlRoot: '/todos'
});
var todo2 = new app.Todo({title: 'First title', order: 1});
var todo3 = new app.Todo({id: 5, title: 'First title', order:
1});
todo2.url(); // "/todos"
todo3.url(); // "/todos/5"
Básico - Model - Collections
app.TodosCollection = Backbone.Collection.extend({
model: app.Todo
});
var todos = new app.TodosCollection([todo2, todo3]);
todos.length; // 2
todos.fetch();
todos.create({});
todos.add(todo2);
Backbone.sync(method, model, options);

E diversos métodos do Underscore.js.
Básico - View
● Duas partes
○ Declarativa
■ el
■ model binding
■ events
○ Procedural
■ render
■ Controller
Básico - View
app.TodoView = Backbone.View.extend({
el: '#todo',
events: {
'keypress .edit': 'updateOnEnter',
'blur .edit':
'close'
},
render: function() {
return this.$el.html( TemplateEngine.run( this.model.toJSON() ) );
},
close: function() { // executed when todo loses focus },
updateOnEnter: function( e ) { // executed on each keypress when in todo edit mode }
});
var todoView = new app.TodoView({model: todo2});
todoview.render();
Básico - Eventos
Backbone.on('event', function() {console.log('Handled Backbone event');});
Backbone.trigger('event'); // logs: Handled Backbone event

● on - off - trigger - once - listenTo
● Eventos do backbone
○ add - remove - reset - sort - change - error - route

● Custom
Básico - Router
app.TodoRouter = Backbone.Router.extend({
routes: {
"about" : "showAbout",
/* http://example.com/#about */
"todo/:id" : "getTodo",
/* http://example.com/#todo/5 */
"todos/:id/download/*documentPath" : "downloadDocument",
/* http://example.com/#todos/5/download/files/Meeting_schedule.doc */
},
showAbout: function(){
},
getTodo: function(id){
},
getTodo: function(id, path){
}
});
var myTodoRouter = new app.TodoRouter();
Backbone.history.start();
myTodoRouter.navigate('todo/5');
Além do Backbone
● Funcionalidade ausentes
○ Atributos virtuais
○ Hierarquia nas views
○ Form validation

● Marionette
○ Seta alguns padrões como o template
○ Facilita as views
■ Subview, regions, layout

● Crescimento da aplicação
Referências
● http://backbonejs.org/
● http://todomvc.com/architectureexamples/backbone/
● http://addyosmani.github.io/backbonefundamentals/

Weitere ähnliche Inhalte

Was ist angesagt?

BDD com Easyb
BDD com EasybBDD com Easyb
BDD com EasybIsmael
 
Backbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectadosBackbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectadosHenrique Gogó
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scopeCarlos Santos
 
T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)Carlos Santos
 
Workshop React Hooks
Workshop React HooksWorkshop React Hooks
Workshop React HooksDan Vitoriano
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JSRodrigo Urubatan
 
Zend Framework 1.11
Zend Framework 1.11Zend Framework 1.11
Zend Framework 1.11Cezar Souza
 
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Rodrigo Urubatan
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasRodrigo Branas
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Julian Cesar
 

Was ist angesagt? (12)

Angular js
Angular jsAngular js
Angular js
 
BDD com Easyb
BDD com EasybBDD com Easyb
BDD com Easyb
 
Spa com Vue.js
Spa com Vue.jsSpa com Vue.js
Spa com Vue.js
 
Backbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectadosBackbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectados
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
 
T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)
 
Workshop React Hooks
Workshop React HooksWorkshop React Hooks
Workshop React Hooks
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
Zend Framework 1.11
Zend Framework 1.11Zend Framework 1.11
Zend Framework 1.11
 
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 

Andere mochten auch

BIMobject for manufacturers 2013
BIMobject for manufacturers 2013BIMobject for manufacturers 2013
BIMobject for manufacturers 2013BIMobject
 
Webvisions talk 2015 09252015 final
Webvisions talk 2015 09252015 finalWebvisions talk 2015 09252015 final
Webvisions talk 2015 09252015 finalSusan Mercer
 
Microsoft word mengurus perubahan
Microsoft word   mengurus perubahanMicrosoft word   mengurus perubahan
Microsoft word mengurus perubahanFaizzah Izam
 
NCCU School of Business Year In Review
NCCU School of Business Year In ReviewNCCU School of Business Year In Review
NCCU School of Business Year In ReviewLadyKJ02
 
Eia2012 Early Release
Eia2012 Early ReleaseEia2012 Early Release
Eia2012 Early ReleaseJose Espinosa
 
Securitisation and Standby Servicing - a strategic solution from HML
Securitisation and Standby Servicing - a strategic solution from HMLSecuritisation and Standby Servicing - a strategic solution from HML
Securitisation and Standby Servicing - a strategic solution from HMLHML Ltd
 
Get a Seat at the Table: Utah's Legislature and How it Impacts Your Business
Get a Seat at the Table: Utah's Legislature and How it Impacts Your BusinessGet a Seat at the Table: Utah's Legislature and How it Impacts Your Business
Get a Seat at the Table: Utah's Legislature and How it Impacts Your BusinessParsons Behle & Latimer
 
Project proposal
Project proposalProject proposal
Project proposalMoeed Awais
 
La DoloMeetCard con l'hotel Gianna
La DoloMeetCard con l'hotel GiannaLa DoloMeetCard con l'hotel Gianna
La DoloMeetCard con l'hotel GiannaHotel Gianna
 
Car Trading Meeting
Car Trading MeetingCar Trading Meeting
Car Trading MeetingCarsOnTheWeb
 
Personal Injury Cases: Case Intake and Screening
Personal Injury Cases: Case Intake and ScreeningPersonal Injury Cases: Case Intake and Screening
Personal Injury Cases: Case Intake and ScreeningParsons Behle & Latimer
 
2014 c-delaware (us compared) - rev 1.1
2014 c-delaware (us compared) - rev 1.12014 c-delaware (us compared) - rev 1.1
2014 c-delaware (us compared) - rev 1.1C.R. McLeod
 

Andere mochten auch (20)

BIMobject for manufacturers 2013
BIMobject for manufacturers 2013BIMobject for manufacturers 2013
BIMobject for manufacturers 2013
 
Webvisions talk 2015 09252015 final
Webvisions talk 2015 09252015 finalWebvisions talk 2015 09252015 final
Webvisions talk 2015 09252015 final
 
Microsoft word mengurus perubahan
Microsoft word   mengurus perubahanMicrosoft word   mengurus perubahan
Microsoft word mengurus perubahan
 
Ppt recount
Ppt recountPpt recount
Ppt recount
 
Bark & Co
Bark & CoBark & Co
Bark & Co
 
NCCU School of Business Year In Review
NCCU School of Business Year In ReviewNCCU School of Business Year In Review
NCCU School of Business Year In Review
 
Eia2012 Early Release
Eia2012 Early ReleaseEia2012 Early Release
Eia2012 Early Release
 
Freello | Mobile Marketing 4 Media
Freello | Mobile Marketing 4 MediaFreello | Mobile Marketing 4 Media
Freello | Mobile Marketing 4 Media
 
Securitisation and Standby Servicing - a strategic solution from HML
Securitisation and Standby Servicing - a strategic solution from HMLSecuritisation and Standby Servicing - a strategic solution from HML
Securitisation and Standby Servicing - a strategic solution from HML
 
Get a Seat at the Table: Utah's Legislature and How it Impacts Your Business
Get a Seat at the Table: Utah's Legislature and How it Impacts Your BusinessGet a Seat at the Table: Utah's Legislature and How it Impacts Your Business
Get a Seat at the Table: Utah's Legislature and How it Impacts Your Business
 
Project proposal
Project proposalProject proposal
Project proposal
 
La DoloMeetCard con l'hotel Gianna
La DoloMeetCard con l'hotel GiannaLa DoloMeetCard con l'hotel Gianna
La DoloMeetCard con l'hotel Gianna
 
Klíma 7 előnye
Klíma  7 előnyeKlíma  7 előnye
Klíma 7 előnye
 
Freello #JustOneRing
Freello #JustOneRingFreello #JustOneRing
Freello #JustOneRing
 
Loving Avacados
Loving AvacadosLoving Avacados
Loving Avacados
 
Freello mobile-marketing-4-brands
Freello mobile-marketing-4-brandsFreello mobile-marketing-4-brands
Freello mobile-marketing-4-brands
 
Car Trading Meeting
Car Trading MeetingCar Trading Meeting
Car Trading Meeting
 
Personal Injury Cases: Case Intake and Screening
Personal Injury Cases: Case Intake and ScreeningPersonal Injury Cases: Case Intake and Screening
Personal Injury Cases: Case Intake and Screening
 
2014 c-delaware (us compared) - rev 1.1
2014 c-delaware (us compared) - rev 1.12014 c-delaware (us compared) - rev 1.1
2014 c-delaware (us compared) - rev 1.1
 
Cijferend optellen3
Cijferend optellen3Cijferend optellen3
Cijferend optellen3
 

Ähnlich wie Backbone.js Roadmap: Introdução e Conceitos Básicos

Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2rodrigoareis
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015  - Interfaces Ricas com Rails e React.JSTDC São Paulo 2015  - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JSRodrigo Urubatan
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - SubalgoritmosCarlos Santos
 
Testando Rails apps com RSpec
Testando Rails apps com RSpecTestando Rails apps com RSpec
Testando Rails apps com RSpecNando Vieira
 
Material Design - Melhorando a experiência de seu App
Material Design - Melhorando a experiência de seu AppMaterial Design - Melhorando a experiência de seu App
Material Design - Melhorando a experiência de seu Appalissin
 
Utiizando o Celular no Apoio à Gerência de configuração
Utiizando o Celular no Apoio à Gerência de configuraçãoUtiizando o Celular no Apoio à Gerência de configuração
Utiizando o Celular no Apoio à Gerência de configuraçãoJaguaraci Silva
 
iOS Delegates - Mobile Conf Rio 2014
iOS Delegates - Mobile Conf Rio 2014iOS Delegates - Mobile Conf Rio 2014
iOS Delegates - Mobile Conf Rio 2014osnipso
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_onRoberson Alves
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCEduardo Nicola F. Zagari
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Frameworkelliando dias
 
Criando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zeroCriando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zeroEduardo Shiota Yasuda
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3Flávio Lisboa
 

Ähnlich wie Backbone.js Roadmap: Introdução e Conceitos Básicos (20)

Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015  - Interfaces Ricas com Rails e React.JSTDC São Paulo 2015  - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
 
Aula Ruby
Aula RubyAula Ruby
Aula Ruby
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos
 
Kotlin first
Kotlin firstKotlin first
Kotlin first
 
Testando Rails apps com RSpec
Testando Rails apps com RSpecTestando Rails apps com RSpec
Testando Rails apps com RSpec
 
Material Design - Melhorando a experiência de seu App
Material Design - Melhorando a experiência de seu AppMaterial Design - Melhorando a experiência de seu App
Material Design - Melhorando a experiência de seu App
 
Utiizando o Celular no Apoio à Gerência de configuração
Utiizando o Celular no Apoio à Gerência de configuraçãoUtiizando o Celular no Apoio à Gerência de configuração
Utiizando o Celular no Apoio à Gerência de configuração
 
iOS Delegates - Mobile Conf Rio 2014
iOS Delegates - Mobile Conf Rio 2014iOS Delegates - Mobile Conf Rio 2014
iOS Delegates - Mobile Conf Rio 2014
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Caelum Day In Rio
Caelum Day In RioCaelum Day In Rio
Caelum Day In Rio
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_on
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVC
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Criando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zeroCriando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zero
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3
 

Backbone.js Roadmap: Introdução e Conceitos Básicos

  • 3. Introdução ● Estrutura mínima para uma app decente ● Release inicial 10/2010 ● MV alguma coisa ○ Porque sempre tem MV? ● Única dependência: Underscore.js ○ Para usar router e persistência: jQuery ou Zepto ● Comunidade: suficiente
  • 4. Básico - Características 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.
  • 5. Básico - Model // Our basic **Todo** model has `title`, `order`, and `completed` attributes. app.Todo = Backbone.Model.extend({ defaults: { title: '', completed: false }, // Toggle the `completed` state of this todo item. toggle: function () { this.save({completed: !this.get('completed')}); } }); var todo1 = new app.Todo({title: 'First title', order: 1});
  • 6. Básico - Model ● ● ● ● ● ● ● initialize get & set id attributes changedAttributes parse toJSON
  • 7. Básico - Model ● Observer pattern ● Validação ○ isValid - validation ○ Backbone.validation ● Relações ○ backbone-relational.js ○ backbone-associations ○ supermodel.js
  • 8. Básico - Model ● Persistência ○ ○ ○ ○ ○ ○ url - urlRoot parse sync - fetch - save - destroy REST JSON LocalStorage? Websockets?
  • 9. Básico - Model - Persistência app.Todo = Backbone.Model.extend({ urlRoot: '/todos' }); var todo2 = new app.Todo({title: 'First title', order: 1}); var todo3 = new app.Todo({id: 5, title: 'First title', order: 1}); todo2.url(); // "/todos" todo3.url(); // "/todos/5"
  • 10. Básico - Model - Collections app.TodosCollection = Backbone.Collection.extend({ model: app.Todo }); var todos = new app.TodosCollection([todo2, todo3]); todos.length; // 2 todos.fetch(); todos.create({}); todos.add(todo2); Backbone.sync(method, model, options); E diversos métodos do Underscore.js.
  • 11. Básico - View ● Duas partes ○ Declarativa ■ el ■ model binding ■ events ○ Procedural ■ render ■ Controller
  • 12. Básico - View app.TodoView = Backbone.View.extend({ el: '#todo', events: { 'keypress .edit': 'updateOnEnter', 'blur .edit': 'close' }, render: function() { return this.$el.html( TemplateEngine.run( this.model.toJSON() ) ); }, close: function() { // executed when todo loses focus }, updateOnEnter: function( e ) { // executed on each keypress when in todo edit mode } }); var todoView = new app.TodoView({model: todo2}); todoview.render();
  • 13. Básico - Eventos Backbone.on('event', function() {console.log('Handled Backbone event');}); Backbone.trigger('event'); // logs: Handled Backbone event ● on - off - trigger - once - listenTo ● Eventos do backbone ○ add - remove - reset - sort - change - error - route ● Custom
  • 14. Básico - Router app.TodoRouter = Backbone.Router.extend({ routes: { "about" : "showAbout", /* http://example.com/#about */ "todo/:id" : "getTodo", /* http://example.com/#todo/5 */ "todos/:id/download/*documentPath" : "downloadDocument", /* http://example.com/#todos/5/download/files/Meeting_schedule.doc */ }, showAbout: function(){ }, getTodo: function(id){ }, getTodo: function(id, path){ } }); var myTodoRouter = new app.TodoRouter(); Backbone.history.start(); myTodoRouter.navigate('todo/5');
  • 15. Além do Backbone ● Funcionalidade ausentes ○ Atributos virtuais ○ Hierarquia nas views ○ Form validation ● Marionette ○ Seta alguns padrões como o template ○ Facilita as views ■ Subview, regions, layout ● Crescimento da aplicação