모듈(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)를 실행한다.
미들웨어?
use나 get에서 사용한 function들이다.
서버가 수행해야 할 동작 '함수'.
인자로 req(요청 오브젝트), res(응답 오브젝트), next(다음 미들웨어)를 갖는다.
- use 메소드로 등록할 수 있다.
- 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>');
});
실습: 특정 경로에 대해 처리해보자
- 루트 패스에 대한 요청으로 playjs.html을 불러오도록 하자.
- '/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 |