Pergunta

Acabei de iniciar um novo trabalho, e minha primeira tarefa é limpar o código JavaScript para o site - o problema é que existem duas bibliotecas JS sendo usadas (jQuery e protótipo / scriptaculoso).

Estou tentando descobrir o que está sendo usado onde, mas é muito difícil, especialmente não estar muito familiarizado com o código.

Alguém tem alguma sugestão? Eu provavelmente preferiria soltar protótipo / scriptaculoso, se possível.

Foi útil?

Solução

Eu lixo protótipo de todos inclui em todas as páginas, removeria o noconflict no jQuery e depois mantenha o Firebug pronto para me mostrar todos os erros e passar por todas as páginas uma a uma, substituindo funções por equivalentes de jQuery, até que as coisas funcionassem corretamente.

..Pain in the Butt Method, mas duvide que você achará menos doloroso. Pode ser útil: http://api.jquery.com/browser/

Outras dicas

Eu não sugeriria abandonar uma biblioteca JavaScript, pois isso seria uma mudança transversal. Muito perigoso e causará insetos espúrios agora e no futuro.

Provavelmente, esse protótipo usará o $ variável, e esse jQuery estará executando noConflict modo, para que seja referenciado pelo jQuery variável.

Pode ficar complicado, por exemplo:

 // here $ = Prototype

 jQuery(function($){
     // here $ = jQuery

 });

 // here $ = Prototype

E em arquivos separados:

// here $ = Prototype
(function($){
    // here $ = jQuery;
})(jQuery);
// here $ = Prototype

É realmente importante prestar atenção ao seu contexto para ver qual biblioteca está sendo referenciada. Além disso, é perfeitamente aceitável Para fazer perguntas aqui se você é perplexo sobre como fazer algo no jQuery que foi feito no protótipo.

Livrar -se do protótipo em particular poderia ser perverso, especialmente se houvesse pessoas trabalhando na base de código que realmente "obtiveram" o protótipo. Estou falando aqui sobre mim, tendo trabalhado em um aplicativo da Web muito grande que, de fato, tem exatamente a mistura que você descreve (embora eu pense que quando deixei as coisas do scriptaculoso se foi).

Devido à maneira como o protótipo funciona, pode haver dependências absolutamente em todos os lugares.

Esta é uma tarefa um pouco assustadora. A sugestão de viver e deixar viver as duas estruturas não é ruim, desde que as coisas estejam funcionando. É provável que o jQuery esteja em noConflict Modo se eles são realmente residentes na mesma página.

Uma ferramenta muito útil é usar o Barra de ferramentas do desenvolvedor da web Para Firefox e navegue para uma página e faça: Information -> View JavaScript - Isso lhe dará uma lista completa de todo o script JavaScript carregado com <script> tags, bem como javascript embutido em <script> Tags, embora eu ache que os manipuladores de eventos embutidos não estão listados lá.

Mas uma coisa que você pode fazer é simplesmente soltar protótipo ou javascript e ver qual acaba com menos erros. Então você está a caminho de depurar o que está faltando.

Isto é Mais fácil de padronizar em uma biblioteca, mas há um caso a ser feito para "se não estiver quebrado, também não conserte".

Levei algum tempo para aprender um pouco sobre todas as estruturas, fazendo os mesmos efeitos no HTML idêntico: Artlung Rosetta: Você pode mergulhar rápido nas diferenças entre sintaxes de protótipo e jQuery comparando isto e isto.

Boa sorte!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top