Next.js에서는 이미지 성능을 최적화하기 위해 next/image 컴포넌트를 제공
next/image 컴포넌트는 아래와 같은 자동 최적화 기능을 제공Image 컴포넌트 자동 이미지 최적화 기능
기존 React 방식과 동일하게 파일 import 하고, <Image> 컴포넌트의 src에 전달
import Image from 'next/image'
import profilePic from './me.png'
export default function Page() {
return (
<Image
src={profilePic}
alt="Picture of the author"
// width={500} 자동 제공
// height={500} 자동 제공
// blurDataURL="data:..." 자동 제공
// placeholder="blur" // 로딩 중 블러업 옵션
/>
)
}
Next.js가 자동으로 적절한 사이즈로 이미지를 최적화
외부 URl을 통해 이미지를 사용할 때는, 추가적인 보안 설정 필요
import Image from 'next/image'
export default function Page() {
return (
<Image
src="<network-image>"
alt="Picture of the author"
width={500}
height={500}
/>
)
}
원격 이미지 허용을 위한 설정(필수)
Next.js 프로젝트 루트의 next.config.js 파일에 허용할 이미지 URL 패턴을 추가
⚠️주의
만약 next.config.mjs 파일을 사용하는 경우,
package.json의 "type": "module" 설정 필요
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: false,
images: {
remotePatterns: [
{
protocol: "https",
hostname: "fakestoreapi.com",
pathname: "/**",
},
],
formats: ["image/avif", "image/webp"],
},
};
module.exports = nextConfig;
next/image 컴포넌트를 사용하면 기본적으로 적용