SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

PDF
JavaScript Hacks
PDF
Tracking.js
PDF
Java script aula 02 - operadores
PDF
Realtime com node.js e socket.io
PDF
Java script aula 05 - funções
PDF
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
PPT
Aula javascript
PPT
Tutorial Dwr - Configuração e Uso
JavaScript Hacks
Tracking.js
Java script aula 02 - operadores
Realtime com node.js e socket.io
Java script aula 05 - funções
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Aula javascript
Tutorial Dwr - Configuração e Uso

Mais procurados (20)

KEY
Javascript + jQuery
PPT
Spock Framework 2
PDF
Node.js - #4 - Timers - Rodrigo Branas
PDF
ODIG - Javascript, DOM Elements e jQuery
PDF
Node.js - #3 - Global Objects - Rodrigo Branas
PDF
JavaScript Model-View no Frontend
PDF
Dicas e Truques TypeScript
PDF
Backbone.js + Rails - Front-end e back-end conectados
PDF
Gems para colocar seus testes no trilho
PDF
Java script aula 08 - formulários
PPT
Spock Framework
PDF
Node.js - #5 - Process - Rodrigo Branas
PDF
Java script aula 09 - JQuery
PDF
NodeJS - E/S não-bloqueante - Dirigido a Eventos
PDF
Java script - funções
PDF
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
PDF
Javascript Ilegível
PDF
ADB: Um ator invisível
PDF
Bread board
PDF
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Javascript + jQuery
Spock Framework 2
Node.js - #4 - Timers - Rodrigo Branas
ODIG - Javascript, DOM Elements e jQuery
Node.js - #3 - Global Objects - Rodrigo Branas
JavaScript Model-View no Frontend
Dicas e Truques TypeScript
Backbone.js + Rails - Front-end e back-end conectados
Gems para colocar seus testes no trilho
Java script aula 08 - formulários
Spock Framework
Node.js - #5 - Process - Rodrigo Branas
Java script aula 09 - JQuery
NodeJS - E/S não-bloqueante - Dirigido a Eventos
Java script - funções
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Javascript Ilegível
ADB: Um ator invisível
Bread board
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Anúncio

Semelhante a 7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha (20)

PDF
JavaScript e JQuery para Webdesigners
PDF
jQuery básico (parte 3)
PDF
RubyConfBr 2015 - Rails & Javascript: faça isso direito
PDF
Typescript: the Fun Parts (BrazilJS 2017)
PPTX
JAVASCRIT – Welcome the web world Arquivo: java-script-basico-unipac-extra-v0...
PPT
Melhorando a Experiência do Usuário com JavaScript e jQuery
PDF
Minicurso groovy grails
PPTX
Javascript
PDF
A explosão do Node.js: JavaScript é o novo preto
PDF
JS Experience 2017 - Javascript Funcional
PDF
Ajax em java
PPTX
Introdução ao jquery
PDF
Evento Front End SP - Organizando o Javascript
PPTX
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
PDF
Programação funcional em JavaScript: como e por quê?
PDF
Código legado - PHP Conference Brasil - 2014
ODP
Ganhando tempo com casos de testes
PDF
TDC 2011 - Criando um plugin jQuery
PPT
Html5 storage api
PPT
Conteúdo teórico sobre funções e cookies
JavaScript e JQuery para Webdesigners
jQuery básico (parte 3)
RubyConfBr 2015 - Rails & Javascript: faça isso direito
Typescript: the Fun Parts (BrazilJS 2017)
JAVASCRIT – Welcome the web world Arquivo: java-script-basico-unipac-extra-v0...
Melhorando a Experiência do Usuário com JavaScript e jQuery
Minicurso groovy grails
Javascript
A explosão do Node.js: JavaScript é o novo preto
JS Experience 2017 - Javascript Funcional
Ajax em java
Introdução ao jquery
Evento Front End SP - Organizando o Javascript
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Programação funcional em JavaScript: como e por quê?
Código legado - PHP Conference Brasil - 2014
Ganhando tempo com casos de testes
TDC 2011 - Criando um plugin jQuery
Html5 storage api
Conteúdo teórico sobre funções e cookies
Anúncio

Mais de iMasters (20)

PPTX
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
PDF
Postgres: wanted, beloved or dreaded? - Fabio Telles
PPTX
Por que minha query esta lenta? - Suellen Moraes
PPTX
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
PDF
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
PPTX
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
PDF
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
PDF
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
PDF
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
PDF
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
PDF
Entendendo os porquês do seu servidor - Talita Bernardes
PDF
Backend performático além do "coloca mais máquina lá" - Diana Arnos
PPTX
Dicas para uma maior performance em APIs REST - Renato Groffe
PPTX
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
PDF
Quem se importa com acessibilidade Web? - Mauricio Maujor
PDF
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
PDF
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
PDF
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
PDF
Construindo aplicações mais confiantes - Carolina Karklis
PDF
Monitoramento de Aplicações - Felipe Regalgo
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
Postgres: wanted, beloved or dreaded? - Fabio Telles
Por que minha query esta lenta? - Suellen Moraes
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Entendendo os porquês do seu servidor - Talita Bernardes
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Dicas para uma maior performance em APIs REST - Renato Groffe
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
Quem se importa com acessibilidade Web? - Mauricio Maujor
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Construindo aplicações mais confiantes - Carolina Karklis
Monitoramento de Aplicações - Felipe Regalgo

Último (11)

PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Jira Software projetos completos com scrum
PPTX
Utilizando code blockes por andre backes
PPT
Conceitos básicos de Redes Neurais Artificiais
PPTX
Eng. Software - pontos essenciais para o início
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Manejo integrado de pragas na cultura do algodão
Tipos de servidor em redes de computador.pptx
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Jira Software projetos completos com scrum
Utilizando code blockes por andre backes
Conceitos básicos de Redes Neurais Artificiais
Eng. Software - pontos essenciais para o início
Viasol Energia Solar -Soluções para geração e economia de energia
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf

7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha