SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
Backbone.js




A espinha dorsal de aplicações web
            Henrique Gogó
            @henriquegogo
jQuery para tudo?

  É um framework para trabalhar com DOM.

Infelizmente, quando começamos a ter pilhas e
 pilhas de arquivos JS, lidar com o seletores e
callbacks podem deixar seu código bagunçado.
Como (provavelmente) você faz hoje

 $("input[name=age]").on("change", function() {
     if ($(this).val() > 15) {
         console.log("Velhote");
     }
 });

 $("form").submit(function() {
    $.post("/users", $("form").serialize());
    return false;
 })
Mas com Backbone.js...

 Você pode representar seus dados como
modelos, que podem ser criados, validados,
     destruídos, e salvos no servidor
Model
var User = Backbone.Model.extend({
    urlRoot: "/users",
    defaults: {
       name: "Unknown user",
    },
    validate: function(attrs) {
       if (attrs.age > 15) {
           console.log("Velhote");
       }
    }
});

var henrique = new User({ id: 1, name: "Henrique" });
henrique.set("age", 27);
Collections
var Users = Backbone.Collection.extend({
    model: User
});

var employees = new Users([{ name: "Letícia" },
{ name: "Mateus" }]);

employees.on("add", function(user) {
    console.log("Welcome " + user.get("name") + "!");
});

employees.add({ name: "Roberto" });
Mais sobre collections

Users.each(function(user) {
  user.facaAlgo();
});

var nomes = Users.map(function(user) {
  return user.get("name");
});

var ordenado = Users.sortBy(function(user) {
  return user.get("name").toLowerCase();
});
E não é só isso!
Você não tem que escrever o código que olha
para o DOM para encontrar um elemento com
    um id específico, e atualizar o HTML
              manualmente.

Basta alterar o Model e sua View simplesmente
                 irá atualizar.
Views + Backbone.ModelBinder

var View = Backbone.View.extend({
    el: "body",
    initialize: function() {
       this.modelBinder = new Backbone.ModelBinder();
       this.modelBinder.bind(this.model, this.el);
    },
    render: function() {
       console.log(this);
    }
});
E NÃO É
SÓ ISSO!!!
Rotas client-side

Sincronização automática com o servidor

Templates (underscore.js)

Compatibilidade com jQuery (ou outros)
E quem usa?
  LinkedIn Mobile
    Foursquare
     Wunderkit
       Disqus
  Walmart Mobile
  Groupon Now!
 Basecamp Mobile
   Airbnb Mobile
SoundCloud Mobile
       Trello
http://backbonejs.org
http://www.gogs.com.br

Contenu connexe

Tendances

JQuery para Iniciantes
JQuery para IniciantesJQuery para Iniciantes
JQuery para IniciantesRenato Asterio
 
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeZabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeIgor Nicoli
 
Mude seu jeito de pensar com MongoDB
Mude seu jeito de pensar com MongoDBMude seu jeito de pensar com MongoDB
Mude seu jeito de pensar com MongoDBDouglas Lira
 
Javascript - Biblioteca Jquery
Javascript - Biblioteca JqueryJavascript - Biblioteca Jquery
Javascript - Biblioteca JqueryMultside Digital
 
IBM - Apresentando jQuery
IBM - Apresentando jQueryIBM - Apresentando jQuery
IBM - Apresentando jQueryAlberto Leal
 
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IVBackbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IVJoão Helis Bernardo
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMCAlisson Agiani
 
Palestra - Iniciando no Jquery
Palestra - Iniciando no JqueryPalestra - Iniciando no Jquery
Palestra - Iniciando no Jquerygrupoweblovers
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersHarlley Oliveira
 
Javascript - Agora a coisa ficou séria.
Javascript - Agora a coisa ficou séria.Javascript - Agora a coisa ficou séria.
Javascript - Agora a coisa ficou séria.Luiz Henrique Estacio
 
jQuery básico (parte 2)
jQuery básico (parte 2)jQuery básico (parte 2)
jQuery básico (parte 2)Luís Cobucci
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o JavascriptMichel Ribeiro
 
Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Luis Gustavo Almeida
 

Tendances (20)

JQuery para Iniciantes
JQuery para IniciantesJQuery para Iniciantes
JQuery para Iniciantes
 
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeZabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
 
Bread board
Bread boardBread board
Bread board
 
Mude seu jeito de pensar com MongoDB
Mude seu jeito de pensar com MongoDBMude seu jeito de pensar com MongoDB
Mude seu jeito de pensar com MongoDB
 
Javascript - Biblioteca Jquery
Javascript - Biblioteca JqueryJavascript - Biblioteca Jquery
Javascript - Biblioteca Jquery
 
IBM - Apresentando jQuery
IBM - Apresentando jQueryIBM - Apresentando jQuery
IBM - Apresentando jQuery
 
Dinamizando Sites Estáticos
Dinamizando Sites EstáticosDinamizando Sites Estáticos
Dinamizando Sites Estáticos
 
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IVBackbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
 
Introdução ao JQuery e AJAX
Introdução ao JQuery e AJAXIntrodução ao JQuery e AJAX
Introdução ao JQuery e AJAX
 
Javascript + jQuery
Javascript + jQueryJavascript + jQuery
Javascript + jQuery
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMC
 
Palestra - Iniciando no Jquery
Palestra - Iniciando no JqueryPalestra - Iniciando no Jquery
Palestra - Iniciando no Jquery
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para Webdesigners
 
Palestra de PDO
Palestra de PDOPalestra de PDO
Palestra de PDO
 
CSS & JQquery
CSS & JQqueryCSS & JQquery
CSS & JQquery
 
Javascript - Agora a coisa ficou séria.
Javascript - Agora a coisa ficou séria.Javascript - Agora a coisa ficou séria.
Javascript - Agora a coisa ficou séria.
 
jQuery básico (parte 2)
jQuery básico (parte 2)jQuery básico (parte 2)
jQuery básico (parte 2)
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
 
Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP
 
jQuery Simplificando o JavaScript
jQuery Simplificando o JavaScriptjQuery Simplificando o JavaScript
jQuery Simplificando o JavaScript
 

Similaire à Backbone.js - A espinha dorsal de aplicações web

Similaire à Backbone.js - A espinha dorsal de aplicações web (20)

LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introdução
 
LPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdfLPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdf
 
Realtime com node.js e socket.io
Realtime com node.js e socket.ioRealtime com node.js e socket.io
Realtime com node.js e socket.io
 
Aplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com DjangoAplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com Django
 
Workshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseWorkshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + Mongoose
 
Fazendo uma aplicação cliente/servidor (e algumas dicas...)
Fazendo uma aplicação cliente/servidor (e algumas dicas...)Fazendo uma aplicação cliente/servidor (e algumas dicas...)
Fazendo uma aplicação cliente/servidor (e algumas dicas...)
 
Django + extjs pelos forms
Django + extjs pelos formsDjango + extjs pelos forms
Django + extjs pelos forms
 
DDD > Experiências
DDD > ExperiênciasDDD > Experiências
DDD > Experiências
 
Artigoajax
ArtigoajaxArtigoajax
Artigoajax
 
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EEJavaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
Ajax em java
Ajax em javaAjax em java
Ajax em java
 
Evoluindo a experiência web no SporTV Play com React
Evoluindo a experiência web no SporTV Play com ReactEvoluindo a experiência web no SporTV Play com React
Evoluindo a experiência web no SporTV Play com React
 
Html5 storage api
Html5 storage apiHtml5 storage api
Html5 storage api
 
JDBC
JDBCJDBC
JDBC
 
Vb
VbVb
Vb
 
Java script1
Java script1Java script1
Java script1
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc Quixadá
 
Javascript Ilegível
Javascript IlegívelJavascript Ilegível
Javascript Ilegível
 

Plus de Henrique Gogó

PhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaPhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaHenrique Gogó
 
Conhecendo o CouchDB - TDC2011
Conhecendo o CouchDB - TDC2011Conhecendo o CouchDB - TDC2011
Conhecendo o CouchDB - TDC2011Henrique Gogó
 
Criando aplicações JavaScript com CouchApp + Sammy.js
Criando aplicações JavaScript com CouchApp + Sammy.jsCriando aplicações JavaScript com CouchApp + Sammy.js
Criando aplicações JavaScript com CouchApp + Sammy.jsHenrique Gogó
 
Urls amigáveis em JavaScript com Sammy JS
Urls amigáveis em JavaScript com Sammy JSUrls amigáveis em JavaScript com Sammy JS
Urls amigáveis em JavaScript com Sammy JSHenrique Gogó
 

Plus de Henrique Gogó (8)

Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 
Introdução React.js
Introdução React.jsIntrodução React.js
Introdução React.js
 
PhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaPhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha Camarada
 
NoSQL + Node.js
NoSQL + Node.jsNoSQL + Node.js
NoSQL + Node.js
 
Conhecendo o CouchDB - TDC2011
Conhecendo o CouchDB - TDC2011Conhecendo o CouchDB - TDC2011
Conhecendo o CouchDB - TDC2011
 
Criando aplicações JavaScript com CouchApp + Sammy.js
Criando aplicações JavaScript com CouchApp + Sammy.jsCriando aplicações JavaScript com CouchApp + Sammy.js
Criando aplicações JavaScript com CouchApp + Sammy.js
 
Conhecendo o CouchDB
Conhecendo o CouchDBConhecendo o CouchDB
Conhecendo o CouchDB
 
Urls amigáveis em JavaScript com Sammy JS
Urls amigáveis em JavaScript com Sammy JSUrls amigáveis em JavaScript com Sammy JS
Urls amigáveis em JavaScript com Sammy JS
 

Backbone.js - A espinha dorsal de aplicações web

  • 1. Backbone.js A espinha dorsal de aplicações web Henrique Gogó @henriquegogo
  • 2. jQuery para tudo? É um framework para trabalhar com DOM. Infelizmente, quando começamos a ter pilhas e pilhas de arquivos JS, lidar com o seletores e callbacks podem deixar seu código bagunçado.
  • 3. Como (provavelmente) você faz hoje $("input[name=age]").on("change", function() { if ($(this).val() > 15) { console.log("Velhote"); } }); $("form").submit(function() { $.post("/users", $("form").serialize()); return false; })
  • 4. Mas com Backbone.js... Você pode representar seus dados como modelos, que podem ser criados, validados, destruídos, e salvos no servidor
  • 5. Model var User = Backbone.Model.extend({ urlRoot: "/users", defaults: { name: "Unknown user", }, validate: function(attrs) { if (attrs.age > 15) { console.log("Velhote"); } } }); var henrique = new User({ id: 1, name: "Henrique" }); henrique.set("age", 27);
  • 6. Collections var Users = Backbone.Collection.extend({ model: User }); var employees = new Users([{ name: "Letícia" }, { name: "Mateus" }]); employees.on("add", function(user) { console.log("Welcome " + user.get("name") + "!"); }); employees.add({ name: "Roberto" });
  • 7. Mais sobre collections Users.each(function(user) { user.facaAlgo(); }); var nomes = Users.map(function(user) { return user.get("name"); }); var ordenado = Users.sortBy(function(user) { return user.get("name").toLowerCase(); });
  • 8. E não é só isso!
  • 9. Você não tem que escrever o código que olha para o DOM para encontrar um elemento com um id específico, e atualizar o HTML manualmente. Basta alterar o Model e sua View simplesmente irá atualizar.
  • 10.
  • 11. Views + Backbone.ModelBinder var View = Backbone.View.extend({ el: "body", initialize: function() { this.modelBinder = new Backbone.ModelBinder(); this.modelBinder.bind(this.model, this.el); }, render: function() { console.log(this); } });
  • 12. E NÃO É SÓ ISSO!!!
  • 13. Rotas client-side Sincronização automática com o servidor Templates (underscore.js) Compatibilidade com jQuery (ou outros)
  • 14. E quem usa? LinkedIn Mobile Foursquare Wunderkit Disqus Walmart Mobile Groupon Now! Basecamp Mobile Airbnb Mobile SoundCloud Mobile Trello
  • 16.