프로덕션에 즉시 사용 가능한 Node.js 및 Express.js 애플리케이션 구성

DDD
풀어 주다: 2024-10-11 10:42:30
원래의
212명이 탐색했습니다.

프로덕션에 즉시 사용 가능한 Node.js 및 Express.js 애플리케이션을 개발할 때는 명확하고 확장 가능한 폴더 구조를 유지하는 것이 중요합니다. 다음은 향상된 가독성과 관리를 위해 애플리케이션 구성 요소를 구성하는 src 디렉토리 아래에 권장되는 디렉토리 레이아웃입니다.

Organizing a Production-Ready Node.js and Express.js Application

내 앱/
├── src/
│ ├── 구성/
│ │ ├── db.js # 데이터베이스 연결 구성
│ │ ├── appConfig.js # 애플리케이션별 구성 설정
│ │ └── jwtConfig.js # JWT 비밀번호 및 인증 옵션
│ ├── 컨트롤러/
│ │ ├── userController.js # 사용자 관련 엔드포인트를 위한 컨트롤러
│ │ ├── productController.js # 제품 관련 엔드포인트를 위한 컨트롤러
│ │ └── authController.js # 인증 관련 엔드포인트 컨트롤러
│ ├── 미들웨어/
│ │ ├── authMiddleware.js # JWT 토큰 검증을 위한 미들웨어
│ │ ├── errorHandler.js # 중앙 집중식 오류 처리 미들웨어
│ │ └── loggerMiddleware.js # 요청 로깅을 위한 미들웨어
│ ├── 모델/
│ │ ├── userModel.js # 사용자 데이터 모델(스키마)
│ │ └── productModel.js # 제품 데이터 모델(스키마)
│ ├── 노선/
│ │ ├── userRoutes.js # 사용자 관련 작업을 위한 경로
│ │ ├── productRoutes.js # 제품 관련 작업을 위한 경로
│ │ └── authRoutes.js # 인증 경로
│ ├── 서비스/
│ │ ├── userService.js # 사용자 관련 작업을 위한 비즈니스 로직
│ │ ├── productService.js # 제품 관련 작업을 위한 비즈니스 로직
│ │ └── authService.js # 인증을 위한 비즈니스 로직
│ ├── utils/
│ │ ├── logger.js # 메시지 로깅을 위한 로거 유틸리티
│ │ ├── dateFormatter.js # 날짜 형식 지정 유틸리티
│ │ └── responseFormatter.js # 일관된 API 응답을 위한 유틸리티
│ ├── 테스트/
│ │ ├── 컨트롤러/ # 컨트롤러에 대한 단위 테스트
│ │ │ ├── userController.test.js
│ │ │ └── productController.test.js
│ │ ├── services/ # 서비스 단위 테스트
│ │ │ ├── userService.test.js
│ │ │ └── productService.test.js
│ │ └── models/ # 모델 단위 테스트
│ │ ├── userModel.test.js
│ │ └── productModel.test.js
│ ├── .env # 환경변수
│ ├── .gitignore # git에서 무시할 파일 및 폴더
│ ├── README.md # 프로젝트 문서
│ ├── package.json # NPM 패키지 매니페스트
│ └── server.js # 애플리케이션의 주요 진입점
├── .env # 환경변수
├── .gitignore # git에서 무시할 파일 및 폴더
├── README.md # 프로젝트 문서
├── package.json # NPM 패키지 매니페스트
└── package-lock.json # NPM 종속성의 정확한 버전

폴더/파일별 세부 분류

1. src/config/

db.js: 데이터베이스(MongoDB, PostgreSQL 등)에 연결하기 위한 구성입니다.
appConfig.js: 서버 포트 또는 애플리케이션 이름과 같은 애플리케이션에 대한 일반 구성 설정입니다.
jwtConfig.js: 인증을 위한 JSON 웹 토큰과 관련된 비밀 키 및 설정이 포함되어 있습니다.

2. src/컨트롤러/

userController.js: 사용자 관련 HTTP 요청(예: 등록, 사용자 데이터 가져오기)을 처리하는 기능이 포함되어 있습니다.
productController.js: 제품 관련 HTTP 요청을 처리하는 기능이 포함되어 있습니다.
authController.js: 인증 프로세스(로그인, 로그아웃 등)를 처리합니다.

3. src/미들웨어/

authMiddleware.js: JWT를 통해 사용자를 인증하기 위한 미들웨어입니다. 인증된 사용자로부터 요청이 오는지 확인합니다.
errorHandler.js: 오류를 캡처하고 형식화된 응답을 보내는 중앙 집중식 오류 처리 미들웨어.
loggerMiddleware.js: 모니터링을 위해 수신 요청 및 기타 중요한 이벤트를 기록합니다.

4. 소스/모델/

userModel.js: 일반적으로 MongoDB용 Mongoose를 사용하여 사용자 데이터에 대한 스키마와 모델을 정의합니다.
productModel.js: 제품 데이터의 스키마와 모델을 정의합니다.

5. 소스/경로/

userRoutes.js: 사용자 작업(예: 등록, 프로필 관리)과 관련된 경로가 포함되어 있습니다.
productRoutes.js: 제품 운영과 관련된 경로가 포함되어 있습니다.
authRoutes.js: 인증을 위한 경로가 포함되어 있습니다.

6. 소스/서비스/

userService.js: 사용자 작업과 관련된 비즈니스 로직을 컨트롤러와 분리하여 포함합니다.
productService.js: 제품 운영과 관련된 비즈니스 로직이 포함되어 있습니다.
authService.js: 토큰 생성 및 유효성 검사를 포함한 인증 논리를 처리합니다.

7. src/utils/

logger.js: 애플리케이션 전반에 걸쳐 메시지와 오류를 일관되게 기록하는 유틸리티입니다.
dateFormatter.js: 날짜 객체 형식을 지정하는 유틸리티 함수
responseFormatter.js: 일관성을 위해 API 응답을 표준화합니다.

8. 소스/테스트/

controllers/: 요청을 올바르게 처리하는지 확인하기 위해 각 컨트롤러에 대한 단위 테스트가 포함되어 있습니다.
services/: 비즈니스 로직을 검증하기 위한 서비스 기능에 대한 단위 테스트가 포함되어 있습니다.
models/: 모델 검증 및 기능에 대한 테스트가 포함되어 있습니다.

9. 루트 파일

.env: API 키, 데이터베이스 자격 증명, 기타 환경 변수 등 중요한 정보를 저장합니다.
.gitignore: Git에서 추적하지 않아야 하는 파일 및 디렉터리를 지정합니다(예: node_modules, .env).
README.md: 프로젝트에 대한 문서, 설정 방법, 사용 지침 및 기타 관련 정보
package.json: 프로젝트 종속성, 스크립트 및 메타데이터를 나열합니다.
package-lock.json: 일관된 설치를 보장하기 위해 종속성 버전을 잠급니다.
server.js: Express 서버와 미들웨어를 초기화하는 애플리케이션의 진입점입니다.

키 파일 구현 예시

src/config/db.js

//src/config/db.js
`const 몽구스 = require('몽구스');
const config = require('./appConfig');

const connectDB = async () => {
시도해보세요 {
mongoose.connect를 기다립니다(config.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
console.log('MongoDB가 성공적으로 연결되었습니다');
} 잡기(오류) {
console.error('MongoDB 연결 실패:', error.message);
process.exit(1);
}
};
module.exports = connectDB;`

src/middleware/authMiddleware.js

// src/middleware/authMiddleware.js
`const jwt = require('jsonwebtoken');
const config = require('../config/jwtConfig');

const authMiddleware = (req, res, next) => {
const 토큰 = req.headers['authorization'];
if (!token) {
return res.status(403).json({ 메시지: '액세스가 거부되었습니다. 제공된 토큰이 없습니다.' });
}

해 보세요 {
const decoded = jwt.verify(token, config.JWT_SECRET);
req.user = 디코딩됨;
다음();
} 잡기(오류) {
return res.status(401).json({ 메시지: '잘못된 토큰.' });
}
};

module.exports = authMiddleware;`

src/server.js

//src/server.js
` const express = require('express');

const 몽구스 = require('몽구스');
const dotenv = require('dotenv');
const connectDB = require('./config/db');
const userRoutes = require('./routes/userRoutes');
const productRoutes = require('./routes/productRoutes');
const authRoutes = require('./routes/authRoutes');
const errorHandler = require('./middleware/errorHandler');
dotenv.config(); // .env 파일에서 환경 변수 로드
const 앱 = express();
const PORT = process.env.PORT || 3000;
// 데이터베이스에 연결
connectDB();
// 미들웨어
app.use(express.json()); // 들어오는 JSON 요청을 구문 분석합니다
// 경로
app.use('/api/users', userRoutes);
app.use('/api/products', productRoutes);
app.use('/api/auth', authRoutes);
// 오류 처리 미들웨어
app.use(errorHandler);
// 서버 시작
app.listen(PORT, () => {
console.log(서버는 http://localhost:${PORT}에서 실행 중입니다);
});`

결론

Src 디렉터리 아래에 Node.js 및 Express.js 애플리케이션을 구성하는 구조화된 접근 방식을 채택하면 유지 관리 및 확장이 용이하고 프로덕션에 바로 사용할 수 있는 프로젝트를 만들 수 있습니다. 이 조직은 우려 사항을 분리하고 명확성을 높여 애플리케이션이 성장함에 따라 더 나은 협업 및 개발 방식을 가능하게 합니다. 강력한 애플리케이션을 위해서는 단위 테스트, 오류 처리, 로깅 및 적절한 환경 관리를 구현해야 합니다.

위 내용은 프로덕션에 즉시 사용 가능한 Node.js 및 Express.js 애플리케이션 구성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!