감사하게도 저희팀이 일등을 하였습니다. 1등을 해서 가장 좋았던 점은 제 코드에 대해서 현업 개발자의 코멘트를 받을 수 있다는 점이었습니다.
우려했던 만큼, 아쉬운 부분이 많이 있었다는 평을 받았습니다. 이부분을 그대로 둘 수 없었고, 개선하고자 리팩터링을 하게 되었습니다.
- 우선적으로 Img를 public폴더가 아닌 src 폴더에 구성한 것이 아쉬움
- pages 폴더 내에 components 폴더를 따로 두어 정리한 것이 아쉬움
- style이 한 페이지에 합쳐져 있는 것이 아쉬움
기존에 src 폴더에서도 쓸 수 있다는 편안함으로 이미지를 src 폴더에 저장하였습니다.
이미지를 저장할 수 있는 큰 방법은 총 2가지 입니다.
public 폴더에 저장할 때의 특징
- webpack에 의해 관리되지 않음.
(minify되지 않고, content hash가 포함되지 않는다)
- public 폴더에 접근하기 위해서는 PUBLIC_URL 환경변수 사용 필요
- 경로가 잘못 되었거나 파일이 없을 경우 컴파일단계에서 에러가 발생하지 않고, 404 에러가 발생
- CRA 문서에서 다음과 같은 경우에만 public 폴더에서 관리하는 것이 유용하고, 이외에는 src 폴더 관리를 추천
=> 여기서 의문 public폴더에 저장하는 것의 장점이 많지 않은데 왜 그런 방식을 추천했는지 의문이 들었습니다.
src 폴더에 저장할 때의 특징
상대적으로 Public보다 src에 이미지를 저장하는 것은 이점이 적은듯 하였습니다.
이 부분에 대해 다른 현직자 분에게 조언을 구했고, 아마 현업에서는 Public에 저장을 많이하고 관습적인 부분이 아닐까라고 답변해 주셨습니다.
저는 현업에서 협업을 잘하는 개발자를 꿈꾸기 때문에, 퍼블릭에 옮기는 작업을 진행해보았습니다.
src='img/img.png'
const App = () => {
return (
<img src={process.env.PUBLIC_URL + '/myImagePath.jpg'} />
);
};
export default App;
이번 리팩터링은 리액트의 효율적인 구조에 대해서 다시 한번 생각해 볼 수 있는 시간이었습니다. 이미지 파일에 대한 이해와 컴포넌트 폴더 정리, 분할되어야 하는 component까지 직접 경험하지 않았다면 이해하기 어려웠을 것이라 생각합니다. 다음에는 깨달은 것들을 바탕으로 더욱 깔끔한 코드를 만들고 싶습니다.
https://itchallenger.tistory.com/683
https://bokjiho.medium.com/react-%EB%A6%AC%EC%95%A1%ED%8A%B8%EC%97%90%EC%84%9C-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EA%B2%BD%EB%A1%9C-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-public-src-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-%EC%B0%A8%EC%9D%B4-fddb4f455c2a