next/image

dowon kim·2023년 7월 27일
0
post-thumbnail

Next.js의 next/image는 웹 사이트의 이미지를 더 효율적으로 로드하고 렌더링하는 컴포넌트입니다. 이는 웹 성능 최적화에 매우 중요한 요소인데, 이미지는 대체로 웹 사이트의 대역폭을 가장 많이 사용하며 로딩 시간에 큰 영향을 미칩니다. next/image는 다음의 기능을 제공하여 이러한 문제를 해결합니다:

장점:

  1. 자동 최적화: Next.js는 이미지를 자동으로 최적화하여 필요한 만큼만 로드하게 합니다. 즉, 클라이언트의 네트워크 속도와 장치 크기에 맞게 이미지를 자동으로 축소하거나 확대합니다.

  2. 지연 로딩 (Lazy loading): next/image는 기본적으로 이미지의 지연 로딩을 지원합니다. 즉, 이미지가 화면에 표시되기 전까지 이미지 로딩을 지연시킵니다. 이로 인해 웹사이트의 초기 로딩 시간이 크게 단축될 수 있습니다.

  3. 현대 이미지 형식 지원: 현대의 이미지 형식 (예: WebP)를 지원하여 이미지를 더 작은 파일 크기로 제공하면서도 품질을 유지할 수 있습니다.

  4. 반응형 이미지: 이미지의 크기와 해상도를 자동으로 조절하여 다양한 장치에서 웹사이트를 더욱 잘 보여줄 수 있습니다.

단점:

  1. 설정 필요: Next.js가 이미지를 제공하는 URL을 신뢰할 수 있도록 next.config.js 파일에 domains 또는 loader를 추가하여 설정해야 합니다. 이는 처음 사용하는 사용자에게는 약간의 진입 장벽이 될 수 있습니다.

  2. 서버 사이드 렌더링 제한: next/image는 클라이언트 측에서만 작동합니다. 따라서 서버 사이드 렌더링(SSR)이나 정적 사이트 생성(SSG)에서는 작동하지 않습니다.

  3. 레이아웃 이슈: next/image는 특정 레이아웃 요구 사항이 있습니다. 이미지의 크기를 명시적으로 지정해야 하며, 이는 일부 디자인에 제약을 줄 수 있습니다.

다음은 next/image의 사용 예시입니다:

import Image from 'next/image'

function MyComponent() {
  return (
    <div>
      <Image
        src="/path/to/image.jpg" // 이미지 소스
        alt="Description of the image" // 이미지 설명
        width={500} // 이미지 너비
        height={300} // 이미지 높이
      />
    </div>
  )
}

export default MyComponent

위 코드에서 next/imagesrc, alt, width, height와 같은 속성을 받습니다. 이 속성들은 각각 이미지의 소스, 설명, 너비, 높이를 나타냅니다. 이런 방식으로 next/image를 사용하면 웹 사이트의 이미지 로딩 성능을 크게 향상시킬 수 있습니다.

profile
The pain is so persistent that it is like a snail, and the joy is so short that it is like a rabbit's tail running through the fields of autumn

0개의 댓글