Desenvolvimento

24 fev, 2015

Você não precisa de jQuery para isso

Publicidade

Bom, jQuery é “Uma coisa do passado” é uma realidade para muita gente. Mas a grande graça do jQuery é que você consegue fazer as coisas de uma forma muito mais fácil e que você tem certeza de que irá funcionar do IE7 até o Firefox mais moderno, e essa segurança é muito legal para quem não quer perder tempo estudando.

Neste artigo, vou pedir para você ter um olhar mais critico sobre a pergunta “Por que que eu preciso do jQuery?” e irei avaliar o site “What color is it?”, uma página muito divertida e estupidamente simples que transforma a hora atual em um hexadecimal e coloca esse hexa como background. É uma ideia idiota? De certa forma, sim! Todo mundo gostou disso? Sim!

jquery-1

Quando você encontrar seu site favorito, não pense! Pressione CTRL+SHIFT+U

Com esse atalho, você descobre o mundo como ele realmente é, sem fantasias. Você vê o código-fonte de qualquer site. Se você estiver em um Mac, é COMMAND+ALT+U no Chrome e COMMAND+U para o Firefox. E se você usa outro para desenvolver, você já sabe!

Quando você vê o código-fonte, vê a verdade nua e crua, um código mal feito, um código bem feito ou um minificado o suficiente para você ter preguiça de querer entender algo.

Se você é uma pessoa inteligente e proativa (e é), você consegue aprender muito com um buscador e com o DevTools de seu browser aberto.

jQuery e jQuery UI

jquery-2

O site What color is it? tem apenas umas 20 e poucas linhas de JavaScript, e o autor sequer usou o jQuery de verdade. Então, eis a pergunta: por que usar jQuery? Será força do hábito?

Este é todo o código do site, vamos dar uma olhada nele e logo abaixo vamos às críticas, hehehe.

function dotime(){
 
    $("body").css({"transition": "all 0.8s", "-webkit-transition": "all 0.8s"});
 
    var d = new Date();
    var hours = d.getHours();
    var mins = d.getMinutes();
    var secs = d.getSeconds();
 
    if (hours < 10){hours = "0" + hours};
    if (mins < 10){mins = "0" + mins};
    if (secs < 10){secs = "0" + secs};
 
    hours.toString();
    mins.toString();
    secs.toString();
 
    var hex = "#" + hours + mins + secs;
 
    $("#t").html(hours +" : "+ mins +" : "+ secs);
    $("#h").html(hex);
 
    document.body.style.background = hex;
 
    setTimeout(function(){ dotime();}, 1000);
}

<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 1.5;">É usado jQuery nas linhas 3, 20 e 21. Vou separar meus comentários e explicações por títulos e linkando para o número da linha do código acima. Então, abra o site What color is it? no seu browser e abra o código-fonte.</span>

A função dotime (ou quando eu posso manipular o DOM?)

Quando você coloca o JavaScript no fim da tag body antes do fechamento dela, não precisa esperar o evento onLoad, ou famoso $(document).ready do jQuery, ou o DOMContentLoaded, porque você já consegue selecionar elementos e executar funções com os elementos da página. Então, você só precisa esperar o DOM ficar pronto, quando você coloca seus scripts dentro da tag HEAD.

Para começar, vamos retirar a função dotime e, na tag body, retirar a chamada da função dotime. Você não precisa disso.

Eu costumo colocar meu código em volta de uma função, que é executada automaticamente, só para criar um escopo novo e não deixar variáveis globais.

(function () {
  var oi = 'Oie';
}());

<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 1.5;">Uma forma simples de explicar isso é que a variável “oi” não será visível no console do DevTool. Isso porque ela não é uma variável global, mas sim uma variável que está disponível apenas dentro daquela função. E é uma boa praticar deixar poucas variáveis globais - quanto menos melhor. Seu código não deveria depender de variáveis globais.</span>

Você não precisa de jQuery para selecionar elementos

Veja a linha 3, 20 e 21, elas estão selecionando elementos com jQuery.

A linha 3 está adicionado um transition para a tag body, que é um transition que não precisa estar no JavaScript – poderia estar no CSS. Então, removi a linha 3 e coloquei a propriedade transition no CSS.

Para selecionar um elemento via JavaScript de uma forma que funcione até no IE8, você tem que fazer isto aqui:

document.querySelectorAll(‘seletor’); e document.querySelector(‘seletor’);

onde selector é um mesmo seletor que você é acostumado a escrever no jQuery ou no CSS. Você tem que ter em mente que essa função no IE8 é limitada aos seletores simples do CSS2, os mais complicados e cheios de mágicas do CSS3 não funcionaram no IE8, talvez nem no IE9, mas no Firefox, Safari, Chrome entre outros irá funcionar perfeitamente. Mas já é uma boa ferramenta, e você não precisará mais de jQuery para isso.

Então, as linhas 20 e 21 ficam assim:

document.querySelector('#t')
document.querySelector('#h')

No código deste exemplo, são usados IDs para delimitar os elementos, sendo assim, você também poderia usar document.getElementById, o que significa que esse código funcionaria no IE6 sem problemas.

Você não precisa de jQuery para adicionar elementos/texto via JavaScript

Eu já falei detalhadamente sobre este assunto neste outro artigo.

Então, as linhas 20 e 21 ficariam assim:

document.querySelector('#t').innerHTML = hours + " : " + mins + " : " + secs;
document.querySelector('#h').InnerHTML = hex;

Conclusão

Você não precisa de jQuery, coloquei o código no codepen.

See the Pen What Color Is It? (VanillaJS) by Felquis (@felquis) on CodePen.

 

Desculpas

Não existe problema em usar jQuery, mas você tem que aprender JavaScript, e hoje as coisas não estão tão difíceis como eram em 2006. Recomendo a leitura do site You Might Not Need jQuery e também deste outro doc, que fala de por que libs como jQuery são importantes. O jQuery foi revolucionário, e é um belo lugar para você aprender muito sobre JavaScript!

A intenção deste artigo não é dizer que quem usa jQuery não é um bom desenvolvedor, mas sim apresentar um mundo cheio de oportunidades na JavaScriptLandia, onde vive o jQuery.

Eu não quero ser chato pegando um código de um site qualquer e dizer que o cara não tem que usar jQuery para isso e que o código do cara é ruim etc. Eu gosto de pegar uma pequena parte de código e ‘filosofar’ um pouco sobre o código – por que foi feito assim? Poderia ter sido feito melhor? Já fiz isso aqui neste outro post, e vou continuar fazendo, porque acho legal.

Outras coisas que poderiam ser questionadas neste exemplo? Sim! Mas não quero deixar este artigo muito longo, eu falo demais. Que tal você pegar o codepen e comentar o que você acha que poderia ser melhoria no JavaScript? Ou no CSS? Ou no HTML? Tem melhorias que podem ser feitas em todos os lugares, clone o codepen, faça sua melhoria e, comente aqui por que o seu ajuste torna o código melhor!