일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- https://velog.io/@velopert/create-typescript-react-component
- 게시판
- 출처 : https://webdir.tistory.com/506
- toString
- object
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- Today
- Total
Back Ground
NodeJS - Express모듈 서버 만들기 [ES5] 본문
- Express 작업 영역
미들웨어
함수를 나눠서 작업 한다.
express는 보통 미들웨어 부분을 처리하고
마지막으로 라우터 설정하는 역활을한다.
RestFul API 방식으로의 과정을 생각하면 될 것같다.
- Express 다운로드
현재 Project에서 npm을 사용 할 것이기 때문에
cmd 창
1 | >npm init | cs |
그러면 프로젝트 명이 무엇이고 설정에 관한걸 묻는데
그게 귀찮으면 다 Y로
1 | >npm init -y | cs |
이렇게 하면된다.
그렇다면 package.json이 생성 된걸 알 수 있다.
그 후 express를 설치한다.
1 | >npm install express --save | cs |
를 설치한다. (--save) 는 pakage.json에 저장한다는 뜻.
Express 모듈 사용하기
Express 함수
set(name, value) | 서버 설정을 위한 속성을 지정합니다. set( ) 메소드로 지정한 속성은 get( ) 메소드로 꺼내어 확인할 수 있습니다. |
get(name) | 서버 설정을 위해 지정한 속성을 꺼내 옵니다. |
use([path,] function [, function...]) | 미들웨어 함수를 사용하도록 합니다. |
get([path,] function) | 특정 패스로 요청된 정보를 처리합니다. |
메소드
1 | .use(function(req,res,next){ | cs |
매개변수
.use(요청,응답, 다음 use);
중요!
1 2 3 | app.use(function(req,res,next)){ next(); }); | cs |
다음 use를 호출할때
매개변수(next)의 함수() 를 실행하면
컴파일상 다음 use()함수를 찾게 된다.
예제)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | var http = require('http'); var express =require('express'); var app = express();// express 객체를 실행 //req 응답 , res 요청 , next 다음 use를 찾는다. app.use(function(req,res,next){ console.log("첫번째 미들웨어"); //헤더 res.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}); //DOM res.write("<!DOCTYPE html>"); res.write("<html>"); res.write("<head>"); res.write(" <title>Me server</title>"); res.write(" <meta charset='UTF-8'>"); res.write(" <meta name='description'' content=''>"); res.write(" <meta name='keywords' content=''>"); res.write("</head>"); res.write("<body>"); res.write("<div>안녕하세요</div>"); res.write("<div>NodeJS 실습 1 미들웨어 입니다.</div>"); //응답 종료 //res.end(); // end해 버리면 다음 use를 찾지 못하고 종료한다. //(2번째로 use로 넘어가긴한다 -콘솔은 나옴- end했는데 write 작업에서 터진다. ) //end next(); //다음 use를 찾는다. }); app.use(function(req,res,next){ console.log("두번째 미들웨어"); res.write("<div>NodeJS 실습 2 미들웨어 입니다.</div>"); res.write("</body>"); res.write("</html>"); //응답 종료 res.end(); }); //createServer에다가 app을 넣어주면 express에서 생성한 것을 넣어주면 생성된다. //아까와 거꾸로 만든 후 createServer에 넣어준다. http.createServer(app).listen(3000,function(){ console.log("express 서버 시작"); }); | cs |
express방식은
기존에 createServer를 만든 후 server.on('request')를 함수에 추가 하고 server를 listen을 하는 방식이 아닌 |
createServer를 생성할때 매개변수로 express함수를 오버라이딩하여 listen하는 방식으로 처리한다. |
중요!
Response.end를 한후 next use하면
다음 use로 넘어간다.
하지만
Response.write를 한순간 end(종료)했는데
write를 쓰려고하면 에러가 발생하고
end를 쓰지않는다면 서버는 계속 대기중일 것이다.
그렇기에
처음과 마지막 use를 만들어 둔 상태에서
중간에 use함수를 만드는걸 추천하다.
[시작 use]
[작업 use] <-
[끝 use {res.end()} ]
'Javascript > Node.js' 카테고리의 다른 글
NodeJS - Request [ES5] (0) | 2018.10.04 |
---|---|
NodeJS - Express의 요청 객체와 응답 객체 [ES5] (0) | 2018.09.20 |
NodeJS - 클라이언트로 응답을 보내는 방식 [ES5] (0) | 2018.09.18 |
NodeJS - http 모듈로 요청받은 파일 내용을 읽고 응답하기 [ES5] (0) | 2018.09.18 |
NodeJs - 스트림 단위로 파일 읽고 쓰기 [ES5] (0) | 2018.09.18 |