Porque a unificação de JS raramente funciona (e como resolver)
Desenvolvimento, Magento 1
Atualizado em 14 de abril de 2020
Tanto no Magento 1 quanto no Magento 2 é possível unificar todas as chamadas JavaScript nativamente. Desta forma, ao invés de realizarmos várias chamadas para cada arquivo .js, o Magento juntará todos os arquivos em um único arquivo, fazendo assim uma única chamada.
No entanto, a maioria dos desenvolvedores já perceberam que ao ativar esse recurso, a maioria das classes JavaScript e implementações de outros módulos param de funcionar. E isso é ainda pior no Magento 1.
Porque isso acontece?
- O principal motivo está relacionado a conflitos entre as bibliotecas jQuery e Prototype (no Magento 1). Basicamente isso ocorre pois ambas bibliotecas são chamadas através do alias
$
.
Sendo assim, se o jQuery é inserido antes do prototype, o $
do prototype deixa de funcionar. E vice-versa.
Como resolver?
Para resolver isso você precisará:
- Sempre inserir a biblioteca do jQuery antes de qualquer outro script, principalmente antes do Prototype
- Inserir
jQuery.noConflict();
no final do arquivo jQuery ou adicioná-lo logo após a sua inclusão. - Certifique-se que nenhuma outra biblioteca chama o jQuery usando
$
.
No caso do passo 3, você pode substituir qualquer chamada do tipo $(
por jQuery(
. Apenas tome cuidado para não alterar os JavaScripts que estejam fazendo isso para se referenciar ao Prototype.
Considero inclusive uma boa prática usar jQuery(
ao invés de $(
ao referenciar o jQuery. Isso evita uma série de conflitos e possíveis dores de cabeça.
* No caso do passo 1, já li relatos que dizem exatamente o oposto. Ou seja, pra inserir o jQuery depois do prototype. Me conte nos comentários se funcionar pra você.
Porque devo me preocupar com isso?
Por padrão, tanto o Chrome quanto o Firefox, limitam o número de requisições simultâneas em um site, limitando a 6 requisições paralelas por servidor. Ou seja, quanto mais arquivos cada página do seu e-commerce requisitar dentro de um mesmo servidor, maior será o tempo de carregamento.
Embora isso possa ser diferente com o novo padrão HTTP/2, a redução no número de requests nunca será mal vista pelos navegadores e muito menos pelos buscadores.
E como sabemos, quando se fala em comércio eletrônico, cada segundo impacta no seu faturamento.
E aí? Vai investir um tempo nisso ou deixa pra depois?
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-1/porque-unificar-js-nao-funciona/"]