Front-End/Next.js

[Next.js] next/image

딸기케잌🍓 2023. 6. 24. 22:18

원본에 비해 훨씬 더 작은 용량으로 이미지를 사용할 수 있음

webp형식

서버에서 자동으로 이미지 최적화

quality 속성으로 얼마나 최적화할지 정의 기본 75

loading="lazy" 자동으로 적용됨

placeholder="blur"  사진이 다운로드 되는 동안 블러 이미지 적용됨, 블러 이미지는 next가 자동으로 만들어 제공함 -> layout shift 방지

소스파일을 스태틱하게 임포트 했기 때문에 위와 같은 최적화가 가능함

빌드타임에 이미 이미지의 너비, 높이 알 수 있음

	import example from '/public/example.jpg';


      <figure>
        <Image
          src={example}
          alt="v13 image"
          // width={500}
          // height={100}
          // placeholder="blur"
        />
        <figcaption>v13 image</figcaption>
      </figure>

 

외부 이미지를 가지고올 때는 외부 이미지의 크기를 빌드 타임에 알 수 없으므로 반드시 크기를 명시해야함(width, height)

 

이미지 파일을 정적으로 import 하지 않고 스트링을 통해 임포트하면 외부 링크로 인식함

 

fill속성

외부 이미지를 사용하는데 크기를 모를 때 fill속성을 추가한다 -> 이미지의 사이즈는 부모에 의해 결정됨

+추가로 style 속성으로 css줄 수 있음(objectFit="cover")

 

외부링크를 사용할 수 없다는 메시지가 보일 때

next.config.js 파일 수정 next doc Domains

 

 

 

next/legacy/image

next/image와 비교해서 추가적으로 html상에 span 태그가 생성됨(이걸로 스타일링을 추가적으로 함)

사용성, 직관성 떨어지고 웹 표준을 해칠 수 있는 우려

 

next/image 컴포넌트는 기본적으로 정적으로 사이즈가 유지됨

next/legacy/image는 레이아웃 속성을 꼭 지정해야 함, 화면에 따라 늘어나고 함..

 

layout shit는 뒤늦게 로드가 되는 소스로 인하여 화면에서 봤을 때 밀리는 현상

 

 

아이콘

npm install react-icons

'Front-End > Next.js' 카테고리의 다른 글

[Next.js Section1] Data fetching 이해하기  (0) 2023.06.19