express 프레임워크

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

Upload: choonghyun-yang

Post on 27-May-2015

282 views

Category:

Software


4 download

DESCRIPTION

아키텍트를 꿈꾸는 사람들 오후반 nodejs 발표자료 chap.express framework

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