Creio que todo mundo já conheça a função noConflict do JQuery para evitar conflitos com outros frameworks que utilizam a variável dóllar ($). JQuery é sem dúvidas o melhor framework javascript para manipulação DOM e não há motivos e nem desculpas para não o usar, principalmente com essa resolução de conflitos.
Tenho refatorado alguns códigos javascript e o pessoal tem resolvido o conflito de forma confusa e misturando código de dois framework, inclusive código DOM nativo. A documentação recomenda, como uma opção, atribuir o resultado da função noConflict a uma variável e ela será o seu objeto JQuery.
Imagina que você tem Prototype e Jquery na mesma aplicação como no codigo abaixo:
$J = jQuery.noConflict();
//codigo prototype$("id_de_algum_elemento").hide();//codigo jquery em seguida$J("#id_do_elemento").load("caminho.html");A legibilidade vai ser horrível para manutenção desse código porque você vai ficar com códigos misturados com sintaxes e estilos diferentes, a medida que isso vai crescendo a manutenção vai ficando impossível.
Minha sugestão é utilizarem Closure e Currying para resolver o conflito, isolar o código e deixar bem mais claro. Se ler a documentação lá do noConflict tem exemplo como o código abaixo.
/* essa chamada evita o conflito com outros frameworks que usam dollar ($) */jQuery.noConflict();
(function($) { // Seu código jquery vai aqui $("#id_do_elemento").load("caminho.html");})(jQuery);
//codigo prototype$("id_de_algum_elemento").hide();//...
Se você preferir deixar claro a diferença entre os frameworks pode continuar a usar outra variável no lugar do $, mas a idéia é isolar o código de cada framework.
Posted in Frameworks, JavaScript, Jquery, Melhores práticas, Web Development ~ No Comments
