Top Banner
Node.js CHAPTER 7 Express 프레임워크 yarn
30

Express 프레임워크

May 27, 2015

Download

Software

Choonghyun Yang

아키텍트를 꿈꾸는 사람들 오후반
nodejs 발표자료 chap.express framework
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Express 프레임워크

Node.js CHAPTER 7 Express 프레임워크

yarn

Page 2: Express 프레임워크

framework? • framework

• 효율적으로 개발하기 위해 필요한 기능 및 아키텍쳐를 미리 만들어 제공하는 라이러리 집합

Page 3: Express 프레임워크

Node framework • Express

• Sinatra

• RESTful

• Geddy

• Rails

• MVC

Page 4: Express 프레임워크

Express 특징 • Robust routing • HTTP helpers (redirection, caching, etc) • Content negotiation • Focus on high performance • Executable for generating applications

quickly • High test coverage

Page 5: Express 프레임워크

Express 처음 시작하기

Page 6: Express 프레임워크

express folder

Main source code

HTML view template

URL 별로 수행되는 로직

HTML, 그림, js, css static 파일

필요한 모듈

Page 7: Express 프레임워크

app.js

Page 8: Express 프레임워크

app.get('/', routes.index);

*지정된 뷰를 일련의 옵션으로 렌더링 한다 현재는 page의 title을 Express로 랜더링.

Page 9: Express 프레임워크

configure

• Configure 함수로 옵션들을 구성 • 첫번째 매개변수는 서버 환경 (dev, stg, prd) • 두번째는 설정 옵션 • NODE_ENV 환경변수를 통해 제어 • 기본적으로 development

Page 10: Express 프레임워크

app.set()

• View의 위치나 view engine 설정하는데 사용.

Page 11: Express 프레임워크

에러처리

Page 12: Express 프레임워크

에러처리-사용자 정의 함수

에러처리 함수는 4개의 변수를 매개변수를 받고 error 첫번째 매개변수로 받는다.

어떤 path도 mapping 되지 않는 경우 404 처리 후 , next 함수로 다음 함수 호출

Page 13: Express 프레임워크

Express/connect

• Connect의 세션 미들웨어 지원가능

• staticCache로 정적캐쉬를 활성화 시킴 –기본적으로 캐쉬는 최대 128개

–각각의 개체는 256kb

Page 14: Express 프레임워크

middelware

request response express.favicon()

express. logger()

express. static()

app. get(/)

app. use(404)

next() 다음 middleware 호출

Mapping 되는 path가 없을 경우 404처리

Page 15: Express 프레임워크

라우팅 • URL pattern으로 HTTP 요청 처리.

• Express 라우팅은 HTTP method GET, PUT, DELETE, POST를 사용하여 관리.

• method 이름은 GET인 경우 app.get(), POST인경우 app.post().

• app(HTTP_METHOD).(URL, callback_function)

Page 16: Express 프레임워크

라우팅 예제

./app.js

./routes/index.js

지정된 View 호출 ./views/index.jade

http://www.choong.com/ call!!!!

Page 17: Express 프레임워크

라우팅의 경로 • 모든 라우팅 경로를 정규식 개체로 컴파일

• 경로 문자열에 특수문자를 가진 문자열을 사용하거나 직접 정규식을 사용해도 된다.

Page 18: Express 프레임워크

라우팅 경로 예제

//write 및 end 대신에 send 함수 사용

*지정된 경로 패턴과 일치 하지 않는 요청이 있는 경우 404 응답

Page 19: Express 프레임워크

send()..1

생략

2번째 인자가 있는 경우 HTTP.status 값으로 처리. *인자 모두가 문자열인 경우 문제, 2번째 인자를 body로 1번째 인자를 상태값으로 처리.;;;

Page 20: Express 프레임워크

send()..2

BOdy 내용에 따라 적절한 헤더를 결정 해줌, 단 body가 숫자인 경우, http status 값으로 간주함. 함수 호출 시 http.status 값도 던져주는 경우 응답코드는 던져진 값으로 셋팅

Page 21: Express 프레임워크

send()..3

생략

*Etag지원, (응답헤더로 리소스가 변경되었는지 확인하는 코드를 넣어줘서, 불필요한 리소스 절감

Page 22: Express 프레임워크

route 개체

*경로 path를 정규식 표현으로 자동변환.

Page 23: Express 프레임워크

라우팅과 HTTP method • POST

• app.post()

• GET • app.get()

• DELTE • app.delete()

• PUT • app.put()

* form에서 PUT,DELETE method를 지원하지 않으므로 _method사용하여서 method 지원 <input type=‘hidden’ value=‘put’ name=‘_method’ /> * express에서 HTTP method를 적절하게 처리 하기 위해서 methodOverride() configure에 추가. app.use(express.bodyParser()) 다음에 추가 app.use(express.methodOVerride())

Page 24: Express 프레임워크

methodOverride()

*_method라는 숨겨진 파라미터를 이용하여 원하는 method 지정 *X-HTTP-Method-Override는 body 내용이 xml or application/x-www-form-urlencoded경우 사용(Header 값을 읽어서 처리)

Page 25: Express 프레임워크

MVC의 도입 • 모든기능을 하나의 js파일에 넣는것은 비효율적.

• Express에서는 라우팅을 사용하고 있음

Page 26: Express 프레임워크

controller controllers/Widgets.js

Page 27: Express 프레임워크

Uri mapping /maproutecontroller/map.js

Page 28: Express 프레임워크

관계 설정

/app.js

Page 29: Express 프레임워크

app.js(4.0)

Page 30: Express 프레임워크

참고 • https://github.com/visionmedia/express

• http://expressjs.com/

• http://bcho.tistory.com/887