jQuery: usar ou não usar?

Esta é uma questão frequente quando se começa um projeto web. Origina por vezes discussões acesas. A resposta rápida é que sim; provavelmente o que se está a desenvolver justifica o seu uso.

Quando se pondera a utilização de uma qualquer framework ou biblioteca (em qualquer projeto de software) deve-se questionar se os ganhos compensam o peso extra; se a complexidade do problema a resolver o justifica. De forma grosseira e geral, a questão é:

  • partido que vamos tirar da biblioteca/framework > 1 ?
  • peso trazido pela mesma

Assim, há que considerar:

  1. Dificuldade de instalação e de aprendizagem;
  2. Peso antes de runtime: o peso extra no projeto pode atrasar tempos iniciais (ex: deploys, downloads);
  3. Peso em runtime: gastos extra de memória (RAM) e de processador: colocar uma camada à frente, por mais “fina” que seja, no cômputo geral, pode ser significativo;
  4. Liberdade do uso: a instalação e/ou adição de uma biblioteca não deve forçar o seu uso;
  5. Abstração indevida: ao se fazer tudo em alto nível, perde-se a noção do que se passa “por baixo”, o que é imprudente;

Em software, a complexidade não se elimina, apenas se transfere. Ao usar jQuery, está a reduzir a complexidade de programação, mas por outro lado, a aumentar a complexidade para o browser, que tem de realizar mais operações, gastando mais tempo e memória. Quanto às considerações acima mencionadas:

  1. Dificuldade de instalação e de aprendizagem: para começar a usar jQuery basta incluir um ficheiro JavaScript; as suas instruções de código são coerentes e simples e portanto de aprendizagem muito natural;
  2. Peso antes de runtime: o download é reduzido: o jQuery é apenas um ficheiro com cerca de 90KB (versão minified). Além disso, o uso de CDN (servidores que permitem ao browser reutilizar ficheiros em cache) tornam isso quase irrelevante.
  3. Peso em runtime: na grande maioria dos casos, o preço a pagar são apenas alguns milisegundos extra (poupam-se horas de desenvolvimento); é certo que se devem aplicar boas práticas (ex. caching de variáveis, boa utilização de seletores, …) mas são quase as mesmas que em JavaScript puro. Onde o uso direto de JavaScript for determinante em termos de velocidade, pode-se sempre fazê-lo…
  4. Liberdade do uso: após ser incluida, a biblioteca jQuery só é usada se se quiser; se nunca se usar, o único peso extra é o do seu download (se se usar um CDN, nem isso).
  5. Abstração indevida: assumindo que ninguém deve aprender jQuery sem estar fluente em JavaScript e que o código jQuery é aberto e disponível (para não falar das ferramentas de desenvolvimento dos browsers), não há desculpa para se fazer as coisas sem se ter noção dos seus impactos… De qualquer forma, mais tarde ou mais cedo, o programador irá lidar com os problemas de baixo nível.

Algumas das vantagens que o jQuery traz, como o suporte cross-browser (onde se incluem browsers mobile), podem ser colmatadas com microframeworks e/ou pollyfills (ou scripts do próprio programador)… Mas as principais vantagens: coerência, simplicidade, expansibilidade via plugins (ex: jQuery UI), suporte da comunidade, uma API fluida, constantes atualizações, entre outras… ficam pelo caminho.

Para os fãs, poupa muitas horas de trabalho (ex: mudar a cor dos elementos com uma classe pode passar de 5 linhas para 1). Tanto para um amador que quer fazer um site para o tio, como para um profissional desenvolver um backoffice, o jQuery pode ser de grande ajuda. Para os puristas, o peso, muitas vezes, não compensa o seu uso. Contudo, os ganhos para o programador são elevados sendo difícil negar o seu uso. Podemos até argumentar que ajudou a democratizar o desenvolvimento web, permitindo a todos “fazer sites”.

Se fôssemos a pensar nos “6 ou 7 milisegundos” ganhos pelo uso direto de uma linguagem, nunca se tinham inventado linguagens de alto nível como o Java ou o C# e ainda estaríamos a programar em Assembly. Num mundo de sites e aplicações web tendencialmente mais complexas, o programador tem de se munir de ferramentas que lhe permitam evitar reinventar a roda, focando-se mais nos problemas do negócio e menos nos dos computadores.

Em conclusão, afirmar que nunca se deve usar jQuery ou outras bibliotecas é claramente um extremo, e portanto, deve gerar algum ceticismo… afirmar que se deve usar sempre também é exagerado. Cada caso é um caso… e raramente há soluções universais. Mas há que ser pragmático: na maioria dos projetos web as vantagens do jQuery suplantam de longe as desvantagens: até para as coisas mais simples pode ser uma lufada de ar fresco, poupando muitas linhas de código e algumas dores de cabeça.

Publicado na edição 46 (PDF) da Revista PROGRAMAR.