본문 바로가기
IT/NodeJS

Router 를 이용하여, Route 들을 분리하기(경로별 다른 별도 파일로 작성)

by 골든크랩 2022. 7. 18.
728x90
반응형

프로그램 소스가 길어지는 것을 방지하기 위해서,

별도의 파일을 이용해서, 각 경로에 해당하는 기능을 구현하면

소스 가독성이나 유지보수가 수월해진다.

 

각 모듈파일의 맨 하단에 exports 를 꼭 해야 한다.

 

참고)

https://velog.io/@glowing0512_/express-Router-%ED%8C%8C%EC%9D%BC%EB%B6%84%EB%A6%AC

 

참고) 여기 게시판이 node.js 관련해서 읽을 만한게 많은 것 같다.

https://juni-dev-log.tistory.com/77

 

(node.js) [Part.7] 익스프레스 프로젝트를 모듈화하기 - 설정 파일 만들기

웹 서버 안의 각 기능을 별도의 파일로 분리하여 모듈로 만들면, 수정이 필요할 때 웹 서버의 메인 파일을 수정하지 않고 모델 부분만 수정해도 된다. 또 새로운 모듈을 추가할 때도 메인 파일을

juni-dev-log.tistory.com

 

 

 

샘플 예제1 -  3개의 파일로 나눠서 작성함

=======================================================

파일 app.js

-------------------------------------------------------

var express = require('express');

var app = express();// 서버를 생성합니다.

// 외부 파일을 가져오기.....
var board = require('./routes/sub_board');
var member = require('./routes/sub_member');

// 라우터를 설정합니다.
app.use('/board', board); // http://127.0.0.1:4000/board/list
app.use('/member', member);// http://127.0.0.1:4000/member/write

// 서버를 실행합니다.
app.listen(4000, function () {
  console.log('Server running at http://127.0.0.1:4000');
});

 

 

=======================================================

파일 routes/sub_board.js

-------------------------------------------------------

// 라우터를 생성합니다.
var express = require('express');
var router = express.Router();

// 라우터를 설정합니다- 별도의 파일로 작성할 수 있음
router.get('/', function (request, response, next) {
  response.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
  response.write('<h1>게시판입니다 목록입니다</h1>');
  response.end();
});

router.get('/list/:page', function (request, response) {
  response.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
  response.write('<h1>게시판입니다 목록입니다</h1>');
  response.end();
});

router.get('/write', function (request, response) {
  response.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
  response.write('<h1>게시판입니다 글쓰기 화면입니다 </h1>');
  response.end();
});

router.get('/view', function (request, response) {
  response.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
  response.write('<h1>게시판입니다 상세보기 화면입니다 </h1>');
  response.end();
});

//마지막에 모듈을 export 시켜야 한다 
module.exports=router

 

=======================================================

파일 routes/sub_member.js

-------------------------------------------------------

// 라우터를 생성합니다.
var express = require('express');
var router = express.Router();

// 라우터를 설정합니다- 별도의 파일로 작성할 수 있음
router.get('/', function (request, response, next) {
  next();
});

router.get('/list', function (request, response) {
  response.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
  response.write('<h1>회원게시판입니다 목록입니다</h1>');
  response.end();
});

router.get('/write', function (request, response) {
  response.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
  response.write('<h1>회원게시판입니다 글쓰기 화면입니다 </h1>');
  response.end();
});

router.get('/view', function (request, response) {
  response.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
  response.write('<h1>회원게시판입니다 상세보기 화면입니다 </h1>');
  response.end();
});

module.exports=router

 

 

 

 

 

 

 

 

 

728x90
반응형

댓글