Computer Science/웹 프로그래밍

모듈의 개념과 express 모듈

mitdog 2024. 7. 25. 21:38

모듈(Module)


라이브러리 같은 것.
필요한 일부 기능을 js 파일로 작성해 놓은 것이다.

 

내장 모듈)

  • http 모듈: 웹 서버 객체 생성
  • url 모듈: url 주소 문자열, url 객체 상호 변환
  • Fs 모듈: 파일 처리

사용자 정의)

  • module1.js...

 

모듈 호출: require()


require 함수를 사용, 인자로 사용할 모듈을 문자열로 받는다.

  • npm 설치 모듈, 내장 모듈: 이름만으로 가능

ex. require('http'), require('url')

  • 사용자 정의 모듈: 상대 경로 등의 경로로

ex. require('./module1')

패키지

여러 개의 모듈을 합쳐 놓은 것.

 

Express 모듈


http 모듈 기반, 웹 서버 동작을 더욱 편리하게 구현할 수 있도록 하는 모듈.

  • 각종 미들웨어와 라우터 제공

설치(ft. npm(node package manager))

npm install express --save

객체 선언

var express = require('express')
..
var app = express();

(참고: [] 괄호 표시는 있어도 되고 없어도 되는 거.)

주요 메소드

  • set(name, value)
    : 서버 설정을 위한 속성 지정.
app.set('port', process.env.PORT || 8080)
// app객체의 포트를 속성으로 설정(set)하기
  • get(name)
    : set로 지정한 속성 읽기
  • use([path, ], function [, function..])
    : 미들웨어 함수(function) 사용하기, path에다가 function 실행하겠다.
  • get([path, ], function)
    : path로 요청이 왔을 경우, 미들웨어(function)를 실행한다.

▲ get을 이용한 사용자 요청 처리 그림.

 

 

미들웨어?


use나 get에서 사용한 function들이다.
서버가 수행해야 할 동작 '함수'.
인자로 req(요청 오브젝트), res(응답 오브젝트), next(다음 미들웨어)를 갖는다.

  • use 메소드로 등록할 수 있다.
  • use 메소드로 사용 시, 등록된 순서대로 실행한다.

물론 등록된 순서대로 사용하려면 next() 메소드를 미들웨어 내에서 실행해줘야 한다.

▲ use로 미들웨어 사용 그림, next()가 있어야 다음 함수가 실행된다.

 

굳이 function() {} 로 바로 쓰지 않고
따로 선언을 미리 해두어 사용해도 당연히 가능하다.

var myLogger = function(req, res, next) {
    console.log('LOGGED');
    next();
};
...
app.use(myLogger);

 

요청 오브젝트, 응답 오브젝트의 메소드


req, res 들이 사용하는 메소드이다.

  • send([body])
    : 클라이언트에 응답 데이터를 전송한다.
    (데이터 형식: HTML 문자열/Buffer 객체/JSON 객체/JSON 배열 데이터 가능)
res.send({name: '소녀시대', age: 20}); // JSON 객체 예
  • status(code)
    : HTTP 상태 코드를 반환한다. (200 = OK 같은 것)
    p.s. end()나 send() 와 연계해서 사용한다. 얘 만으론 전송이 아니기에.
  • sendStatus(statusCode)
    : 위에거 전송까지 한번에 해주는 메소드.
  • redirect([status, ], path)
    웹 페이지 경로를 강제 이동시키는 메소드.
res.redirect('http://www.google.co.kr'); // 구글로 보내버리기

 

라우터(Router) 사용하기


요청 패스(url 주소)에 따른 미들웨어(요청 처리)를 등록할 수 있다.

 

example)

var router = express.Router();
router.route('/...').get(function(req, res) {...});
app.use('/', router);

 

Router 객체 메소드

router.route(경로) 뒤에 붙여서 사용하는 메소드들이다.
아, callback은 미들웨어다. 즉, function(req, res) {...};

  • get(callback)
    : GET 방식 특정 패스 요청 처리 전용 콜백 함수 지정(미들웨어 지정)
  • post(callback)
    : POST 방식에 대하여 이하동문.
  • put, delete도 이하동문
  • all(callback)
    : "모든" 요청 방식에 대해, 특정 패스 요청 전용 콜백 함수 지정.
    ex. 오류 페이지 표시하기)
app.all('*', function(req, res) {
    res.status(404).send('<h1>ERROR - 페이지를 찾을 수 없습니다.</h1>');
});
실습: 특정 경로에 대해 처리해보자
  1. 루트 패스에 대한 요청으로 playjs.html을 불러오도록 하자.
  2. '/routetest'에 대한 요청으로 구글 페이지를 불러오도록 하자.
router = express.Router();
router.route('/').get(function(req, res) {
    res.redirect("http://localhost:8080/playjs.html");
});

router.route('/routetest').get(function(req, res) {
    res.redirect("http://www.google.co.kr");
});

app.use(router);

'Computer Science > 웹 프로그래밍' 카테고리의 다른 글

XML and JSON  (0) 2024.07.29
간단한 Ajax  (0) 2024.07.26
Node.js 설치, 간단한 실행까지  (0) 2024.07.24
캔버스와 JS(그림 그리기)  (7) 2024.07.23
정규 표현식의 활용  (0) 2024.07.15