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

31
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.

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

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

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.

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

William BrunoDesenvolvedor NodeJS

http://wbruno.com.br/ http://github.com/wbruno @wbrunom

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

Boas Práticas em

JavaScriptQuery

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

Boas Práticas em

JavaScriptQuery JavaQueryScript

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

Boas Práticas em

JavaQueryScript JavaScriptQuery

jScriptQuery

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

Boas Práticas em

jQueryjQuery 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.

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

Use event delegateDon’t

jQuery(‘#menu a’).on(‘click’, function() { // do something});

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

Use event delegateDo

jQuery(‘#menu’).on(‘click’, ‘a’, function() { // do something});

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

Divida os listenersDon’t

jQuery(‘#menu’).on(‘click’, ‘a’, function() { // do something // do another thing})

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

Divida os listenersAlmost

jQuery(‘#menu’).on(‘click’, ‘a’, function() { // do something});jQuery(‘#menu’).on(‘click’, ‘a’, function() { // do another thing})

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

Divida os listenersDo

var $menu = jQuery(‘#menu’);$menu.on(‘click’, ‘a’, function() { // do something});$menu.on(‘click’, ‘a’, function() { // do another thing})

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

Evite ir no DOMDon’t

var $menu = jQuery(‘#menu’);$menu.on(‘click’, ‘a’, function() { $this.parent(‘li’)… $this.parent(‘li’).find(‘span’)…});

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

Evite ir no DOMDo

var $menu = jQuery(‘#menu’);$menu.on(‘click’, ‘a’, function() { var $parent = $this.parent(‘li’);

$parent… $parent.find(‘span’)…});

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

Evite ir no DOMDo

var $menu = jQuery(‘#menu’);$menu.on(‘click’, ‘a’, function() { var $this = $(this);

$this… $this…});

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

DRYDon’t

$(‘a[rel*=facebook]’).facebox({ loadingImage: ‘src/loading.gif’, closeImage: ‘src/closelabel.png’});$(‘a#tal’).facebox({ loadingImage: ‘src/loading.gif’, closeImage: ‘src/closelabel.png’});

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

DRYDo

var configs = { loadingImage: ‘src/loading.gif’, closeImage: ‘src/closelabel.png’};$(‘a[rel*=facebook]’).facebox(configs);$(‘a#tal’).facebox(configs);

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

Use convençõesDo

var $menu = jQuery(‘#menu’);var i = 0;

const SOME = 'value';// ouvar SOME = 'value';

function DragonModel() {}DragonModel.prototype.breathesFire = function() {};

var DragonController = { breathesFire: function() {

}};

var _someLocalVarPrivate = !!false;

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

Use PromisesDon’t

$.ajax({ url: ‘/stormtroppers’, type: ‘GET’, success: function(data) { console.log(data); }});

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

Use PromisesDo

$.ajax({ url: ‘/stormtroppers’, type: ‘GET’,}).then(function(data) { console.log(data);}).catch(function(err) { console.log(err);});

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

Use PromisesSério, use…

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

Lembre-se, é JSDon’t

var something = '';var ret = '';

if (something) { ret = something;} else { ret = 'another thing';}

console.log(ret);

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

Lembre-se, é JSDon’t

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

console.log(ret);

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

Lembre-se, é JSDo

var something = '';var ret = something || 'another thing';

console.log(ret);

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

Lembre-se, é JSDo

var jane = '';

jane = 'joe';console.log(!jane); //invertendo - FALSEjane = '';console.log(!jane); //invertendo - TRUE

jane = '';console.log(!!jane); //convertendo para booleano - FALSEjane = 'joe';console.log(!!jane); //convertendo para booleano - TRUE

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

Hash MapDo

var map = { 'blue': '#2E68AB', 'red': '#DB2525', 'gray': '#666', 'green': '#3BDB25'}

console.log(map.blue);console.log(map.red);

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

EviteDon’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

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

FaçaDo

* 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

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

jslint/jshintO que eu não falei antes, provavelmente

o jslint ou jshint resolve. Use.

Padronização de aspasPontos e vírgulasVariáveis não usadasVariáveis não declaradas…

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

Como escrever um bom código jQuery ?

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

Sabendo escrever bom JavaScript

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

Dúvidas ?

Me chama por aí… acho que não dá tempo de responder aqui na frente