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.

Upload: imasters

Post on 12-Aug-2015

439 views

Category:

Technology


2 download

TRANSCRIPT

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