폴더 구조 컨벤션에 대해 이해하기
1. 프로젝트의 폴더 구조
아쉽게도 내가 다루는 Node.js 프로젝트의 폴더 구조에 대한 컨벤션은 존재하지 않는다.
그러므로 일반적으로 많이 사용되는 폴더 구조 패턴들을 적용해 적어본다.
2. Node.js 프로젝트의 폴더 구조
- /controllers
이 폴더는 애플리케이션 로직을 처리하는 컨트롤러를 포함한다.
각 컨트롤러는 특정 URL 라우트에 대한 요청을 처리하게 된다.
- /models
이 폴더는 데이터베이스 모델을 정의하는 파일을 포함한다.
이는 데이터베이스의 테이블과 그 관계를 정의한다.
- /routes
이 폴더는 애플리케이션의 라우트를 정의하는 파일을 포함한다.
각 라우트는 특정 URL 패턴에 대해 어떤 컨트롤러를 사용할지 정의한다.
- /public
이 폴더는 클라이언트에 제공되는 정적 파일을 포함한다.
이는 CSS, JavaScript, 이미지 파일 등을 포함할 수 있다.
- /views
이 폴더는 애플리케이션의 템플릿 파일을 포함한다.
이는 HTML 템플릿 등을 포함할 수 있다.
- /test
이 폴더는 애플리케이션의 테스트 코드를 포함한다.
테스트 코드는 애플리케이션의 특정 부분이 예상대로 작동하는지 확인하는 데 사용된다.
- /middleware
이 폴더는 애플리케이션의 미들웨어를 포함한다.
미들웨어는 요청과 응답 사이의 로직을 처리한다.
- /config
이 폴더는 애플리케이션의 설정 파일을 포함한다.
설정 파일은 데이터베이스 연결 정보, 암호화 키, API 키 등을 포함할 수 있다.
- app.js
이 파일은 애플리케이션의 진입점을 정의한다.
이 파일은 애플리케이션을 시작하는 데 필요한 모든 설정을 포함하고, 애플리케이션 서버를 시작한다.
- package.json
이 파일은 애플리케이션의 의존성과 스크립트를 정의한다.
이 파일은 npm install 명령어를 실행할 때 필요한 패키지를 설치하는 데 사용된다.
3. 폴더 구조를 나눌 때의 장단점
장점
- 가독성
폴더와 파일이 명확한 역할과 책임을 가지므로 코드를 이해하고 찾기 쉽다.
- 유지보수성
코드를 수정하거나 기능을 추가할 때, 관련 코드를 쉽게 찾을 수 있다.
- 재사용성
각 구성 요소는 독립적으로 작동하므로 다른 곳에서 재사용하기 쉽다.
단점
- 복잡성
많은 수의 폴더와 파일이 있을 경우, 프로젝트의 전체 구조를 이해하는 데 어려움이 있을 수 있다.
- 시간 소모
초기에 폴더 구조를 설정하는 데 시간이 소요된다.
4. etc
이번 프로젝트부터 최대한 코드를 잘게 쪼개서 진행하고 있는데,
아무래도 어색하다보니 너무 과하거나 애매하게 나눈 부분들이 많은 것 같다.
또, 사람마다 적정선의 기준이 너무 다르다보니 그 중간을 조율하기가 매우 어려운 것 같다.
그래도 계속 공부하다 보면 어느정도 잡히지 않을까..