Node.js

express 서버와 폴더 구조

dokite 2024. 4. 18. 02:13

서두

아직은 서버 구축과 간단한 로그인 테스트만 진행했기에 기존에 실습했던 백엔드 프로젝트의 폴더 구조를 발판삼아 시도했다.

그러다 각 폴더가 왜 존재하는지, 어떤 목적으로 쓰이는지 궁금해서 알아보았다.

 

express 서버의 파일 및 폴더

  • app(or index).ts : TypeScript를 기준으로 만든 서버 기본 설정 및 미들웨어, route를 설정하는 파일
  • config : 데이터베이스 연결 정보, API Key 등 환경 변수 정보 저장하는 폴더
    • .env : 환경 변수를 설정하는 파일
  • src
    • constants : 상수값을 정의하는 폴더
    • routes : API 엔드포인트와 관련된 경로를 정의하는 폴더(controllers와 동일하다고 하지만 분리하기도 한다.)
    • controllers : (routes와 분리했을 때) router에서 요청하는 컨트롤러 함수들을 저장하는 폴더
    • services : 비즈니스 로직이나 데이터 처리를 담당하는 폴더
    • models : 데이터베이스 모델과 관련된 스키마를 정의하는 폴더
  • middleware : express 미들웨어를 정의하는 폴더.
  • package.json : 프로그램 이름, 버전, 필요한 모듈 등 노드 프로그램의 정보가 기술되어 있는 파일

사실 express의 generator를 사용하면 기본으로 설정된 구조를 만들어준다.

https://expressjs.com/en/starter/generator.html

 

Express application generator

Express application generator Use the application generator tool, express-generator, to quickly create an application skeleton. You can run the application generator with the npx command (available in Node.js 8.2.0). $ npx express-generator For earlier Nod

expressjs.com

 

또한 express에서는 구조에 있어서 정답이 없다 말하며 프로젝트나 팀에 따라 달라질 수 있다고 한다.

https://expressjs.com/ko/starter/faq.html

 

Express 자주 묻는 질문(FAQ)

자주 묻는 질문(FAQ) 애플리케이션을 어떻게 구조화해야 합니까? 이 질문에는 정확한 답이 없습니다. 그 답은 애플리케이션의 규모 및 참여하는 팀의 규모에 따라 달라질 수 있습니다. 최대한의

expressjs.com

 

끝으로

1. 많은 사람들이 express를 MVC 패턴으로 생각하고 있는데 서버에서 MVC 패턴을 사용하는 것이 어떤 장단점이 있는지 알아봐야겠다.

2. node.js와 연관지어 폴더 구조에 대한 아티클을 잘 번역한 블로그 글을 봤는데 나중에 백엔드를 심도있게 공부할 때 참고해야겠다.

https://charming-kyu.tistory.com/16

 

[node.js] 견고한 node.js 프로젝트 설계하기 (번역)

본 포스트는 Sam Quinn의 “Bulletproof node.js project architecture” 글을 번역한 것입니다. 혼자 보기 너무 아까운 글이기에 번역하여 공유합니다. Introduction Express.js는 node.js REST API를 만드는데 좋은 프레

charming-kyu.tistory.com