jQuery – Segundas Impressões

Por algum motivo de natureza desconhecida, nunca gostei muito de jQuery. Talvez eu não tenha gostado muito do $ pau-pra-toda-obra, ou então da excessiva facilidade que a biblioteca propõe. Por alguma outra razão também desconhecida, há alguns dias atrás resolvi dar uma segunda olhada na biblioteca-prodígio. Se tem tanta gente usando, algo de bom deve ter.
Durante os Testes
Depois alguns minutos testando a biblioteca direto no Firebug, tive a mesma impressão do que na última vez em que a usei: cada função, cada método faz no mínimo umas três coisas diferentes. Definir um atributo, recuperar seu valor, definir vários atributos ao mesmo tempo e ainda pode servir um cafezinho. Talvez esse tenha sido um dos motivos para me afastar da biblioteca. A diferença é que de uns tempos pra cá venho aumentando bastante minha maturidade na programação, e vi que esse conceito pode servir muito bem. Ponto pro jQuery.
Outra característica que não me agradou muito na primeira experiência com jQuery é o retorno da função $: ela sempre retorna um objeto jQuery, e não o objeto DOM que eu escolhi. Isso, na época, me incomodou muito. E se, na pressa, eu quiser jogar um innerHTML e não quiser me preocupar com criar e injetar nós? Mais uma estupidez minha, o método html cuida de tudo isso, e nunca mais vou precisar me preocupar em criar nós… Além do mais, acabei descobrindo que não estender objetos nativos é bem melhor em questões de performance. Mais um ponto pro cifrão polivalente.
Durante a Produção
Hora de passar para a prática. Como qualquer outra nova ferramenta, é complicado usar jQuery quando se está acostumado à Mootools. Estou me atrapalhando bastante, principalmente na hora de usar os seletores. Já cansei de usar $$, esquecer o # antes de IDs, trocar nomes de métodos, enfim. Tudo normal, eu pego o jeito…
Esquecendo a questão da produtividade em período de adaptação, fiquei bastante satisfeito com a biblioteca. No que ela se propõe a fazer, é simplesmente fenomenal, algo fora de série. Versátil, simples e poderosa. Gostei muito dos métodos relacionados a Ajax que, para qualquer requisição simples, são úteis e otimizados ao extremo em termos de código.
E a escolha?
Gostei de jQuery, muito. Acredite, se você nunca usou, não sabe o que está perdendo, e se já usou e não gostou antes de testar mais aprofundadamente, não seja cabeça-dura como eu e dê outra chance. John Resig, o criador da jQuery, com certeza sabia o que estava fazendo, até porque ele é o cara!
Mas e a Mootools, onde fica nessa história? Não vou abandoná-la, ainda é minha biblioteca preferida. Ela é imbatível em características que o jQuery não tem. Ambos servem para propósitos diferentes. Não vou “escolher” alguma das duas, o ideal é unir o potencial de ambas, não sou xiita.
Essa experiência serviu para me mostrar que uma ferramenta não pode resolver todos os seus problemas de maneira eficiente, mas podemos unir várias ferramentas para resolver vários problemas da melhor maneira possível. Aguardem os próximos capítulos dessa história…







No trabalho estou usando muito Jquery, sempre fui contra usar frameworks, mas realmente ela eh muito facil de mexer, da pra aprender rapido e aumenta DEMAIS a produtividade depois que vc se acostuma com ela.
No inicio tive os mesmos problemas e passei raiva como voce, querendo usar um innerHTML no meio das coisas e outras coisinhas assim, mas como era pro trabalho me vi obrigado a continuar usando, pois eh padrao aqui, fui aprendendo e vendo que ela realmente oferece muito e os pequenos problemas de inicio sumiram… muito boa.
Já utilizei várias bibliotecas, seja em testes ou em produção mesmo. Mas IMHO, jQuery é hoje a biblioteca mais madura para produção na Web. Há algum tempo atrás, escrevi a respeito: jQuery = Produtividade.
@Rodrigo: eu também, depois de mexer um pouco mais do que pequenos testes, os “problemas” foram sumindo, e a produtividade aos poucos está aumentando na medida em que vou aprendendo.
@Ciro: jQuery é muito madura mesmo, mas infelizmente ela não serve pra tudo. Seria interessante ver a mesma maturidade em outras funções…
jQuery só não serve pra efeitos visuais avançados mesmo.
No mais, nunca tive nenhuma limitação.
Os seletores e a tal “chainability” aumentam a produtividade estrondosamente.
@Alex: a única limitação que vejo em jQuery é propriamente seu escopo limitado, só DOM, Ajax e efeitos básicos (avise se esqueci de alguma coisa). Para trabalhar com arrays, funções, números e strings ainda é preciso recorrer a Mootools (no meu caso). Como você disse em outro comentário, seria ótimo as duas juntas…
Ia perguntar o que vc sentiu falta na jquery, mas vc já respondeu nos comentários! Bom texto! Abraço!
@Walter: vou falar um pouco mais sobre meu uso em jQuery e Mootools, mais um comparativo mesmo. Fica ligado aí!
O lance do $ não retornar um objeto DOM me dá nos nervos até hoje, e me faz sempre ficar com um pé atrás. Acho que por birra mesmio, não gosto.
Até pq. me acostumei a usar bastante a Prototype, aí já viu, né?
Mas o que acho bem bacana da jQuery – e que ela sai na frente de qq outra biblioteca – é a facilidade de escrever plugins para ela. Isso é fato: tem pra todo mundo.
Já fiz muitos códigos “hardcore” em Javascript hehehe e garanto: minha vida pode ser dividida em BJ e AF. Before and After jQuery. =)
@Chris: é, juntar o hábito de Prototype com o uso de jQuery deve ser meio complicado, assim como Mootools. Concordo contigo: escrever plugins pra jQuery é fácil e bem mais bonito que em outras bibliotecas.
@Klaus: parabéns por ter visto a luz… Heheheheh
Vejam a portabilidade do jquery neste post do John Resig
http://ejohn.org/blog/classy-query/
Muito interessante.
[s]
JunioR
@JunioR Veja o source do Classy jQuery.. (=
Nele diz:
// Happy April Fools Day 2008
// The code is good – read for inspiration, but
// please don’t use this :-(
// Inspired by base2 and Prototype
E uma pessoa que foi importante mas que ngm sabe que existe é: http://bennolan.com/ Em 2005 ele desenvolveu a Behavior.js e John se curtiu, se inspirou na proposta e viu futuro naquilo, “Seletores CSS, métodos cascateados. Meu… sensacional… isso dá dinheiro”. haha
“se, na pressa, eu quiser jogar um innerHTML e não quiser me preocupar com criar e injetar nós?”
O objeto jquery que o ‘$’ retorna pode ser acessado como se fosse um array de DOM’s. Ou seja, se você pede $(‘div’), o índice ’0′ deste array trará a primeira div como um objeto DOM normalzão (podendo usar o velho innerHTML, etc).
Ex: $(‘div’)[0].innerHTML = ‘haha’.
Uma pena que isto é pouco divulgado heheh. Ví que muita gente tem esta dúvida. Teste e divulgue isto ae pro pessoal.
@Micox: boa, sempre tive essa curiosidade… Isso explica porque um console.debug mostra o objeto, mas eu não conseguia acessá-lo. Bora divulgar! Mas de qualquer forma, com os métodos do jQuery isso torna-se até desnecessário na maioria dos casos.
Seu post me ajudou muito a conhecer Jquery. Resolvi partir para ação : ). Estou com o Jquery UI , e estou usando o accordion dentro de um dialog. Funciona ok! O problema é o seguinte:Não quero que o código do accordion fique na mesma página html do dialog!
fiz o seguinte:
inseri uma div com id=accordion
e
$.get(’accordion.html’,function(resultado){
$(’#accordion’).html(resultado);
para inserir o accordion! Só exibe como texto e não funciona os efeitos do accordion!
Se você souber como resolver ou outro jeito de fazer ilumine-me … pois procurei uma solução e não obtive sucesso!