36. 이미지 저장소는 public/ vs assets/

public/ 폴더

이미지 파일을 public/ 폴더에 저장하고 index.html 또는 index.css 파일 내에서 직접 참조할 수 있다.

이렇게 하는 이유는 public/에 저장된 이미지(또는 일반적으로: 파일)이 프로젝트 개발 서버 및 빌드 프로세스에 의해 공개적으로 제공되기 때문이다.
index.html과 마찬가지로, 이 파일들은 브라우저 내에서 직접 방문할 수 있으며, 따라서 다른 파일에 의해 요청될 수도 있다.

예를 들어, localhost:5173/some-image.jpg를 불러오면 해당 이미지를 볼 수 있다.(물론 public/ 폴더에 이미지가 있을 경우)

src/assets/ 폴더

이미지를 src/assets/ 폴더 (또는 실제로는 src 폴더의 어디든)에 저장할 수도 있다.

그렇다면 public/ 폴더에 저장하는 것과 어떤 차이가 있을까?

src또는 src/assets/와 같은 하위 폴더에 저장된 모든 파일(어떤 형식이든)은 공개적으로 제공되지 않는다.
웹사이트 방문자가 접근할 수 없다.
localhost:5173//src/assets/some-image.jpg를 불러오면 404 에러가 발생한다.

대신, src/(및 하위 폴더)에 저장된 파일은 코드 파일에서 사용할 수 있다.
코드 파일에 가져온 이미지는 빌드 프로세스에 의해 인식되어 최적화되며, 웹사이트에 제공하기 직전에 public/ 폴더에 '삽입'된다.
가져온 이미지는 참조한 위치에서 자동으로 링크가 생성되어 사용된다.

어떤 폴더를 사용해야 될까?

빌드 프로세스에 의해 처리되지 않는 이미지는 public/ 폴더를 사용해야 하고 대체적으로 사용 가능하다.
예를 들면 index.html 파일이나 파비콘과 같은 이미지가 좋은 후보이다.

반면, 컴포넌트 내에서 사용되는 이미지는 일반적으로 src/ 폴더(예: src/assets/)에 저장되어야 한다.