desenvolvimento para web

8 dicas para fazer códigos melhores com jQuery

jQuery é um framework javascript que está se tornando se tornou incrivelmente popular. É rápido, fácil de usar e criar plugins personalizados e componentes são feitos rapidamente. Atualmente, todo mundo é um desenvolvedor jQuery e o repositório de plugins está praticamente explodindo com a adições praticamente diárias.

À luz de tudo isto, aqui estão 8 excelentes dicas para fazer códigos melhores com jQuery e se tornar um melhor programador em jQuery que você deve considerar antes de começar seu próximo projeto.

Este é um artigo traduzido do original “Eight Tips That Makes You a Better jQuery“, do blog David’s Kitchen, e sofreu pequenas adaptações.

Mantenha a acessibilidade através da degradação

Com jQuery ser popular é assim, mais e mais pessoas estão escrevendo plugins e criando pacotes de componentes que estão prontos para uso. Mas alguns desenvolvedores tem em mente que projetos online também devem funcionar sem javascript ativado. Essa é uma das principais razões para fazer javascript não obstrusivo. Como exemplo, vejam:

CSS

.animate {
color:red;
display:none
}

jQuery

$('.animate').fadeIn();

Usaria jQuery para dar um fadeIn() com a classe “animate”. Mas se o javascript estiver desativado, o navegador ainda analisa a CSS e, naturalmente, os elementos nunca serão mostrados!

Ao invés disso, tenha sempre o hábito de separar “javascript CSS” e “CSS puro”. Tente isto:

CSS

.animate {
color:red
}
 
.animate_js {
display:none
}

jQuery

$('.animate').addClass('animate_js').fadeIn();

Dessa forma, você pode estilizar os elementos para cada situação e manter a degradação de uma forma sensata. Como sempre, sem testar seu código javascript ativado antes da implementação.

Mover efeitos visuais para a camada de apresentação

Quando for escrever javascript, mantenha sempre o foco nos comportamentos. jQuery não é CSS, então esteja atento as diferenças fundamentais entre a apresentação e comportamento.

Por exemplo, quase sempre é uma boa ideia adicionar classes ao invés de trabalhar com somente propriedades CSS. Evite fades e “glamour” nas funções. Guarde os efeitos para uma fantástica apresentação, mas cuidado no uso em funções javascript - nem todos compartilham seu gosto visual!

Usar Firebug e console.log

Firebug é seu amigo quando está desenvolvendo com jQuery – na verdade, no desenvolvimento web, geral. E assim é o comando console.log, que graciosamente substitui o alert() chato.

Basta digitar console.log() para debugar sempre que você precisar no seu código. Mas lembre-se de remover essas instruções antes da produção, uma vez que muitos navegadores terão conflitos, incluindo o IE (claro!).

E, para outras funcionalidades do Firebug, confira a Console API.

Definir padrões sensatos e utilizar uma quantidade limitada de parâmetros

Quando você é mordido pelo inseto jQuery e começa a criar plugins, frequentemente tenta maximizar o número de parâmetros para tornar o desenvolvimento o mais flexível possível.

Isso tudo é muito nobre, mas que fique claro e que tente não confundir o desenvolvedor web com parâmetros minúsculos que quase não fazem diferença (como fades, velocidades, etc.). Ao invés disso, passe paràmetro de objeto e defina padrões sensíveis. Seu código não precisa fazer literalmente tudo!

Encapsular seu próprio alias

jQuery não é o único framework que usa a abreviação de dólar ($). Vários plugins JQuery e trechos de código também o utilizam para definir onDomReady callbacks e funções de seletores CSS, mas você pode acabar (e evitar) com esse conflitos.

Você pode usar seu próprio alias (que pode continuar sendo o “$”) desse jeito:

jQuery(function($) {
    // código usando alias próprio
});

O exemplo acima usa tanto o atalho para $(document).ready(), quanto o argumento para escrever código jQuery em failsafe usando o alias $, sem contar com o alias global. Você pode e deve, igualmente, integrar o $ quando for criar plugins:

(function($) {
    // código do plugin, usando $ quantas vezes quiser
})(jQuery);

Definir callbacks próprios

Quando estiver criando plugins para jQuery, é uma boa idéia deixar o desenvolvedor atribuir callbacks próprios como como parâmetros de funções, tornando possível personalizar ainda mais o plugin. Então, ao invés de forçar os efeitos de callback dentro do plugin, engatilhe funções de eventos e defina os efeitos livremente.

Aqui está um exemplo em que passamos a função onFade para o plugin, escrito como um simples plugin fadeIn:

/*
This plugin fades an element and triggers the onFade when completed
 
EXAMPLE USAGE:
  $('.fademe').customFade({
    fadeSpeed: 50,
    onFade: function(elem) {
      console.log(elem+' has faded!')
    }
  });
*/
 
jQuery.fn.customFade($params) {
  var $defaults = {
    fadeSpeed: 1000,
    onFade: function(element){}
  };
  var $p = $.extend($defaults, $params);
  $(this).fadeIn($p.fadeSpeed,$p.onFade($(this)));
}

Ficar atento com as diferenças entre navegadores

jQuery é bastante propenso a ser crossbrowser. Mas ainda existem falhas, especialmente com os navegadores como o Safari, que tem um trigger diferente para onLoad, e IE, evidentemente. Sempre teste em vários navegadores e preste muita atenção em quando e onde as falhas ocorrem.

Não ser excessivo e definir seu propósito

Certifique-se de que não está usando jQuery apenas porque você pode. Sempre analise suas necessidades e tenha uma ideia clara do que você quer alcançar antes mesmo de escrever a primeira linha. Faça sketches de seu código e discuta suas ideias com seus pares antes da codificação (se não estiver trabalhando sozinho, claro).

Não reinvente a roda a menos que você esteja fazendo isso para aprender e/ou se educar, analise o código de plugins de qualidade para inspirar-se e ver o que tem sido feito por bons programadores.

Bons códigos!

5 interações em "8 dicas para fazer códigos melhores com jQuery"

  1. Hugo Ferreira18/05/2010 

    Ótimo post, cara…
    Realmente, o que mata muitas vezes é o negócio de ‘reinventar a roda’…

    E o que não falta são plugins fantásticos para jQuery..

    o jLightbox… jCycle, jQSWFUpload, jalert, jSortable…
    vale a pena estudar jQuery, com certeza…

  2. Tárcio Zemel20/05/2010 

    @ Hugo Ferreira
    Realmente, Hugo! Atualmente desenvolver a web sem a Camada de Comportamento é impensável, e o jQuery está aí para facilitar nosso trabalho!

  3. William Nagase28/06/2010 

    Legal

  4. Acelio20/08/2010 

    Ótimo artigo.

    Grandes dicas.

    Se vê muitos erros básicos destes, em sites “novinhos”.
    - Visual: Elementos com display:none; ou opacity:0; no CSS. Ou transparências necessárias via javascript.
    - Funcional e SEO: menus com links usando só href=”#”; conteúdo importante sendo carregado via ajax, sem um “loader” basico;
    - Usuário: um tempo grande de espera, carregando plugins em cima de plugins sem serem usados. Ou para mostrar aquela fantástica-animação, com o botão de entrar.

    Fui mordido também.
    Demorei pra aplicar efetivamente em projetos de clientes, até que fosse mais amplamente aceito e quanto eu pudesse diminuir o (d)efeito da espera no carregamento.
    Hoje já virou quase um plugin, como o flash. Está bem difundido e utilizado.

    Deviam fazer uma parceria com os navegadores, pra ele vir embutido neles. :-)

    OTIMIZAR:
    Entregar a jQuery compactada (com gZip) é lei!
    Trabalhar com header expires também. Aproveitar o cache do navegador para não precisar carregá-la novamente na próxima página.
    Colocar a chamada a ela no final do documento, ao menos na home, elimina o efeito de espera com a tela em branco, mas faz mostrar o conteúdo sem os efeitos.

    Como eu sou “das antigas”, e cheio de manias, sempre faço o projeto todo funcionar sem o javascript. O funcionamento do site não pode depender dele (exceto os forms e validações).
    Depois aplico os “efeitos” e funcionalidades, da camada de comportamento com a jQuery.
    Há ainda a opção de utilizar a tag noscript, para quando não há outra alternativa sem usar o javascript. Nem que seja para colocar um aviso que o javascript é necessário para navegar no site.

    Só testando…
    Com as diferenças no “onload”, em alguns projetos, o layout se “monta novamente” só depois de carregar tudo(é num “piscar de olhos”, mas é visível). Esconder elementos, mostrar, animar… Mas, já sabendo disto, projeta-se para ser o menos “destruidor” possível. Ou para não “entregar” a sua surpresa antes da hora.

  5. Tárcio Zemel26/08/2010 

    @ Acelio
    Opa, quantas dicas legais! Obrigado por complementar o artigo! ;-)

Comente!

Um homem que para de anunciar para poupar dinheiro é como um homem que para um relógio para poupar tempo.

Henry Ford