SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
11.12.2024

Usando async e defer em HTML: Como Funcionam e Compatibilidade Retroativa

Resumo Rápido

Tecnicamente, usar async e defer juntos em uma tag de script é justificável 😲; no entanto, como async tem precedência sobre defer, essa combinação parece sem sentido. Aqui está um exemplo de seu uso conjunto na prática:

<script src="EverSeenAScriptRunFast.js" async defer></script> <!-- `async` tem precedência, `defer` é ignorado -->

Se é importante que o script seja executado após a análise completa do HTML, use apenas defer:

<script src="PatientlyWaiting.js" defer></script>

Agora, vamos discutir quando e por que aplicar esses atributos.

Async e Defer: Competindo pelo Carregamento Ideal

Na estrutura do seu documento HTML, uma partida de xadrez se desenrola, onde async e defer atuam como peças de xadrez estrategicamente significativas competindo por um carregamento ótimo dos scripts.

Como funcionam async e defer

Você pode comparar o atributo async a um cavalo, que se move livremente sem estar vinculado a outras peças, permitindo que os scripts sejam carregados em paralelo com a análise do HTML, acelerando assim esse processo.

Por outro lado, defer se assemelha a um bispo, esperando seu momento e adiando a execução do script até que a análise do HTML esteja completa.

Garantindo Compatibilidade Retroativa

Async foi introduzido apenas no IE10, enquanto defer existe desde o IE 5.5. Se você se preocupa com a compatibilidade com navegadores mais antigos, escolha defer.

Conhecendo os Movimentos: Ordem de Execução dos Scripts

Scripts com defer são executados na ordem em que aparecem no documento, ao contrário de async, que pode ser executado em qualquer ordem, potencialmente interrompendo sequências de carregamento críticas.

Mudando as Regras: Combinando async e defer

Usar async e defer juntos é como jogar um cavalo e um bispo em um único movimento— a eficácia de tal jogada é questionável, uma vez que async sempre prevalecerá.

Melhorando os Movimentos: Estratégia de Carregamento de Scripts

Considere combinar arquivos, levando em conta suas interdependências e impacto na velocidade de carregamento para otimizar o desempenho. Isso ajudará você a escolher corretamente entre async e defer.

Visualização

Imagine um duelo culinário entre chefs...

Chef 1👨‍🍳: Começa a cozinhar a massa imediatamente (async), sem esperar a água ferver.
Chef 2👩‍🍳: Deixa o alho dourar (DOMContentLoaded), e então rapidamente serve a massa (defer).

Se você usar async e defer ao mesmo tempo:

Chef 3👨‍🍳👩‍🍳: Joga a massa crua na água ainda fria e espera ferver. Oh não 🤷!

É melhor escolher um chef: ou o Impulsivo 👨‍🍳 ou o Detalhista 👩‍🍳, para fazer uma massa perfeita! 🍝

Livro de Receitas de Programador: Como Usar async e defer

Quando async é seu Ingrediente Essencial

Async é adequado para scripts que não estão relacionados a outros, como sistemas de análise ou módulos de marketing. Esses scripts podem ser carregados e executados em paralelo, sem esperar que o documento termine de ser processado.

Quando defer Adiciona Sabor à Espera

Defer é apropriado para aqueles scripts que exigem interação com o DOM ou outros scripts, já que defer garante que a execução do script não comece até que toda a página esteja carregada, o que é relevante mesmo em versões mais antigas de navegadores.

Evitando Erros Culinários

Ao usar async e defer, é importante ter em mente os riscos potenciais:

  • Prontidão do DOM: async pode resultar na execução do script antes que o DOM esteja totalmente pronto.
  • Interdependências dos Scripts: Para evitar uma confusão na ordem de execução, prefira defer, que preservará a sequência.
  • Compromisso com o Desempenho: Com async, a página pode carregar mais rapidamente, mas a ordem de processamento pode acabar caótica.

Recursos Úteis

  1. <script>: O elemento Script - HTML: Linguagem de Marcação de Hipertexto | MDN
  2. O atributo async para a tag script no W3Schools
  3. O atributo defer para a tag script no W3Schools
  4. JavaScript - atributos async e defer para a tag script no Stack Overflow
  5. Eliminando JavaScript que bloqueia renderização nas recomendações de Page Speed Insights do Google Developers
  6. Carregando JavaScript de forma eficiente com defer e async por Flavio Copes

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!