Posicionamento do JavaScript: Head vs. Footer – Prós e Contras

JavaScript no footer ou no header? Qual a importância para os Core Web Vitals e qual você deve usar?

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2024-11-27

Posicionamento do JavaScript: Head vs. Footer – Prós e Contras

Ao desenvolver páginas web, o posicionamento do código JavaScript pode impactar significativamente o desempenho da página, a velocidade de carregamento e a user experience. Tradicionalmente, tem sido recomendado colocar o JavaScript no <head> da página. Esta é uma escolha segura, mas será a escolha certa? Neste artigo, vamos explorar as diferenças entre JavaScript no head e no footer da página, examinando os prós e contras de cada abordagem e os contextos em que são mais adequados.

Contexto: o preload scanner

O preload scanner é um segundo parser de HTML que analisa rapidamente todo o HTML da página e busca recursos críticos como imagens, arquivos CSS, arquivos JavaScript e outros assets que serão necessários para que a página seja renderizada corretamente. O preload scanner geralmente busca os recursos na ordem em que os detecta na página. É aí que entra o posicionamento do JavaScript: quando o JavaScript é colocado no footer, ele é detectado mais tarde e o download é iniciado após os recursos acima dele.

JavaScript no Head: 

Colocar o código JavaScript na seção <head> do documento HTML tem algumas vantagens, especialmente quando se trata de organização do código e separação do markup HTML. Aqui estão os prós e contras de usar JavaScript no head:

Prós:

  1. Separação do Código: Manter o código JavaScript no <head> permite uma separação clara entre a lógica do script e o conteúdo HTML, tornando o código mais fácil de manter e ler.
  2. Download Antecipado: O JavaScript no head é enfileirado para download antes de qualquer um dos recursos no body da página (como imagens, vídeos e iframes)
  3. Execução Mais Rápida: Scripts que são enfileirados para download geralmente são executados antes dos scripts no footer. O tempo exato de execução depende de muitos fatores. Se estiver interessado, sugiro que leia Defer vs Async JavaScript e como isso afeta os Core Web Vitals

Contras:

  1. Bloqueio de Renderização: Quando o JavaScript é colocado no <head> (sem o atributo defer), ele pode bloquear a renderização dos elementos HTML, resultando em um atraso na exibição da página até que a execução do script seja concluída.
  2. Carregamento Mais Lento da Página: Devido ao download antecipado, ele compete com outros recursos importantes como o elemento de Largest Contentful Paint.

Quando você deve colocar JavaScript no head?

Scripts importantes: Scripts que são críticos para a renderização ou críticos para a experiência da página devem ser colocados no head da página. Por exemplo, scripts que controlam seu menu, seu slider principal ou seu aviso de cookies devem ser colocados no head da página.

Scripts de Detecção de Recursos: Em certos cenários, bibliotecas JavaScript como Modernizr, que são usadas para detecção de recursos, podem ser necessárias no <head> para detectar as capacidades do navegador logo no início do ciclo de vida da página.

JavaScript no Footer: 

Colocar o código JavaScript na parte inferior da página, logo antes da tag de fechamento </body>, tornou-se uma prática amplamente utilizada. Isso enfileirará o script para download após os outros elementos no body, como imagens e vídeos. Isso melhorará a velocidade de renderização em detrimento da funcionalidade. Aqui estão os prós e contras de usar JavaScript no footer:

Prós:

  1. Carregamento Mais Rápido da Página: Ao colocar o JavaScript no final da página, o conteúdo HTML carrega primeiro e o JavaScript executa depois, resultando em um carregamento inicial mais rápido da página.
  2. Evitar Pontos Únicos de Falha (SPOFs): Ao carregar o JavaScript por último, as chances de encontrar SPOFs são reduzidas, garantindo que o restante do conteúdo da página esteja visível mesmo se o JavaScript falhar ao carregar ou executar.

Contras:

  1. Execução Tardia: JavaScript no footer pode levar a uma execução atrasada de certos scripts, afetando funcionalidades que dependem de acesso antecipado ao JavaScript.

Quando você deve colocar JavaScript no footer?

Código Menos Crítico: Para scripts que não afetam a renderização da página ou funcionalidades que não são necessárias imediatamente ao carregar a página, colocá-los no footer pode levar a um melhor desempenho geral.

Melhores Práticas e Recomendações: 

Considerando os diferentes aspectos de colocar JavaScript no head e no footer, aqui estão algumas melhores práticas e recomendações:

  1. Scripts Críticos de Renderização: Scripts que impactam o conteúdo principal da página devem ser carregados de forma bloqueante no head da página. Tente evitar esses tipos de scripts, pois eles podem ter um grande impacto nos Core Web Vitals e na velocidade da página.

  2. Scripts Críticos: Scripts que são importantes para a conversão ou interação da página devem ser colocados com async ou defer no head da página

  3. Scripts Normais: A menos que impactem o layout ou exijam acesso antecipado, coloque scripts regulares no footer para melhorar a velocidade de carregamento da página.

  4. Scripts Opcionais: Scripts dos quais você poderia abrir mão se fosse absolutamente necessário devem ser injetados quando o navegador estiver ocioso.

  5. Ouça os eventos. O evento DOMContentLoaded ou o evento load podem garantir que o JavaScript seja executado nestes ou após estes eventos de temporização, independentemente do seu posicionamento.

A decisão de colocar JavaScript no head ou no footer de uma página web deve ser baseada nos requisitos específicos do site e nas funcionalidades dos scripts envolvidos. Colocar JavaScript no head oferece benefícios de separação de código e acesso antecipado, mas pode levar ao bloqueio de renderização e a um carregamento mais lento da página. Por outro lado, JavaScript no footer proporciona tempos de carregamento mais rápidos e minimiza os riscos de SPOF, mas pode resultar em execução atrasada de certas funcionalidades. Como desenvolvedores web, é essencial entender os trade-offs e tomar decisões informadas para otimizar a user experience e o desempenho geral do site.

Exemplo 1: JavaScript no Head



    JavaScript in the Head Example
        <script src="script.js">


    Click Me


Neste exemplo, a função JavaScript showMessage() é colocada na seção <head> do documento HTML. A função é chamada quando o botão é clicado, exibindo um alerta. No entanto, o body não será analisado antes que o arquivo 'script.js' tenha sido carregado e executado.

Exemplo 2: JavaScript no Footer

Neste exemplo, a mesma função JavaScript showMessage() é colocada na parte inferior da seção <body>, logo antes da tag de fechamento </body>. Colocar JavaScript no footer permite que o conteúdo HTML carregue primeiro, e o código JavaScript será executado quando o botão for clicado. Como resultado, o alerta aparece sem nenhum atraso perceptível, proporcionando uma user experience mais suave, e este script não é impactado pelo arquivo 'script.js', já que ele será baixado em segundo plano.

Exemplo 3: Usando Event Listeners



    Event listener Example
    


    


Neste exemplo, o event listener load com função de callback é usado para garantir que o código JavaScript dentro da função seja executado somente após a página ter sido completamente carregada, independentemente de estar colocado no head ou no footer. Essa abordagem garante que o código não seja executado até que todos os elementos na página estejam prontos, proporcionando um comportamento confiável e consistente.

Estes exemplos demonstram a diferença de comportamento entre JavaScript colocado no head e no footer. Colocar JavaScript no footer pode levar a um carregamento mais rápido da página e uma user experience mais suave, especialmente ao lidar com scripts maiores ou funcionalidades que não requerem execução imediata. No entanto, certos cenários, como detecção de recursos ou uso de bibliotecas específicas, podem exigir que o JavaScript seja colocado no head. Sempre considere os requisitos específicos da sua página web e escolha o posicionamento apropriado do JavaScript de acordo.

Secure your Q3 Metrics.

Do not let technical debt derail your Core Web Vitals. I provide the strategy, the code, and the verification to pass Google's assessment.

Start the Engagement >>

  • Strategic Planning
  • Code Implementation
  • Verification & Testing
Posicionamento do JavaScript: Head vs. Footer – Prós e ContrasCore Web Vitals Posicionamento do JavaScript: Head vs. Footer – Prós e Contras