이번 포스팅에서는 sns 서버 구축에 앞서 Node.js 프로젝트의 초기 파일 구조와 필요한 json모듈 애플리케이션의 메인 설정에 대해 알아보려고 한다.
Node.js 애플리케이션을 개발할 때 일반적으로 사용되는 구조 중 하나로, 코드의 관리를 용이하게 하고, 기능별로 파일을 구분하여 프로젝트의 유지보수를 향상시킬 수 있다.
Project\Server폴더 안에 아래와 같이 폴더와 파일을 만들었다
파일 구조 설명
각 파일과 폴더의 역할은 다음과 같다
- app.js
- 이 파일은 애플리케이션의 메인 진입점입니다. Express 앱을 설정하고, 미들웨어를 구성하며, 라우터를 연결하는 기본 서버 설정을 포함합니다.
- package.json
- Node.js 프로젝트에서 필수적인 파일로, 프로젝트의 메타데이터와 의존성(dependencies) 목록을 관리합니다. npm install을 실행하면 package.json에 명시된 모든 패키지가 설치됩니다.
- router/
- 이 폴더는 애플리케이션의 라우팅 로직을 모듈화하여 관리합니다. 라우터를 통해 관련된 경로들을 그룹화하고, 각 경로에 대한 요청 처리를 담당합니다.
- auth.js
- 인증 관련 라우트를 처리하는 파일입니다. 로그인, 로그아웃, 회원 가입 등 인증과 관련된 API 엔드포인트가 구현됩니다.
- tweets.js
- 트윗 관련 기능(트윗 작성, 트윗 조회, 트윗 수정, 트윗 삭제)을 처리하는 라우터입니다. 각기 다른 HTTP 메서드(GET, POST, PUT, DELETE)를 통해 해당 기능들을 제공합니다.
package.json 파일 설정
package.json 파일은 프로젝트의 설정을 중앙에서 관리하며, 프로젝트의 의존성을 일관되게 유지하고, 필요한 스크립트를 쉽게 실행할 수 있게 해주므로 Node.js 개발에서 중요하다. package.json파일로 개발자는 프로젝트의 의존성을 수동으로 관리하는 복잡성에서 벗어나고, 팀원 간의 작업 환경을 통일할 수 있다.
모듈 시스템 설정:
type: 최근 JavaScript는 CommonJS와 ES 모듈 두 가지 시스템을 사용합니다. package.json에서 type을 module로 설정하면 ES 모듈로 작업하겠다는 것을 명시할 수 있어, 최신 자바스크립트 기능을 활용할 수 있다.
{
"name": "twitter_server", // 프로젝트의 이름입니다.
"version": "1.0.0", // 프로젝트의 버전입니다.
"main": "app.js", // 프로젝트의 메인 엔트리 파일입니다.
"type": "module", // ES 모듈 시스템 사용을 명시합니다. (CommonJS 대신에)
"scripts": { // 커맨드 라인에서 실행할 수 있는 스크립트를 정의합니다.
"test": "echo \"Error: no test specified\" && exit 1", // 테스트 스크립트
"start": "nodemon app.js" // 애플리케이션을 nodemon을 사용하여 시작합니다.
},
"keywords": [], // 프로젝트와 관련된 키워드 배열입니다.
"author": "", // 프로젝트의 저자 정보입니다.
"license": "ISC", // 프로젝트의 라이선스 정보입니다.
"description": "", // 프로젝트의 설명입니다.
"devDependencies": { // 개발 시에만 필요한 종속성을 나열합니다.
"nodemon": "^3.1.7" // nodemon 라이브러리를 지정된 버전으로 포함합니다.
},
"dependencies": { // 프로덕션 환경에서 필요한 종속성을 나열합니다.
"body-parser": "^1.20.3",// 요청 본문을 파싱하는 미들웨어입니다.
"ejs": "^3.1.10", // 템플릿 엔진 EJS를 지정된 버전으로 포함합니다.
"express": "^4.21.1" // Express.js 웹 프레임워크를 지정된 버전으로 포함합니다.
}
}
"start": "nodemon app.js" 으로 nodemon을 사용하여 npm start 명령어를 통해 실행할 수 있게된다.(디버깅할때 훨씬 편리함) nodemon은 파일이 수정될 때마다 자동으로 Node.js 애플리케이션을 재시작해주는 유틸리티이다.
package.json파일 생성 및 설정에 대한 확인은 다음 글에서 자세히 확인할 수 있다
https://hyunji00pj.tistory.com/49
app.js (메인)파일 설정
Node.js 환경에서 Express.js를 사용하여 웹 서버를 구성하는 기본 예시이다
// Express.js 모듈을 임포트합니다.
import express from 'express'
// 사용자 정의 라우터 파일을 임포트합니다.
import tweetsRouter from './router/tweets.js'
import authRouter from './router/auth.js'
// Express 애플리케이션 객체를 생성합니다.
const app = express()
// 요청 본문을 JSON 형태로 파싱할 수 있게 미들웨어를 설정합니다.
app.use(express.json())
// '/tweets' 경로로 들어오는 요청을 tweetsRouter가 처리하도록 설정합니다.
app.use('/tweets', tweetsRouter)
// '/auth' 경로로 들어오는 요청을 authRouter가 처리하도록 설정합니다.
app.use('/auth', authRouter)
// 요청이 위에서 정의된 경로와 일치하지 않을 경우, 404 Not Found 에러를 응답합니다.
app.use((req, res, next) => {
res.sendStatus(404)
})
// 서버를 8080 포트에서 실행합니다.
app.listen(8080)
1. 모듈 임포트:
import express from 'express'
import tweetsRouter from './router/tweets.js'
import authRouter from './router/auth.js'
- express: Express 모듈을 임포트합니다. 이는 Node.js의 웹 애플리케이션 프레임워크로, 웹 서버 기능을 손쉽게 구현할 수 있게 도와줍니다.
- tweetsRouter와 authRouter: 사용자 정의 라우터 모듈을 임포트합니다. 각각 트윗과 인증(authentication) 관련 라우팅 로직이 구현되어 있습니다.
2. Express 애플리케이션 생성:
const app = express()
- express() 함수를 호출하여 새 Express 애플리케이션을 생성합니다.
3. 미들웨어 설정 :
app.use(express.json())
- express.json(): 서버가 JSON 요청 본문을 파싱할 수 있도록 미들웨어를 설정합니다. 이는 클라이언트로부터 받은 JSON 형식의 데이터를 쉽게 처리할 수 있게 해줍니다.
4. 라우터 사용 :
app.use('/tweets', tweetsRouter)
app.use('/auth', authRouter)
- 각 라우터 모듈을 특정 경로에 연결합니다. 예를 들어, /tweets 경로로 들어오는 요청은 tweetsRouter가 처리하고, /auth 경로로 들어오는 요청은 authRouter가 처리합니다.
5. 404 에러 처리 :
app.use((req, res, next) => {
res.sendStatus(404)
})
- 요청이 기존의 라우트나 미들웨어와 일치하지 않을 경우, 404 상태 코드를 클라이언트에 전송합니다. 이는 요청된 리소스가 서버에 없음을 나타냅니다.
6. 서버 실행 :
app.listen(8080)
- listen 메소드를 사용하여 8080 포트에서 서버를 실행합니다. 이로써 서버가 클라이언트의 요청을 수신할 준비가 완료됩니다.
위 코드는 Express.js를 사용하여 API 서버를 구성하는 간단한 예제로, 특정 경로에 대한 요청 처리를 모듈화하여 관리하는 방법이다. 각 라우터는 특정 도메인 로직(예: 트윗 관리, 사용자 인증)을 캡슐화하고, 애플리케이션의 구조를 깔끔하게 유지하도록 한다.
router에 대한 설정은 다음 포스팅에서 계속 하겠다👋
'백엔드 > Node.js' 카테고리의 다른 글
회원관리 서버 구축 (Node.js Express 프레임워크 ) (2) | 2024.11.13 |
---|---|
sns 서버 구축 (Node.js Express 프레임워크 ) (0) | 2024.11.13 |
package.json 파일 생성 및 설정 방법 (0) | 2024.11.13 |
fetch (2) | 2024.11.09 |
Node.js (2) | 2024.11.08 |