일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 유데미
- 배포
- 맥북백틱입력
- 미래내일일경험
- `
- 네이버로그인창만들기
- 디지털하나로
- 스나이퍼팩토리
- 디지털교육
- 백틱
- Next.js
- udemy
- kdt
- 하나은행
- 프론트엔드개발자양성과정
- DIGITALHANARO
- 디지털취업
- s3
- 취준생
- github
- 디지털하나로입학식
- 개발자교육과정
- 웅진씽크빅
- 프로젝트캠프
- 맥북백틱
- 버전생성프로세스
- 부트캠프
- 프론트엔드배포
- 깃허브 레포지토리와 로컬 코드 연결하기
- Today
- Total
Land of Joe
[React] CRA 내 파일 구성에 대한 개인적 고찰 본문
[ CRA가 기본으로 제공하는 초기 구성 ]
=> 폴더: node_modules, public, src
=> 파일: .gitgnore, package-lock.json, package.json, README.md
public 폴더엔 정적 파일들을, src 폴더엔 동적 파일들을 넣는다고 한다.
그래서 public 폴더에 index.html 파일을 넣고,
src 폴더에 App.js와 index.js 파일을 넣는 것으로 보통 CRA를 시작한다.
내가 고민한 부분은 위 세 파일을 제외한
프로젝트 설계를 하는 과정에서 발생하는 파일들을 어떻게 구조화할 것이냐에 대한 것이다.
(public / src 폴더에 넣을 것이냐, 폴더 내부에서 하위 폴더 구조화는 어떻게 할 것이냐 등..)
이 것엔 정답은 물론 없거니와, 나보다 훨씬 다양한 프로젝트와 공부를 하신 분들이 써놓으신 훌륭한 글들이 많지만
일단 현재의 내가 생각한 효율적인 구조와 그 이유에 대해 기록하고자 한다.
1) src 폴더 안엔 (App.js 파일 / index.js 파일) / Components 폴더 / Containers 폴더 / Pages 폴더
- Components 폴더: 재사용 가능한 요소가 되는 파일들을 저장한다.
- ex) Navigation 바 안에 있는 버튼 하나 등...
- 모든 파일명이 '-Item'으로 끝나도록 통일함
- Containers 폴더: 페이지의 일부를 구성하는 한 부분 (Components 폴더 내 요소를 사용하든, 사용하지 않든)
- ex) Navigation 바 자체, Header 자체 등..
- 모든 파일명이 '-Container'로 끝나도록 통일함
- Pages 폴더: App.js에서 바로 import하여 사용 가능한 단위
- App.js는 무조건 pages 폴더 내 파일들로만 구성되어 있을 것
- ex) Home 화면 등..
- 모든 파일명이 '-Page'로 끝나도록 통일함
!) 구분한 부모 폴더에 상관없이 모든 파일의 이름이 속한 Page의 이름으로 시작하도록 통일하였다.
그러나 여러 페이지에서 사용되는 컴포넌트라면..?!........... 고민이 된다.....😵💫🤕🤢
2) public 폴더 안엔 ( index.html 파일 ) / imgs 폴더 / css 파일
** 그 전에 알아야 할 지식!
CRA는 보안 상의 이유로 src 폴더 안의 파일들에 대한 직접적인 외부 접근을 막는다. 이는 빌드된 번들 파일만을 외부에 노출시키는 데 목적이 있습니다. 소스 코드를 숨기고 번들 파일만을 배포함으로써 보안적인 측면에서 이점을 가진다.
- imgs 폴더: src 폴더에 비해 보안에는 취약하지만 그만큼 외부에서 접근이 가능, 쉽기 때문.
- 공개적으로 접근 가능하도록 하고 싶은 이미지, favicon 등은 public 폴더에 넣어놓을 것
- 그러나, 외부에서 접근 불가하게 하고 싶은 이미지가 있을 경우 src 폴더에 넣을 것
- css 파일: src 폴더 내 파일들의 경우 import 작업이 필요한 데 비해, public 폴더 내 파일은 바로 index.html에 link 태그를 이용해 가져와 사용할 수 있어 간단 편리하기 때문
위 내용을 작성하면서도 또 내 생각에 허점과 의구심이 들어버렸지만(ㅠㅠ)
머리로만 이해하는 게 아니라 일단 이렇게 글로 직접 적어보고 읽어보니 어느정도 그림이 그려지는 것 같다.
더 큰 프로젝트를 진행하면서 위 생각에 대한 반론이나 더 나은 아이디어가 생겼을 때 또 작성하여
현재와 비교해 성장한 나를 발견하면
또 그 나름의 재미가 있을 것 같다:)
이제 침대로 쩜푸해야짓....!!! Guten Abent!
'🌐 Web > ⚛️ React' 카테고리의 다른 글
Link와 useNavigate의 활용도 차이 (Link태그 내 이벤트 존재 시 이벤트 작동 안 함 문제 해결을 위한 useNavigate 활용) (0) | 2024.04.18 |
---|---|
CRA 생성 안됨 오류 Unknown command: "create-react-app" (0) | 2024.03.01 |
[react-redux] Actions must be plain objects. 오류 (0) | 2024.01.17 |
[React] 리액트 바보짓은 끝이 없고~~ Module not found: 멈춰! (0) | 2023.07.15 |
[React] modifier 함수, React.useState() (0) | 2023.05.03 |