Next.js는 이미지와 같은 정적 자산을 최상위 public
디렉토리 아래에서 제공할 수 있습니다. public
안의 파일은 pages
와 마찬가지로 애플리케이션의 루트에서 참조할 수 있습니다.
public
디렉토리는 robots.txt
, Google 사이트 검증 및 기타 정적 자산에도 유용합니다. 자세한 내용은 정적 파일 서비스에 대한 문서를 참조하세요.
먼저, 프로필 사진을 가져오겠습니다.
.jpg
형식으로 프로필 사진을 다운로드합니다 (또는 이 파일을 사용하세요).public
디렉토리 안에 images
디렉토리를 생성합니다.public/images
디렉토리에 profile.jpg
로 저장합니다.public
디렉토리에서 사용하지 않는 SVG 로고 파일은 제거해도 됩니다.일반 HTML을 사용하면 프로필 사진을 다음과 같이 추가합니다:
<img src="/images/profile.jpg" alt="Your Name" />
하지만 이렇게 하면 다음과 같은 작업을 수동으로 처리해야 합니다:
등등의 작업이 필요합니다. 대신, Next.js는 이를 위해 image
컴포넌트를 제공하여 자동으로 처리할 수 있습니다.
next/image
는 HTML <img>
요소의 확장 버전으로, 현대적인 웹에 맞게 발전한 것입니다.
Next.js는 기본적으로 이미지 최적화를 지원합니다. 이를 통해 브라우저가 지원하는 경우에는 WebP와 같은 현대적인 형식으로 이미지의 크기를 조정하고 최적화하여 제공할 수 있습니다. 이를 통해 작은 뷰포트를 가진 장치에 대용량 이미지를 전송하지 않을 수 있습니다. 또한, Next.js는 자동으로 향후 이미지 형식을 채택하고 해당 형식을 지원하는 브라우저에 제공할 수 있습니다.
자동 이미지 최적화는 모든 이미지 소스와 함께 작동합니다. 이미지가 CMS와 같은 외부 데이터 소스에 호스팅되는 경우에도 최적화할 수 있습니다.
Next.js는 이미지를 빌드 시간에 최적화하는 대신, 사용자가 요청할 때 필요한 시점에 이미지를 최적화합니다. 정적 사이트 생성기와 정적 전용 솔루션과 달리, 10개의 이미지든 1000만 개의 이미지든 빌드 시간이 증가하지 않습니다.
이미지는 기본적으로 지연 로딩됩니다. 즉, 뷰포트 외부에 있는 이미지로 인해 페이지 속도가 저하되지 않습니다. 이미지는 뷰포트로 스크롤되면 로드됩니다.
이미지는 항상 누적 레이아웃 이동(Cumulative Layout Shift)를 피하도록 렌더링됩니다. 이는 Google이 검색 순위에 사용할 핵심 웹 요소(Core Web Vital)입니다.
다음은 next/image
를 사용하여 프로필 사진을 표시하는 예시입니다. height
와 width
props는 원하는 렌더링 크기여야 하며, 소스 이미지와 동일한 종횡비를 가져야 합니다.
참고: 이 컴포넌트는 "레이아웃 디자인 개선"에서 나중에 사용할 예정이므로 지금은 복사할 필요가 없습니다.
import Image from 'next/image';
const YourComponent = () => (
<Image
src="/images/profile.jpg" // Route of the image file
height={144} // Desired size with correct aspect ratio
width={144} // Desired size with correct aspect ratio
alt="Your Name"
/>
);
자동 이미지 최적화에 대해 더 알아보려면 문서를 확인해보세요.
Image 컴포트에 대해 더 알아보려면
next/image
의 API 참조를 확인해보세요.
출처: https://nextjs.org/learn/basics/assets-metadata-css/assets