Node.js 이상적인 프로젝트 폴더 구조
Node.js 프로젝트의 이상적인 폴더 구조에 대해 이야기하려 합니다. 프로젝트의 규모와 복잡성을 고려하여 가독성과 유지보수성을 최대한 강화하는 방향으로 폴더를 구성해보겠습니다.
가독성 높이는 프로젝트 폴더 구조
1. controllers: 로직의 중심
프로젝트의 핵심 로직을 담당하는 컨트롤러 폴더입니다. 각 파일은 특정 URL 라우트에 대한 요청을 처리하는데, 이를 통해 코드를 모듈화하고 유지보수를 용이하게 합니다.
// controllers/userController.js
class UserController {
// 사용자 관련 로직
}
2. models: 데이터의 정수
데이터베이스 모델을 정의하는 폴더로, 테이블과 관계를 명확히 정의합니다.
// models/userModel.js
class UserModel {
// 사용자 데이터 모델
}
3. routes: 라우팅의 정착지
애플리케이션의 라우트를 정의하는 폴더입니다. 각 라우트는 특정 URL에 대한 요청을 어떤 컨트롤러가 처리할지 지정합니다.
// routes/userRoutes.js
const express = require('express');
const router = express.Router();
const UserController = require('../controllers/userController');
// 사용자 라우트 정의
router.get('/users', UserController.getAllUsers);
module.exports = router;
4. public: 정적 자산의 보관함
클라이언트에 제공되는 정적 파일들을 담는 폴더입니다. CSS, JavaScript, 이미지 등이 여기에 위치합니다.
/public
/css
/js
/images
5. views: 화면의 담당
애플리케이션의 템플릿 파일을 담는 폴더로, HTML 템플릿 등이 위치합니다.
/views
/user
profile.ejs
dashboard.ejs
6. test: 코드의 견고한 방패
애플리케이션을 테스트하는 코드를 담는 폴더로, 각 컴포넌트가 예상대로 작동하는지 검증합니다.
// test/userController.test.js
const assert = require('assert');
const UserController = require('../controllers/userController');
// 테스트 코드 작성
7. middleware: 로직의 중간지점
애플리케이션의 미들웨어를 담는 폴더입니다. 요청과 응답 사이의 로직을 처리하며, 중복을 방지하고 코드를 깔끔하게 유지합니다.
// middleware/authMiddleware.js
function authenticate(req, res, next) {
// 인증 로직
next();
}
8. config: 설정의 정리함
애플리케이션의 설정 파일을 담는 폴더로, 데이터베이스 연결 정보, 키 값 등을 보관합니다.
// config/databaseConfig.js
module.exports = {
// 데이터베이스 설정
};
9. app.js: 진입점의 관문
애플리케이션의 진입점을 정의하는 파일로, 설정과 서버 시작 등이 이루어집니다.
const express = require('express');
const app = express();
const userRoutes = require('./routes/userRoutes');
// 미들웨어 및 라우트 설정
app.use('/users', userRoutes);
// 서버 시작
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
10. package.json: 의존성의 도서관
애플리케이션의 의존성과 스크립트를 정의하는 파일입니다. npm을 통해 필요한 패키지를 설치할 때 사용됩니다.
{
"dependencies": {
"express": "^4.17.1",
// 기타 의존성
},
"scripts": {
"start": "node app.js"
// 기타 스크립트
}
}
원활한 협업을 위한 작업
이상적인 폴더 구조는 프로젝트의 복잡성을 낮추고 가독성을 향상시킵니다. 각각의 역할과 책임이 분명한 구조는 개발자들이 협업하거나 새로운 기능을 추가할 때 효율적으로 작업할 수 있도록 돕습니다. 프로젝트를 시작할 때마다 이러한 구조를 참고하여 진행하시길 권장합니다.
▼ 아래 글도 읽어보세요! ▼
'Programming & Platform > Node.js' 카테고리의 다른 글
Quill을 사용한 텍스트 에디터 구현, Node.js 예제 코드와 함께 알아보기 (0) | 2024.06.08 |
---|---|
Node.js와 동기 및 비동기 처리 - 이벤트 주도 프로그래밍의 이해 (1) | 2024.06.07 |
Node.js Sequelize 모델에서 외래키 지정하는 방법 (2) | 2023.11.25 |
pm2 기초 사용법, Node.js 애플리케이션 관리를 간편하게 (0) | 2023.11.18 |
Node.js 웹 어플리케이션 개발을 위한 패키지 설정 (0) | 2023.11.16 |