"Todo o homem luta com mais bravura pelos seus interesses do que pelos seus direitos." Napoleão Bonaparte
Uma dúvida comum entre os que começam a se interessar por Javascript é se devem aprender primeiro jQuery ou JavaScript. Esta pergunta era principalmente comum entre programadores inexperientes que entendiam que JavaScript era uma linguagem a ser utilizada apenas na camada de interface de usuário para realização de eventos, validações, efeitos e manipulação dinâmica de elementos do DOM(Document Object Model).
Hoje em dia esse tipo de dúvida deve se tornar rara, pois com a advenção do NodeJs, JavaScript agora se tornou famoso por poder atuar também fortemente no Back-End. Agora jQuery na camada de dados e lógica de negócios praticamente ninguém ouviu falar, não é verdade?
Assim, quando se pensa no Back-End, a diferença entre os dois se torna clara: JavaScript é uma linguagem, enquanto jQuery é uma biblioteca focada na manipulação de elementos do DOM. Bibliotecas são feitas com base em uma linguagem e frameworks são feitos geralmente com base em uma biblioteca, portanto é importante não confundir jQuery com um framework, essa definição não poderia ser mais inapropriada. Vejamos como a página oficial do jQuery se auto-define:
"jQuery é uma biblioteca de JavaScript rápida, pequena e rica em recursos. Ele faz coisas como manipulação de elementos HTML do documento, manipulação de eventos, animação e solicitações Ajax, de maneira muito mais simples. Com uma API fácil de usar, ele ainda funciona em uma multiplicidade de navegadores. Em uma combinação de versatilidade e capacidade de extensão, jQuery mudou a maneira de milhões de pessoas
escreverem JavaScript."
Apesar de eu não gostar muito do trecho um tanto sensacionalista "mudou a maneira de milhões de pessoas...", essa definição, como era de se esperar vindo da página oficial, é excelente.
A essa altura, vamos ao que realmente interessa:
- O que aprender primeiro;
- Vantagens do Jquery;
- Desvantagens do Jquery;
O Que Aprender Primeiro
Sem sombra de dúvidas, aprenda primeiro Javascript, pois:
- Em um curto prazo, você já vai ser um melhor profissional;
- Você será capaz de utilizar bibliotecas e aprender frameworks de maneira mais rápida;
- Você vai dar o primeiro passo para desenvolver softwares de grande escala;
- Você vai ser capaz de trabalhar também no Back-End, podendo se tornar um Full Stack Developer;
Infelizmente, o mundo não é tão perfeito assim e o desenvolvedor, principalmente o iniciante e com foco em Front-End, se vê diante de oportunidades de emprego que exigem mais habilidades em jQuery do que em JavaScript. Neste caso, eu recomendo que se tenha um rápido entendimento dos principais conceitos do JavaScript e, em seguida, invista no aprendizado e no hábito de utilizar jQuery. Uma vez que tenha conseguido o trabalho desejado, reinicie o estudos de JavaScript dessa vez mais fortemente, pelos motivos listados anteriormente.
Se você tiver escolha, porém, prefira uma empresa que valorize o conhecimento de JavaScript puro(vanilla). Lá provavelmente você terá mais chances de encontrar profissionais muito bons, desafios interessantes e oportunidades de trabalhar com frameworks mais robustos como Angular, Backbone ou Ember.
Vantagens do Jquery
Compatibilidade entre Browsers
JavaScript está evoluindo e constantemente há novos recursos disponíveis na linguagem, dependendo da versão do navegador. Diante disso, o desenvolvedor, pode fazer uso do design pattern Facade para se antecipar a futuras mudanças e encapsular detecção de recursos e extensões da linguagem. E é justamente isso que jQuery faz, em seus lançamentos de versões. Ele se antecipa ao fato de que nem todos os navegadores podem possuir os mesmos recursos ou que podem ter recursos iguais, mas com nomes diferentes.
Obs: Compatibilidade entre browsers não quer dizer compatibilidade entre versões antigas de um mesmo browser. jQuery pode até funcionar em versões mais antigas, mas não é de fato testado e não consertam bugs que, porventura, possam aparecer nas versões mais antigas.
Simplificação
jQuery é sinônimo de simplificação e pode ajudar bastante para se alcançar um desenvolvimento mais rápido. A simplificação das chamadas AJAX(do objeto XMLHttpRequest), por exemplo, é excelente e por si só é um grande trunfo.
Para um entendimento melhor, imagine como você faria pra criar sua própria biblioteca de manipulação do DOM com a capacidade de remover um elemento:
function MYLibrary(element) {
this.element = element;
}
MYLibrary.prototype.remove = function() {
this.element.parentNode.removeChild(this.element);
};
var MYElement = new MYLibrary( document.getElementById(id) );
MYElement.remove();
Superficialmente, é essa a base da capacidade simplificadora do jQuery.
Acesso a recursos futuros
jQuery, assim como outras bibliotecas(por exemplo a PrototypeJs, Underscore), pode antecipar alguns recursos ainda não existentes na linguagem. O método indexOf e bind, por exemplo, não foram suportados por todos os browsers, durante algum tempo, mas jQuery já havia se antecipado, garantindo compatibilidade. De certa forma, isso não deixa de ser uma simplificação, mas com a característica de ser antecipada.
Velocidade de Desenvolvimento
A simplicidade do jQuery permite às equipes um desenvolvimento mais rápido. E isso é especialmente verdade quando se trata de uma equipe ainda com pouca experiência.
Desvantagens do jquery
Performance
Algumas vezes, tudo que você quer é apenas um livro(recurso) da biblioteca, mas ao invés disso, você tem várias prateleiras pela frente e acaba perdendo um certo tempo procurando o que realmente quer.
Da mesma forma, jQuery tem perda de performance. Esse tipo de perda é inerente a quaisquer abstrações, mas é acentuado pela quantidade de recursos extras envolvidos.
A implementação em si também é menos otimizada quando comparada a implementações que já vem do próprio core do Javascript. É bom evitar a utilização de jQuery, pelo menos, em loops muito extensos ou aninhados onde uma penalidade de performance pode se multiplicar ou até crescer exponencialmente.
Mágica
Até a facilidade da biblioteca pode ser uma desvantagem algumas vezes. Ser capaz de pensar da "maneira mais difícil", usando apenas JavaScript pode lhe deixar preparado para resolver problemas mais difíceis. Ter, pelo menos, uma idéia da mágica que acontece nos bastidores é sempre muito importante.
O site You Might Need jQuery é uma interessante fonte para conhecer os equivalentes das implementações jQuery em JavaScript. Uma maneira melhor ainda é escrutinando o código fonte da biblioteca.
Substituível
jQuery é uma biblioteca, então possui outros concorrentes. Se você estiver usando um framework como o Angular que possui o seu próprio jqLite, não haverá necessidade de usar jQuery. Saber JavaScript, entretanto, sempre será útil.
Embora essa não seja exatamente uma desvantagem técnica em relação ao JavaScript. É importante notar que cada vez surgem mais opções ao jQuery, então é interessante ficar alerta e conhecer as principais bibliotecas e frameworks que podem se encaixar melhor na dimensão do aplicativo que você pretende construir.
Próximos Passos
Conhecer os fatores profissionais e técnicos que impactam na decisão de escolher jQuery é essencial. Mais importante, porém, é adquirir as habilidades necessárias a dominar tanto a linguagem, quanto a biblioteca que é, com certeza, excelente naquilo se propõe.
Não é a toa que jQuery é tão popular, não fique com medo de usá-lo. Apenas mantenha em mente que aprender JavaScript é mais importante para sua carreira.