NgOptimizedImage: Otimização de imagem com Angular

No frontend moderno nós temos que nos preocupar com bastante coisa uma delas é o carregamento de imagens e como isso está ligado a performance da aplicação e ou ao SEO do site. Irei abordar nesse post como otimizar imagem e utilizar lazy loading.

NgOptimizedImage

Vamos ver como utilizar essa diretiva para ajudar na melhora de velocidade de carregamento de imagens e como o usuário ter uma experiência satisfatória no site, imagina que nosso usuário tenha uma internet lenta 3g ou 4g meio capenga, se a página demorar muito para ser carregada devido a um chunk com inúmeras imagens.

Os estudos do Google mostram que o usuário espera cerca de 3 segundos ou menos em um carregamento de site, depois disso é propenso a fechar e assim você pode perder uma visita, venda ou o que sua aplicação ou site oferece.

A diretiva NgOptimizedImage funciona da seguinte forma:

  • Ela carrega as imagens de forma assíncrona, o que significa que o navegador não precisa esperar que todas as imagens sejam carregadas antes de renderizar a página.
  • Ela usa um serviço de otimização de imagens para compactar as imagens antes de carregá-las. Isso reduz o tamanho das imagens, o que melhora o tempo de carregamento.
  • Ela permite que você use o lazy loading para carregar as imagens apenas quando elas são necessárias. Isso pode melhorar ainda mais o tempo de carregamento das imagens.

Para utilizar o NgOptimizedImage, devemos fazer o import dela, podendo ser no module ou standalone:

NgOptimizedImage a diretiva é aplicada no elemento img:

img ngSrc

Se você reparar trocamos a propriedade src do img para o ngSrc e agora temos acesso a todas propriedades do NgOptimizedImage e são elas:

  • ngSrc: Aqui é onde colocamos o caminho da imagem;
  • ngSrcset: Esta propriedade aceita uma lista separada por vírgulas e largura;
  • sizes: A propriedade size é usada para passar o tamanho para o elemento img;
  • width e height: Permite setar largura e altura;
  • loading: Esta propriedade controla o comportamento de carregamento da imagem, podendo ser lazy, eager ou auto. Tanto eager e auto, sinaliza que não são imagens prioritárias e o lazy adia o carregamento até que a imagem esteja prestes a ser exibida;
  • priority: Definir como true, indica que a imagem deve ser carregada de forma prioritária na página;
  • disableOptimizedSrcset: Desativa a geração automática de srcset;
  • fill: Ainda está em developer preview, ativa o modo de preenchimento para a imagem.

Vamos aos exemplos:

ngSrc:

Este exemplo carrega a imagem image.jpg e define-a como a imagem de origem do elemento img.

width e height:

Este exemplo define a largura e altura da imagem em pixels.

ngSrcset:

Este exemplo define uma lista de descritores de largura para a imagem. O navegador usará o descritor mais adequado para a largura da tela.

sizes:

Este exemplo define uma lista de tamanhos básicos para a imagem. O navegador usará esses tamanhos para gerar a propriedade srcset da imagem.

loading:

Este exemplo carrega a imagem de forma assíncrona, adiando o carregamento até que a imagem esteja prestes a ser exibida.

priority:

Este exemplo marca a imagem como uma imagem prioritária, o que significa que ela será carregada antes de outras imagens não prioritárias.

disableOptimizedSrcset:

Este exemplo desativa a geração automática de srcset para a imagem.

fill:

Este exemplo ativa o “modo de preenchimento” para a imagem. Neste modo, a imagem preenche seu elemento de contenção sem exigir valores explícitos de altura e largura.

Com essa diretiva temos como trabalhar de forma poderosa com o lazy loading ao nosso favor, trazendo performance e velocidade para aplicação como um todo e dando uma experiência muito mais agradável para o usuário também.

Tenha uma carreira
Front-end de Sucesso!

Ebook - JORNADA FRONT-END

Fruto de mais de 7 anos estudando e trabalhando com Front-end, a "Jornada Front-end - O Guia Definitivo" é um manual completo para todos que querem subir em suas carreiras do zero ou subir do seu nível atual.

Ebook enviado com sucesso! Verifique sua caixa de e-mail.

Share This