Otimização de imagens e fontes
Utilize os componentes integrados Image e Font do Next.js para obter otimização automática e melhorar o desempenho de carregamento.
Otimização de imagens e fontes é uma aula grátis de Next.js 15 Fullstack (App Router + Server Actions) no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Next.js 15 Fullstack (App Router + Server Actions), e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Next.js 15 Fullstack (App Router + Server Actions) inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Why Optimize Assets?
Web performance is crucial for user experience and SEO. Large images and unoptimized fonts can significantly slow down your website.
Next.js provides built-in components to automatically optimize these assets, making your applications faster and more efficient.
Image Loading Challenges
Traditionally, developers face challenges with images:
- Large File Sizes: Slow downloads, high bandwidth usage.
- Incorrect Dimensions: Serving huge images to small screens.
- Layout Shifts (CLS): Images loading late, pushing content around.
- Accessibility: Missing
altattributes.
Meet `next/image`
Next.js's Image component (from next/image) is a powerful tool designed to solve these problems automatically. It handles:
- Automatic Optimization: Converts images to modern formats like WebP.
- Responsive Sizing: Serves different image sizes based on device.
- Lazy Loading: Loads images only when they enter the viewport.
- Preventing CLS: Ensures images occupy space before loading.
Basic `next/image` Usage
To use Image, simply import it and replace your standard <img> tags. You must provide width, height, and alt props.
Try running this example (assuming /my-image.jpg is in your public folder):
import Image from 'next/image';
export default function HomePage() {
return (
<div>
<h1>Optimized Image</h1>
<Image
src="/my-image.jpg"
alt="A beautiful landscape"
width={500}
height={300}
/>
<p>This image is now optimized!</p>
</div>
);
}Key Image Props
Let's look at essential props for the Image component:
src: Path to your image (local or external).alt: Crucial for accessibility and SEO.width,height: Specify intrinsic dimensions to prevent layout shifts.priority: (Optional) Load image immediately if it's above the fold.
Image Layout with `fill`
For images that should fill their parent container, use the fill prop. This is great for hero images or backgrounds.
The parent element needs position: 'relative' to act as the container for the filled image.
import Image from 'next/image';
export default function Banner() {
return (
<div style={{
position: 'relative',
width: '100%',
height: '200px',
backgroundColor: '#eee'
}}>
<Image
src="/banner.jpg"
alt="Website banner"
fill
style={{ objectFit: 'cover' }}
sizes="(max-width: 768px) 100vw, 50vw"
/>
<h2 style={{ position: 'absolute', color: 'white', zIndex: 10 }}>
Awesome Banner
</h2>
</div>
);
}The Need for Font Optimization
Custom fonts add personality to your site, but they can be large files, leading to performance issues like:
- FOIT (Flash of Invisible Text): Text is invisible until the font loads.
- FOUT (Flash of Unstyled Text): Text displays in a default font, then switches.
- Large Bundles: Font files increase overall page weight.
Next.js's next/font module helps tackle these challenges.
Optimizing Google Fonts
next/font/google automatically optimizes Google Fonts, downloading them at build time and self-hosting them with strong caching. This eliminates external network requests and ensures consistent loading.
Apply the font's class name to your HTML or a specific element:
import { Inter } from 'next/font/google';
const inter = Inter({
subsets: ['latin'],
display: 'swap', // Prevents FOIT
});
export default function AppLayout({ children }) {
return (
<html lang="en" className={inter.className}>
<body>
<h1>My App Header</h1>
{children}
</body>
</html>
);
}Using Local Fonts
For self-hosted fonts (fonts you provide), use next/font/local. It works similarly to next/font/google, optimizing the font loading process for your local files.
Place your font files (e.g., .woff2) in the public directory or a dedicated fonts folder.
import localFont from 'next/font/local';
const myCustomFont = localFont({
src: './fonts/MyCustomFont.woff2',
display: 'swap',
});
export default function AboutPage() {
return (
<div className={myCustomFont.className}>
<h2>About Us</h2>
<p>This page uses a custom font.</p>
</div>
);
}Optimize Your Assets
Which of the following are benefits of using Next.js's Image and Font components for asset optimization?
Recap: Optimized Assets
You've learned how Next.js empowers you to optimize critical assets like images and fonts:
- The
next/imagecomponent offers automatic optimization, lazy loading, and CLS prevention. - The
next/fontmodule ensures efficient loading of both Google and local fonts, improving performance and visual stability.
By using these components, you significantly enhance your application's speed and user experience!
Perguntas Frequentes
A aula “Otimização de imagens e fontes” é grátis?
Sim — o texto completo de “Otimização de imagens e fontes” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Next.js 15 Fullstack (App Router + Server Actions), atualize para CoddyKit PRO. O curso de Next.js 15 Fullstack (App Router + Server Actions) inclui 4 aulas no total.
O que vou aprender em “Otimização de imagens e fontes”?
Utilize os componentes integrados Image e Font do Next.js para obter otimização automática e melhorar o desempenho de carregamento. Você pratica Next.js 15 Fullstack (App Router + Server Actions) com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Next.js 15 Fullstack (App Router + Server Actions)?
Nenhuma experiência prévia é necessária. Next.js 15 Fullstack (App Router + Server Actions) no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Otimização de imagens e fontes”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Next.js 15 Fullstack (App Router + Server Actions)?
Sim. Cada aula de Next.js 15 Fullstack (App Router + Server Actions) inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Otimização de imagens e fontes
- Análise do tamanho do pacote
- Estratégias avançadas de armazenamento em cache
- Interface por Fluxo com Suspense e Estados de Carregamento