Introdução | Frontend
- Introdução | Frontend
Performance no Frontend
Api Speculation Rules
Imagens
warning
As técnicas abaixo servem para qualquer frontend, pois se trata de algo do HTML, mas á mostrado com REACT
success
Formato .avif é mais leve para ser carregada
Específico para o React: usar a tag <Image>
import Image from 'next/image';
export default function Home() {
return (
<div>
<h1>Bem-vindo ao meu site!</h1>
<Image
src="/path/to/image.jpg"
alt="Imagem de exemplo"
width={600}
height={400}
/>
</div>
);
}
Benefícios:
- Lazy Loading: O Next.js carrega as imagens somente quando elas entram na tela, o que ajuda a melhorar a pontuação do LCP e FCP.
- Otimização Automática: O Next.js redimensiona e serve a imagem no formato e tamanho adequado para o dispositivo do usuário (por exemplo, serve WebP para navegadores que suportam).
- Carregamento prioritário: Use a propriedade priority para marcar imagens críticas, como a imagem principal da página, para que ela seja carregada imediatamente.
Ajustar o tamanho das imagens
<Image
src="/path/to/image.jpg"
alt="Imagem responsiva"
width={800}
height={600}
sizes="(max-width: 600px) 100vw, 50vw" // Ajusta o tamanho com base na largura da tela
/>
Carregamento lento loading="lazy"
<Image
src="/path/to/image.jpg"
alt="Imagem carregada de forma assíncrona"
width={600}
height={400}
loading="lazy" // Lazy load manual
/>
Prioridade de carregamento priority="low"
<Image
src="/path/to/image.jpg"
alt="Imagem carregada de forma assíncrona"
width={600}
height={400}
priority="low"
/>
Fontes
warning
A aplicação do conceito será para o React usando o google fonts
import { Pixelify_Sans } from 'next/font/google'
const pixelify_Sans = Pixelify_Sans({
weight: ["400", "700"],
subsets: ['latin'],
display: "swap" // carregar sem bloquear a página
})
danger
Melhor é usar as fonts locais e não do google fonts. Houve uma alteração de performance quando movidas as fonts para dentro do projeto
import localFont from "next/font/local";
export const pixelifySans = localFont({
src: '../public/fonts/PixelifySans-Bold.woff2',
display: "swap",
preload: true,
});
- Artigo: Stop Relying on Google Fonts CDN
Defer and Async for JavaScript (Deferir e Assincronizar o Carregamento de Scripts)
<!--O script será executado após a renderização do HTML, mas na ordem que foi incluído.-->
<script src="/path/to/script.js" defer></script>
<!--O script será carregado de forma assíncrona e executado assim que estiver pronto, sem bloquear a renderização da página.-->
<script src="/path/to/script.js" async></script>
Css crítico
<link
rel="stylesheet"
href="styles.css" <!-- Arquivo CSS não cr ítico -->
media="print" <!-- O CSS será carregado somente após a renderização inicial -->
onload="this.media='all'" <!-- Altera o media para 'all' quando o CSS estiver carregado -->
>
<noscript>
<!-- Caso o JavaScript esteja desativado, o CSS será carregado normalmente -->
<link rel="stylesheet" href="styles.css">
</noscript>
Cache no Frontend
Cache no Frontend: 🔗 Clique aqui
Diferença entre biblioteca e Framework
- Biblioteca: Você consegue adicionar coisas sem ter muitas regras
- Framework: É mais fechado na questão das regras de adicionar. Ex: Angular você tem as maneiras exatas de fazer as coisas, não tem como fugir muito daquilo, diferente do React