26
Backbone.js João Helis Smith Ascari http://backbonejs.org

Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Embed Size (px)

DESCRIPTION

Backbone.js - Uma apresentação dos principais conceitos.

Citation preview

Page 1: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Backbone.js

João HelisSmith Ascari

http://backbonejs.org

Page 2: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Agenda1. Backbone.js2. Model 3. View4. Collection5. Router6. Cinephilebox

Page 3: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Backbone.js➢ framework em javascript para estruturar

aplicações web.

➢ Client-side

➢ open source

➢ abordagem MVC

Page 4: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Backbone.js➢ dependências

○ Underscore.js○ jQuery

Page 5: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Model

➢ O coração de qualquer aplicação javaScript

➢ Contém os dados da aplicação e grande

parte da sua lógica

Page 6: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Model➢ Criar um Model

➢ window.User = Backbone.Model.extend({});

Page 7: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Model➢ Criando uma instancia do Model

➢var user = new User()

var user = new User({ name:"João Helis", email:"[email protected]" })

Page 8: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Model➢ Definindo construtores

window.User = Backbone.Model.extend({

initialize: function () {console.log("This model has been initialized");

}}

Page 9: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Model➢ Valores default

window.User = Backbone.Model.extend({defaults: { name: "Seu Zé", email: "[email protected]"}

});

Page 10: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

ModelOs Models tem um conjunto de métodos prédefinidos pelo Backbone.js

– extend – constructor / initialize – get

– set – escape – has

– unset – clear – id

– changed – defaults – toJSON

(....)

Todos os métodos de Backbone.Model (http://backbonejs.org/#Model)

Page 11: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Model➢ Métodos Get e Set

➢user.set({name: "Smith"});

user.get("name");

Page 12: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

View➢ Organiza a interface

➢ Não possui código HTML

➢ Apoiada por Model’s (define como apresentá-los)

Page 13: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

ViewCriar uma View

var UserView = Backbone.View.extend({});

Page 14: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

ViewCriar view

var UserView = Backbone.View.extend({

initialize: function () { this.render(); },

render: function () { $(this.el).html(this.template(this.model.toJSON())); return this; }});

Page 15: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

View

➢ extend○ para criação de views personalizadas○ herda propiedades e funções○ events, render, className, tagName

Page 16: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

View➢ el

○ é um elemento do DOM○ o conteúdo da view é inserido nele

render: function () { $(this.el).html(this.template(this.model.toJSON())); },

Page 17: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

View➢ constructor/initialize

○ permite definir propriedades○ executado quando a view é criada

➢ render○ código para renderizar/atualizar o template

Page 18: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

View➢ events

○ define eventos que serão monitorados○ segue o formato { “event selector” : “callback” } // escopo da View events:{ "click .tab": "tabPaneToggleClass" },

tabPaneToggleClass: function(event){ if(!$(".btn", event.currentTarget).hasClass("btn-primary")) $('.btn-tab').toggleClass('btn-primary'); }

Page 19: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Collection➢ Collection são conjuntos de Modelos

➢var userList = Backbone.Collection.extend({model: User

});

Page 20: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Collection➢ Os métodos add e remove

➢var user = new User({name : "João Helis"});

var userList = new UserList();taskList.add(user)

Page 21: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Collection➢ Escutando eventos na Collection

➢userList.on("add", function(user) {

console.log("User: " + user.get("name") + " added");});userList.on("remove", function(user) {

console.log("User: " + user.get("name") + " removed");});

Page 22: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Collection➢ Carregando modelos a partir do servidor

➢var userList = Backbone.Collection.extend({

url: '/user' ←model: User

});

userList.fetch() ←

Page 23: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Router➢ conecta ações/URLs a eventos

var AppRouter = Backbone.Router.extend({ routes: { "" : "home", "movies/list" : "movieList", "contact" : "contact", },

home: function(){ this.configLanding(); $('#carouselBlk').html(new HomeView().el); },});

Page 24: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Router➢ inicialização

○ instancia o Router

○ inicia o monitoramento de mudanças nas URLs

var app = new AppRouter();

Backbone.history.start();

Page 25: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Referência

Documentação do Backbone.js: http://backbonejs.org

Slides do Professor Yuri Malheiros

Page 26: Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV

Backbone.js

Dúvidas?