SlideShare a Scribd company logo
1 of 31
Download to read offline
Triste que precise ser dito, mas jQuery
não substitui javascript, mas sim,
trabalha em cima do DOM. O Sucesso
do jQuery é a prova dos problemas da
API DOM.
Só um lembrete que jQuery 2.x ainda
corrige 88 bugs em browsers modernos
para te dar uma experiência de
desenvolvimento consistente.
William Bruno
Desenvolvedor NodeJS
http://wbruno.com.br/
http://github.com/wbruno
@wbrunom
Boas Práticas
em
JavaScriptQuery
Boas Práticas
em
JavaScriptQuery
JavaQueryScript
Boas Práticas
em
JavaQueryScript
JavaScriptQuery
jScriptQuery
Boas Práticas
em
jQuery
jQuery e JavaScript se confundem.
jQuery é uma lib escrita em cima da
linguagem JavaScript. Então, boas
práticas de jQuery, são no fundo no
fundo, boas práticas do JavaScript.
Use event delegate
Don’t
jQuery(‘#menu a’).on(‘click’, function() {

// do something

});
Use event delegate
Do
jQuery(‘#menu’).on(‘click’, ‘a’, function()
{

// do something

});
Divida os listeners
Don’t
jQuery(‘#menu’).on(‘click’, ‘a’, function()
{

// do something

// do another thing

})
Divida os listeners
Almost
jQuery(‘#menu’).on(‘click’, ‘a’, function() {

// do something

});

jQuery(‘#menu’).on(‘click’, ‘a’, function() {

// do another thing

})
Divida os listeners
Do
var $menu = jQuery(‘#menu’);

$menu.on(‘click’, ‘a’, function() {

// do something

});

$menu.on(‘click’, ‘a’, function() {

// do another thing

})
Evite ir no DOM
Don’t
var $menu = jQuery(‘#menu’);

$menu.on(‘click’, ‘a’, function() {

$this.parent(‘li’)…

$this.parent(‘li’).find(‘span’)…

});
Evite ir no DOM
Do
var $menu = jQuery(‘#menu’);

$menu.on(‘click’, ‘a’, function() {

var $parent = $this.parent(‘li’);

$parent…

$parent.find(‘span’)…

});
Evite ir no DOM
Do
var $menu = jQuery(‘#menu’);

$menu.on(‘click’, ‘a’, function() {

var $this = $(this);

$this…

$this…

});
DRY
Don’t
$(‘a[rel*=facebook]’).facebox({

loadingImage: ‘src/loading.gif’,

closeImage: ‘src/closelabel.png’

});

$(‘a#tal’).facebox({

loadingImage: ‘src/loading.gif’,

closeImage: ‘src/closelabel.png’

});
DRY
Do
var configs = {

loadingImage: ‘src/loading.gif’,

closeImage: ‘src/closelabel.png’

};

$(‘a[rel*=facebook]’).facebox(configs);

$(‘a#tal’).facebox(configs);
Use convenções
Do
var $menu = jQuery(‘#menu’);

var i = 0;

const SOME = 'value';

// ou

var SOME = 'value';

function DragonModel() {

}

DragonModel.prototype.breathesFire = function() {

};

var DragonController = {

breathesFire: function() {

}

};

var _someLocalVarPrivate = !!false;
Use Promises
Don’t
$.ajax({

url: ‘/stormtroppers’,

type: ‘GET’,

success: function(data) {

console.log(data);

}

});
Use Promises
Do
$.ajax({

url: ‘/stormtroppers’,

type: ‘GET’,

})

.then(function(data) {

console.log(data);

})

.catch(function(err) {

console.log(err);

});
Use Promises
Sério, use…
Lembre-se, é JS
Don’t
var something = '';

var ret = '';

if (something) {

ret = something;

} else {

ret = 'another thing';

}

console.log(ret);
Lembre-se, é JS
Don’t
var something = 'some';

var ret = something ? something : 'another thing';

console.log(ret);
Lembre-se, é JS
Do
var something = '';

var ret = something || 'another thing';

console.log(ret);
Lembre-se, é JS
Do
var jane = '';

jane = 'joe';

console.log(!jane); //invertendo - FALSE

jane = '';

console.log(!jane); //invertendo - TRUE

jane = '';

console.log(!!jane); //convertendo para booleano - FALSE

jane = 'joe';

console.log(!!jane); //convertendo para booleano - TRUE
Hash Map
Do
var map = {

'blue': '#2E68AB',

'red': '#DB2525',

'gray': '#666',

'green': '#3BDB25'

}

console.log(map.blue);

console.log(map.red);
Evite
Don’t
* Funções com muitas linhas
* Funções que fazem muitas coisas
* Funções sem retorno
* Efeitos colaterais
* Criar coisas dentro de loops
* return false; para cancelar eventos
* Outros $ ao mesmo tempo
Faça
Do
* jshint
* Testes unitários
* Relatório de cobertura
* Relatório de complexidade
* Animações com CSS
* Funções pequenas
* Use a última versão
* $.extend
jslint/jshint
O que eu não falei antes, provavelmente
o jslint ou jshint resolve. Use.
Padronização de aspas

Pontos e vírgulas

Variáveis não usadas

Variáveis não declaradas

…
Como escrever um
bom código jQuery ?
Sabendo escrever
bom JavaScript
Dúvidas ?
Me chama por aí… acho que não dá tempo de
responder aqui na frente

More Related Content

What's hot

Lógica de Programação com Javascript - Aula #03
Lógica de Programação com Javascript - Aula #03Lógica de Programação com Javascript - Aula #03
Lógica de Programação com Javascript - Aula #03Ramon Kayo
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScriptCarlos Santos
 
Php women oficina iniciante de php
Php women   oficina iniciante de phpPhp women   oficina iniciante de php
Php women oficina iniciante de phpTais Reis
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 
JavaScript agora é sério (TDC 2011)
JavaScript agora é sério (TDC 2011)JavaScript agora é sério (TDC 2011)
JavaScript agora é sério (TDC 2011)Luciano Ramalho
 
Javascript (parte 1)
Javascript (parte 1)Javascript (parte 1)
Javascript (parte 1)Alex Camargo
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Gercélia Ramos
 
(Portuguese) Java EE Poliglota
(Portuguese) Java EE Poliglota(Portuguese) Java EE Poliglota
(Portuguese) Java EE PoliglotaPhil Calçado
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
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
 
Introdução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com AjaxIntrodução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com AjaxOtávio Calaça Xavier
 

What's hot (20)

Java script1
Java script1Java script1
Java script1
 
Ajax em java
Ajax em javaAjax em java
Ajax em java
 
Lógica de Programação com Javascript - Aula #03
Lógica de Programação com Javascript - Aula #03Lógica de Programação com Javascript - Aula #03
Lógica de Programação com Javascript - Aula #03
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
 
Php women oficina iniciante de php
Php women   oficina iniciante de phpPhp women   oficina iniciante de php
Php women oficina iniciante de php
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
Javascript
JavascriptJavascript
Javascript
 
JavaScript agora é sério (TDC 2011)
JavaScript agora é sério (TDC 2011)JavaScript agora é sério (TDC 2011)
JavaScript agora é sério (TDC 2011)
 
Javascript (parte 1)
Javascript (parte 1)Javascript (parte 1)
Javascript (parte 1)
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)
 
Java - Primeiros passos
Java - Primeiros passosJava - Primeiros passos
Java - Primeiros passos
 
Tutorial Dwr - Combos Dependentes
Tutorial Dwr - Combos DependentesTutorial Dwr - Combos Dependentes
Tutorial Dwr - Combos Dependentes
 
(Portuguese) Java EE Poliglota
(Portuguese) Java EE Poliglota(Portuguese) Java EE Poliglota
(Portuguese) Java EE Poliglota
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
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
 
Introdução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com AjaxIntrodução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com Ajax
 
Aula 14 - Funções: não duplique seu código
Aula 14 - Funções: não duplique seu códigoAula 14 - Funções: não duplique seu código
Aula 14 - Funções: não duplique seu código
 
Aula 12 - Começando a programar : repetição
Aula 12 - Começando a programar : repetiçãoAula 12 - Começando a programar : repetição
Aula 12 - Começando a programar : repetição
 
JavaScript
JavaScriptJavaScript
JavaScript
 

Similar to Boas Práticas em jQuery

JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersHarlley Oliveira
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)Luís Cobucci
 
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
 
Typescript: the Fun Parts (BrazilJS 2017)
Typescript: the Fun Parts (BrazilJS 2017)Typescript: the Fun Parts (BrazilJS 2017)
Typescript: the Fun Parts (BrazilJS 2017)Loiane Groner
 
A explosão do Node.js: JavaScript é o novo preto
A explosão do Node.js: JavaScript é o novo pretoA explosão do Node.js: JavaScript é o novo preto
A explosão do Node.js: JavaScript é o novo pretoNando Vieira
 
JS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionalJS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionaliMasters
 
ODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQueryODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQueryMarketing Digital ODIG
 
Introdução ao jquery
Introdução ao jqueryIntrodução ao jquery
Introdução ao jqueryYuri Costa
 
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
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 
Programação funcional em JavaScript: como e por quê?
Programação funcional em JavaScript: como e por quê?Programação funcional em JavaScript: como e por quê?
Programação funcional em JavaScript: como e por quê?Arthur Xavier
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Michael Castillo Granados
 
TDC 2011 - Criando um plugin jQuery
TDC 2011 - Criando um plugin jQueryTDC 2011 - Criando um plugin jQuery
TDC 2011 - Criando um plugin jQueryGuilherme Rey
 
Html5 storage api
Html5 storage apiHtml5 storage api
Html5 storage apiSuissa
 
PhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaPhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaHenrique Gogó
 

Similar to Boas Práticas em jQuery (20)

JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para Webdesigners
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)
 
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
 
Typescript: the Fun Parts (BrazilJS 2017)
Typescript: the Fun Parts (BrazilJS 2017)Typescript: the Fun Parts (BrazilJS 2017)
Typescript: the Fun Parts (BrazilJS 2017)
 
Minicurso groovy grails
Minicurso groovy grailsMinicurso groovy grails
Minicurso groovy grails
 
Javascript
JavascriptJavascript
Javascript
 
A explosão do Node.js: JavaScript é o novo preto
A explosão do Node.js: JavaScript é o novo pretoA explosão do Node.js: JavaScript é o novo preto
A explosão do Node.js: JavaScript é o novo preto
 
JS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionalJS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript Funcional
 
ODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQueryODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQuery
 
Introdução ao jquery
Introdução ao jqueryIntrodução ao jquery
Introdução ao jquery
 
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
 
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
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Java script aula 02 - operadores
Java script   aula 02 - operadoresJava script   aula 02 - operadores
Java script aula 02 - operadores
 
Programação funcional em JavaScript: como e por quê?
Programação funcional em JavaScript: como e por quê?Programação funcional em JavaScript: como e por quê?
Programação funcional em JavaScript: como e por quê?
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
TDC 2011 - Criando um plugin jQuery
TDC 2011 - Criando um plugin jQueryTDC 2011 - Criando um plugin jQuery
TDC 2011 - Criando um plugin jQuery
 
Html5 storage api
Html5 storage apiHtml5 storage api
Html5 storage api
 
PhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaPhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha Camarada
 

More from William Bruno Moraes

More from William Bruno Moraes (10)

blz-ecomm.pdf
blz-ecomm.pdfblz-ecomm.pdf
blz-ecomm.pdf
 
Projetando um clube fidelidade para 50 milhões de clientes
Projetando um clube fidelidade para 50 milhões de clientesProjetando um clube fidelidade para 50 milhões de clientes
Projetando um clube fidelidade para 50 milhões de clientes
 
Javascript fullstasck
Javascript fullstasckJavascript fullstasck
Javascript fullstasck
 
Functional javascript
Functional javascriptFunctional javascript
Functional javascript
 
APIs REST escaláveis
APIs REST escaláveisAPIs REST escaláveis
APIs REST escaláveis
 
Nodejs in Production
Nodejs in ProductionNodejs in Production
Nodejs in Production
 
I Promise You
I Promise YouI Promise You
I Promise You
 
Repensando seu CSS - Boas práticas e performance
Repensando seu CSS - Boas práticas e performanceRepensando seu CSS - Boas práticas e performance
Repensando seu CSS - Boas práticas e performance
 
Afinal o que é a web
Afinal o que é a webAfinal o que é a web
Afinal o que é a web
 
Responsive webdesign
Responsive webdesignResponsive webdesign
Responsive webdesign
 

Boas Práticas em jQuery