: NextJS로 웹개발을 할 때, React에서 사용하던 이미지( <img />
) 컴포넌트 대신에, next/image에서 제공하는 <Image />
태그를 사용.
해당 컴포넌트를 사용하면 NextJS에서 제공하는 이미지를 최적화.
// S3에 저장 된 경우, 경로를 제외한 domain을 추가한다
images: {
domains: [
'localhost', // local 테스트용
'wattissl3.kro.kr', // Deploy 될 Domain
'13.124.184.110', // Swagger on EC2
'watti-images-prod.s3.ap-northeast-2.amazonaws.com', // AWS S3
], // 이미지 출처를 지정 -> 앱 보호
}
layout
1) intrinsic(default): 이미지의 width, height에 따라 컴포넌트 차지
2) fixed: 이미지 자체의 width, height에 따른 렌더링
3) fill: 상위 컴포넌트의 사이즈에 맞춤
4) responsive: 부모 컨테이너의 width에 맞게 이미지 크기 조정
loader: image 요청 url 커스텀, 서버로부터 커스텀한 url에 맞는 이미지를 전달받음
quality(default=75): 이미지의 퀄리티 지정(1~100)
placeholder: 이미지 로딩중일때 상태 지정(스켈레톤 기능) + CLS 방지
1) empty(default): 지정된 width, height의 빈 공간
2) blur: blurDataURL을 통해 정적(또는 동적) 이미지 지정
priority:
next/image는 디폴트로 LazyLoading을 지원.
priority를 true로 변경해주면, 이미지를 미리 렌더링 할 수도 있다(예를들어, 랜딩 페이지 등에서 이미지를 먼저 화면에 보이게 하고자 할 때 사용)
https://nextjs.org/docs/api-reference/next/image#fill
https://mycodings.fly.dev/blog/2022-09-08-all-about-nextjs-image-component
(해당 블로그의 "이것만은 꼭!" 부분, 현업 이미지 최적화 방법)