SlideShare uma empresa Scribd logo
1 de 32
Destruindo com

AJAX
evitando o apocalipse
             por hugolnx na Rio.JS 2013
Eu sou...
Hugo Roque (a.k.a hugolnx)
Trabalho como desenvolvedor e instrutor na
Caelum.
Participo de grupos como RubyOnRio, Rio.JS.
Uma rapidinha sobre


AJAX
Sem usar AJAX
Sem usar AJAX




                Servidor
Usando AJAX




              Servidor
AJAX simples com jQuery

$.get(“/followers”, function(html){
  $(“#principal”).append(html);
});
Servidor
Após AJAX:
“Não funciona no meu computador!”

“Trava toda hora!”

“Site confuso!”

“Zuado demais!”
Um AJAX mal planejado pode resultar em:
        ●   Sensação de lentidão.

        ●   Página vulnerável.

        ●   Conteúdo pouco acessível.
Um clique?
Síndrome do Gamer
One-time Event


$("a").one("click", function(event) {
    $.get("http://site.com", function(html){
     // faz alguma coisa
    });
    event.preventDefault();
 }
});
Carregando?
Carregando...




               Enviando...




http://preloaders.net/
Inserindo imagem de carregamento

$("a").one("click", function(event){
 var img = $("<img src='images/loading.gif'>");
 img.appendTo(document.body);

 $.get("http://site.com", function(){

  // faz alguma coisa

    img.remove();
 });
});
<a href=”#”>Post 1</a>



$(“a”).on(“click”, function(event) {
    event.preventDefault();
});




         Google FAIL
<a href=”/posts/1”>Post 1</a>


$(“a”).on(“click”, function(event) {
    // AJAX
    event.preventDefault();
});



          Google WIN
Meu blog




http://hugolnx.com
// Href não serve pois carrega a página inteira.
document.location.href = “/posts/4”;




// Hash serve pois não muda a página.
document.location.hash = “#” + post_id;
Solução



setInterval(checkChangeOfHash, 500);
Desvantagens do HashBang (#!)
●   Usuário sem JavaScript nunca terá acesso ao
    nosso conteúdo.
●   Página carrega e o conteúdo muda depois.
●   Uma vez adotado, vai ficar por um bom tempo.
●   Poucas bibliotecas server-side oferecem
    suporte à esse tipo de url.
●   Tem que fazer gambiarra pro google indexar a
    página.
Olá HTML5!
                     HistoryAPI



history.pushState(4, “Titulo”, “/posts/4”);


window.onpopstate = function(event) {
   updateToPost(event.state);
};
Desvantagens do HistoryAPI
●   O IE só suporta na versão 10.
●   Baixo suporte nos browsers mobile em geral.
Duvidas?
Obrigado!
Contato:
  Email: hugo.roque@caelum.com.br
  Twitter: @hugolnx

Mais conteúdo relacionado

Mais procurados

Descomplicando o JQuery - Introdução ao Framework
Descomplicando o JQuery - Introdução ao FrameworkDescomplicando o JQuery - Introdução ao Framework
Descomplicando o JQuery - Introdução ao FrameworkPablo Garrido
 
HackaPET 2019: React
HackaPET 2019: ReactHackaPET 2019: React
HackaPET 2019: ReactMaira Bello
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)Zeno Rocha
 
Um futuro chamado Web Components
Um futuro chamado Web ComponentsUm futuro chamado Web Components
Um futuro chamado Web ComponentsZeno Rocha
 
Otimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesOtimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesFabiano Weimar
 
Performance com AngularJS
Performance com AngularJSPerformance com AngularJS
Performance com AngularJSWilson Mendes
 
escalando aplicações django
escalando aplicações djangoescalando aplicações django
escalando aplicações djangoAndrews Medina
 
Diego Narducci - React + Angular
Diego Narducci - React + AngularDiego Narducci - React + Angular
Diego Narducci - React + AngularDiego Narducci
 

Mais procurados (11)

Descomplicando o JQuery - Introdução ao Framework
Descomplicando o JQuery - Introdução ao FrameworkDescomplicando o JQuery - Introdução ao Framework
Descomplicando o JQuery - Introdução ao Framework
 
Lab
LabLab
Lab
 
HackaPET 2019: React
HackaPET 2019: ReactHackaPET 2019: React
HackaPET 2019: React
 
PHP no Windows Azure
PHP no Windows AzurePHP no Windows Azure
PHP no Windows Azure
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 
Um futuro chamado Web Components
Um futuro chamado Web ComponentsUm futuro chamado Web Components
Um futuro chamado Web Components
 
Otimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesOtimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websites
 
Performance com AngularJS
Performance com AngularJSPerformance com AngularJS
Performance com AngularJS
 
escalando aplicações django
escalando aplicações djangoescalando aplicações django
escalando aplicações django
 
Conhecendo mundo Node.js
Conhecendo mundo Node.jsConhecendo mundo Node.js
Conhecendo mundo Node.js
 
Diego Narducci - React + Angular
Diego Narducci - React + AngularDiego Narducci - React + Angular
Diego Narducci - React + Angular
 

Destaque

SHPE Professional Chapter Strategies
SHPE Professional Chapter StrategiesSHPE Professional Chapter Strategies
SHPE Professional Chapter StrategiesLuis Miranda
 
Fabian
FabianFabian
Fabianfabian
 
Project Presentation
Project PresentationProject Presentation
Project PresentationDhilip Ramki
 
AP Gov Political Parties
AP Gov Political PartiesAP Gov Political Parties
AP Gov Political Partiescamcarty
 

Destaque (6)

SHPE Professional Chapter Strategies
SHPE Professional Chapter StrategiesSHPE Professional Chapter Strategies
SHPE Professional Chapter Strategies
 
Fabian
FabianFabian
Fabian
 
Project Presentation
Project PresentationProject Presentation
Project Presentation
 
What every teacher ppt
What every teacher pptWhat every teacher ppt
What every teacher ppt
 
CCE ( Continuous Comprehensive Evaluaton)
CCE  ( Continuous Comprehensive Evaluaton)CCE  ( Continuous Comprehensive Evaluaton)
CCE ( Continuous Comprehensive Evaluaton)
 
AP Gov Political Parties
AP Gov Political PartiesAP Gov Political Parties
AP Gov Political Parties
 

Semelhante a Destruindo com AJAX evitando o apocalipse

Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)Evandro Klimpel Balmant
 
Ajax (Asynchronous Javascript And Xml)
Ajax (Asynchronous Javascript And Xml)Ajax (Asynchronous Javascript And Xml)
Ajax (Asynchronous Javascript And Xml)kidh0
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsSuissa
 
A vida além do jQuery
A vida além do jQueryA vida além do jQuery
A vida além do jQueryPaulo Pires
 
PhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaPhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaHenrique Gogó
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5Willian Molinari
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)Luís Cobucci
 
Ajax para quem_ouviu_falar
Ajax para quem_ouviu_falarAjax para quem_ouviu_falar
Ajax para quem_ouviu_falarCharleston Anjos
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitFlávio Lisboa
 
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno RochaiMasters
 

Semelhante a Destruindo com AJAX evitando o apocalipse (20)

Google apps script - Parte 2
Google apps script - Parte 2Google apps script - Parte 2
Google apps script - Parte 2
 
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
 
Ajax (Asynchronous Javascript And Xml)
Ajax (Asynchronous Javascript And Xml)Ajax (Asynchronous Javascript And Xml)
Ajax (Asynchronous Javascript And Xml)
 
Mashups: Criando Valor na Web 2.0 (BandTec)
Mashups: Criando Valor na Web 2.0 (BandTec)Mashups: Criando Valor na Web 2.0 (BandTec)
Mashups: Criando Valor na Web 2.0 (BandTec)
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webapps
 
Web Performance Client Side
Web Performance Client SideWeb Performance Client Side
Web Performance Client Side
 
A vida além do jQuery
A vida além do jQueryA vida além do jQuery
A vida além do jQuery
 
Html dom, eventos, jquery
Html dom, eventos, jqueryHtml dom, eventos, jquery
Html dom, eventos, jquery
 
Java script aula 09 - JQuery
Java script   aula 09 - JQueryJava script   aula 09 - JQuery
Java script aula 09 - JQuery
 
PhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaPhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha Camarada
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
 
jQuery
jQueryjQuery
jQuery
 
jQuery
jQueryjQuery
jQuery
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direito
 
Ajax
AjaxAjax
Ajax
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)
 
Ajax para quem_ouviu_falar
Ajax para quem_ouviu_falarAjax para quem_ouviu_falar
Ajax para quem_ouviu_falar
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo Toolkit
 
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
 
Boas Práticas em jQuery
Boas Práticas em jQueryBoas Práticas em jQuery
Boas Práticas em jQuery
 

Destruindo com AJAX evitando o apocalipse