본문 바로가기

Javascript/Node.js

Node.js 와 Express

반응형

Node.js

Node.js는 자바스크립트를 브라우저외에서도 실행하는데 사용되는 자바스크립트 플랫폼이다.

이 특징으로 자바스크립트 문법을 가지고 '서버'를 만들 수 있다.

노드 이전에는 하나의 애플리케이션을 만들기 위해 두 가지 서로 다른 기술과 패러다임, 라이브러리를 배워야 했다.

그러나 노드를 사용하면 프론트엔드 개발자도 백엔드에 뛰어들 수 있고 반대도 가능하게 된다.

나아가 노드로 이뤄진 자바스크립트 웹 애플리케이션 스택인 MEAN스택을 만들었다.

MongoDB (자바스크립트로 제어하는 DB), Angular.js(프론트엔드 자바스크립트 프레임워크)



왜 Node.js를 사용하는가? 

1. 자바스크립트 엔진이 빠르기 때문.

- 구글 크롬의 엔진을 기반으로 하기 때문에 수천 개 명령을 1초에 처리할 수 있다.

2. 단순한 것으로 동시성을 다루는 능력 (비동기 작업)

- 클라이언트로부터 온 요청에 응답하면서 또 다른 요청을 받을 수 있다.

* Node.js가 최고가 아니다. Node.js를 선택하는 가장 큰 이유는 성능이 아니다.



Express

Express는 Node.js의 웹 서버 기능 위에 올라가는 상대적으로 작은 프레임워크다.

Node.js의 API를 단순화하고 유용한 새로운 기능을 추가했다.

(쉽게 jQuery와 역할이 비슷하다고 생각하면 된다.)

즉, Express는 Node.js로 웹 애플리케이션을 더 쉽게 만들게 하려고 태어났다.

Express는 미니멀 철학을 가진다. 프레임워크에서는 최소한의 것들만 지원하고 나머지 필요한 것은 라이브러리를 찾아야 한다.

큰 프레임워크에서는 그냥 제공된 것을 사용하면 간단하지만 노드에서는 적당히 괜찮은 것들과 꽤 좋은 것들이 여러 개 있어서 잘 결정하고 고민해야한다. (확장성)



Express 핵심

1. 미들웨어

Node.js에서는 하나의 요청 핸들러 함수를 제공한다. 요청이 이 함수로 들어오고 응답을 밖으로 보내진다.

'하나의 모놀리식 요청 핸들러 함수가 아니라 각각을 해당 작업의 작은 덩어리로 다루는 몇 개의 요청 핸들러 함수를 호출한다. 이러한 더 작은 요청 핸들러 함수를 '미들웨어' 라고 한다.'

예를들어 로깅 미들웨어(서버로 들어오는 모든 요청 기록)를 보면, 요청이 왔을 때 로그 파일에 기록을 하고 어떤 기능이 성공했는지 실패했는지를 기록하는 기능을 갖는다.

미들웨어의 가장 큰 기능 중 하나는 비교적 표준화되어 많은 사람들이 Express를 위해 개발된 미들웨어를 갖고있다는 점이다.

즉, 누군가 이미 적절한 미들웨어를 만들어 놓았다는 것이다.

ex) 보안과 사용자 인증을 위한 미들웨어, 쿠키 세션을 분석하는 미들웨어등...


2. 라우팅

미들웨어처럼 모놀리식 요청 핸들러 함수를 더 작은 조각으로 나눈다. 하지만 미들웨어와는 다르게 요청 핸들러들은 조건에 따라 실행되는데 어떤 URL과 HTTP 메서드를 보내는가에 달렸다.

(특정 URL + GET, POST...) 라우팅은 애플리케이션 동작을 라우트로 분할할 수 있다.


3. 서브애플리케이션

Express가 아주 작을 때도 있지만 규모가 커질 때도 있다.

규모가 커졌을 때 여러개의 폴더와 파일로 나누고 싶을 것이다.

이럴 때, Express는 서브애플리케이션이라는 기능을 제공한다.

Express용어로 이런 미니애플리케이션을 '라우터' 라고 부른다.


4. 편의기능

Express는 요청 핸들로 함수를 작성하는 두 가지인 미들웨어와 라우터로 만들고, 여기서 많은 작업을 수행한다.

HTML을 더 쉽게 렌더링해주는 기능이나 클라이언트의 IP주소를 얻어내는 기능등 분석을 더 쉽게 해주는 기능도 많이 제공된다.



Express 사용처

Express는 단일 페이지 애플리케이션(SPA) 개발에 주로 사용된다.

SPA에서 필요한 html과 다른 파일들을 서비스하는데 뛰어나며, API를 만들 때도 좋다.

(* Node.js는 싱글쓰레드기반이기 때문에 CPU작업이 많이 소요되는 애플리케이션에서 사용하기에 적합하지 않다)



도움을 얻는 방법

API문서와 간단한 가이드 : http://expressjs.com/ 방문

Express 레파지토리 : https://github.com/strongloop/express/tree/master/examples 예제 확인

노드 내장 npm 도구를 사용해서 레지스트리에서 모듈 설치 : https://www.npmjs.com/

좋은 모듈을 찾는데 도움이 필요할 때 : Substack(http://substack.net/finding_modules 에서 finding modules 읽기



Hello World

1
2
3
4
5
6
7
8
9
10
11
var express = require("express"); //Express를 변수에 담는다.
var app = express();//Express를 호출하고 새로운 Express 애플리케이션을 변수(app)에 넣음
 
app.get("/",function(request, response){
    response.send("Hello World"); // HelloWorld를 전송한다.
});
 
app.listen(3000function(){
    console.log("Express app started on port 3000.");
    //3000번 포트에서 Express서버를 시작하고 시작했다는 로그 기록
});



반응형