리액트 공부하다보니 조금 막히는 감이 있어서
Node.js를 복습하면서 감을 잡으려고 한다...!
Node.js의 API는 비동기 방식으로, Non-blocking I/O가 가능하다.
따라서 보다 가벼운 환경에서도 높은 Request 처리 성능을 가지고 있다.
Node.js는 데이터를 실시간 처리하여 SPA에 유용하다.
반면에 CPU 사용률이 높은 앱에는 적합하지 않다!
간단하게 createServer를 이용해 3000번 포트를 연결해보자!
createServer가 반환한 HTTP 서버 객체의 listen에 3000을 전달, 실행한다.
// 01_httpServer.js
const http = require('http')
http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Node Test Code Start');
}).listen(3000);
console.log('Server is running at http://localhost:3000/ !!!');
express는 Node.js 환경에서 동작하는 웹 애플리케이션 프레임워크이다.
간단한 예시를 통해 사용해본다!
nodemon
과 express
를 설치한다.sudo npm i -g nodemon
npm init -y
npm i express
nodemon
은 파일을 저장할 때마다 변경 사항을 적용하여 실행시킨다.
귀찮게 서버를 종료하고 다시 시작할 필요가 없다!
nodemon <filename>
으로 실행한다.
그리고 npm i <package> --save
에서 --save
는 생략가능하다.
server.js
를 작성한다.const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
const router = express.Router();
router.get('/', (err, res) => {
res.send("HELLO MY EXPRESS!!")
});
app.use(router);
app.listen(port, (err) => {
if (err) console.log(err)
else console.log('Server is running...!!!');
});
localhost:3000
으로 확인한다.router를 사용하여, 간단한 CRUD를 구성해본다!
controller
폴더를 생성하고 user.js
를 작성한다.// user.js
exports.createUser = (req, res) => {
res.send('USER CREATED...')
}
exports.readeUser = (req, res) => {
res.send('USER READ...')
}
exports.updateUser = (req, res) => {
res.send('USER UPDATED...')
}
exports.deleteUser = (req, res) => {
res.send('USER DELETD...')
}
이전 코드에서 router를 분리하였다.
// server.js
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
const router = require('./route/router');
app.use(router)
app.listen(port, (err) => {
if (err) console.log(err)
else console.log('Server is running...!!!');
})
route
폴더를 생성, router.js
를 작성한다.각 user.js
에서 만든 CRUD기능을 route
의 각 메소드에서 실행한다.
const express = require('express');
const route = express.Router();
const user = require('../controller/user');
route.route('/user')
.post(user.createUser)
.get(user.readeUser)
.put(user.updateUser)
.delete(user.deleteUser)
module.exports = route;