A batalha final: Mootools versus jQuery. Quem será o vencedor dessa sangrenta batalha? Tudo bem, sem violência então. Como mais novo usuário de jQuery e ainda usuário de Mootools, tive a idéia de fazer apenas uma breve comparação com as duas bibliotecas, nada de luta…
Antes de tudo, nem pensem os usuários de Mootools que sou um traidor, um subversor, nem os usuários de jQuery achem que sou um “fiel convertido” e abandonarei a Mootools para todo o sempre. Ambos dois lados de acordo e em paz, vamos à comparação.
Propósito
A primeira coisa que me fez dar uma segunda chance ao jQuery foi minha maturidade adquirida de uns tempos pra cá. Pude perceber que jQuery e Mootools têm propósitos diferentes. Pode-se usá-las para a mesma coisa, mas mais código terá que ser escrito.
A Mootools é uma biblioteca bem mais complexa e mais completa. Seu escopo é bem maior, e permite muito mais coisas. Algumas dessas coisas são a criação de classes, vários métodos para os tipos nativos da linguagem (funções para Strings, Números, Arrays), JSON, cookies, e tudo o mais que você puder imaginar através de plugins. É bem mais voltada a “programação de verdade”, ou seja, trabalhar mais com a linguagem e processamento do que seu resultado no documento.
A jQuery tem um escopo muito mais fechado: DOM. Criação e edição de objetos, seletores muito poderosos e simples, baseados em CSS e XPath e manipulação de eventos. Tudo isso integrado dentro de uma mesma função. Indo um pouco mais além, a biblioteca também inclui a criação de efeitos básicos e requisições Ajax. Ainda dentro do cifrão bombado.
DOM
Tanto Mootools quanto jQuery lutam nesse campo: DOM. Ambas também possuem a mesma função $, que vem me confundindo muito quando trabalho com uma ou outra biblioteca. Na Mootools, somente IDs. no jQuery, qualquer seletor CSS3 ou XPath. Não que a Mootools não tenha todos os seletores que jQuery, mas em uma função diferente: $$. Particularmente gostei separação, mas a versatilidade da jQuery absolutamente não me incomoda. Nessa parte, pra mim é um empate.
Ainda não tive a oportunidade de inspecionar o código da jQuery, mas posso dizer que o John Resig é um gênio: além de recuperar elementos do documento, o $ ainda os cria. E não através da criação manual de elementos e nós de texto. Você digita o HTML, e a função os cria sozinha. Adeus innerHTML… Na Mootools? Bem, acho melhor pular essa parte, vocês já devem ter percebido… jQuery na cabeça.
Quanto às outras funções, como definição e recuperação de atributos, ambas bibliotecas não deixam a desejar. A jQuery, entretanto, tem o diferencial de usar a mesma função para definição de uma ou várias propriedades, além de recuperá-las. Na Mootools, temos o get e set. Pra mim não faz diferença alguma em termos de desenvolvimento, ambas são intuitivas. Empate novamente.
No final das contas, jQuery é excepcional em tarefas de DOM, e supera, e muito, a Mootools, até por ser seu “habitat natural”.
Ajax
Ajax é outra frente de batalha em que as duas bibliotecas se enfrentam. jQuery conta com métodos extremamente simples para a tarefa, muito bons para requisições simples em aplicações pouco exigentes em relação a requisições assíncronas. Já a Mootools conta com uma classe bem mais trabalhada, mais extensa e mais flexível, principalmente para eventos.
Mesmo trabalhando com, as duas bibliotecas não o fazem para o mesmo propósito na minha opinião. A jQuery me parece melhor para requisições simples: enviar a requisição e fazer alguma coisa com a resposta. Já a Mootools trabalha com os aspectos mais “sórdidos”, como as mudanças de estado, headers, enfim. Até prefiro não falar muito sobre jQuery aqui pois não tive muito tempo com Ajax, posso ainda não ter visto algumas funcionalidades.
Efeitos
Existe algo que deixe uma aplicação mais interessante do que coisas se mexendo? Eu acho que não, mas esse não é o caso. Na jQuery, temos poucos efeitos built-in, mas me parece ser bem extensível. Já a Mootools tem uma gama enorme de transições, e podemos escolher qualquer propriedade do CSS para animar, e o melhor: ainda contamos com uma maneira muito fácil de criar novas transições. Mas a Mootools, principalmente nessa nova versão, peca em manter esses efeitos fáceis de aplicar. No jQuery, só um fadeIn ou fadeOut e presto, temos um efeito. No entanto, por mais chato que seja, ainda fico com a Mootools…
Plugins
Quando só a biblioteca sozinha não dá conta, hora de chamar os plugins. Ambas bibliotecas são extremamente extensíveis, cada uma a sua maneira. Na Mootools através da extensão das classes, no jQuery através de um “mecanismo” muito interessante, que “gruda” suas funções na função jQuery.
Mesmo sendo um fã da programação orientada a objetos e da maneira como a Mootools o usa, gostei muito mais da maneira como o jQuery faz a inclusão de plugins. Eles realmente passam a fazer parte da biblioteca. Vitória do jQuery, embora no final das contas não faça diferença alguma…
Facilidade de Uso
Nenhuma das bibliotecas tem um uso complicado. Além disso, ambas tem um foco diferente.
Talvez você já tenha notado, mas a maioria dos designers e programadores JavaScript menos experientes preferem jQuery. Não é à toa, ela é extremamente simples de ser usada. Nunca ouviu dizer que jQuery é para designers? Isso também não significa que usuários mais experientes ou experts na linguagem não irão gostar ou conseguir trabalhar.
Já a Mootools, como diz o próprio site, é direcionada a usuários intermediários ou avançados. À primeira vista ela é realmente mais complicada, sem dúvida. Talvez por isso não chame tanto a atenção quanto jQuery.
E o vencedor é…
Como disse logo no início do texto, jQuery e Mootools são bibliotecas diferentes, servindo para propósitos diferentes. Não é possível compará-las em sua totalidade, por isso não falei sobre muitos recursos que a Mootools oferece e jQuery não tem (built-in, é claro). jQuery é para DOM, Mootools é para facilitar sua programação. Já imaginou ambas bibliotecas juntas? Enfim, tenha bom senso e saiba utilizar as bibliotecas onde elas se dão bem, e não seja cabeça-dura como eu era tentando usar a Mootools em qualquer situação…