Node.js Express framework

 

Summry

본 문서에서는 Node.js를 위한 빠르고 개방적이고 간결한 웹 프레임워크인 Express에 대해 정리한다.

Express 프레임워크 외에도 Koa나 Meteor같은 프레임워크가 더 있다. Node.js 프레임워크 특징 비교참고.

send me email if you have any questions.


프레임워크의 필요성

Node.js으로 효율적인 Web 어플리케이션을 개발한다면, 이를 위한 프레임워크를 도입하는 것이 가장 좋다.
프레임워크 없이 개발을 한다면, 무엇을 하던지 그에 대해 세세하게 처리를 구현해야 한다. EJS을 도입하여 템플릿을 사용할 수 있게 됐지만, 템플릿 파일을 미리로드해 놓고 그것을 렌더링 처리를 직접 작성해야 한다. 여러 페이지를 준비해야 한다면, 직접 URL 기반의 라우팅 프로세스를 만들어 두지 않으면 안된다. POST로 된 데이터는 이벤트를 사용하여 데이터를 모두 꺼내 와서 그것을 디코드하여 필요한 값을 사용할 수 있도록 이도 또한 처리를 직접 작성해야 한다. 이것으로는 다수의 페이지를 가진 복잡한 Web 응용 프로그램을 만들려는 의욕이 사라질 것이다.
이러한 작업의 대부분은 “Web 응용 프로그램이라면 반드시 필요한 것”이기도 한다. 그렇다면, Web 응용 프로그램이 사용하는 기능을 미리 모두 구현하여, Web 응용 프로그램으로 기본 시스템을 준비해 두면 보다 쉽게 개발을 할 수 있게 될 것이다.
이러한 생각에 탄생한 것이 “Web 어플리케이션 프레임워크”로 일반적으로 불리는 것이다. 단순히 기능을 모은 라이브러리가 아닌 Web 어플리케이션으로서의 기본적인 시스템 자체를 제공하는 프로그램이다.

Express.js란

Express는 Node.js를 위한 빠르고 개방적이고 간결한 웹 프레임워크이다. Python의 Django, Java의 spring처럼 javascript의 web framework이다.
Express는 프레임워크 중 점유율 1위이다. 정보가 많고 이용자도 많지만, 속도가 느려 고성능(하이 퍼포먼스)을 요구하는 개발에 부적합하며 js의 비동기 처리 기능, 제너레이터 함수, async/await에 대응하지 않아 수정이 필요하다.

Express 프레임워크는 코드의 양도 줄여주고 추후 유지보수가 쉽도록 만들어준다.
npm에서 간단히 설치하고, 이를 통합한 서버 프로그램을 만들 수 있다. 또한 템플릿 엔진에 EJS을 이용할 수 있기 때문에, 지금까지 만든 EJS 템플릿을 그대로 재사용할 수 있다.
Express에는 Web 응용 프로그램을 위한 기본적인 시스템이 구축되어 있으며, 이에 필요한 처리를 추가하는 것이다. Node.js에서만의 구현과 동일하게 이벤트 처리를 통합해 간다는 기본적인 개발 스타일은 변함이 없지만, 준비되어 있는 다양한 객체를 이용하여 아주 쉽게 필요한 처리를 조합할 수 있다.
expressjs.com 여기에 라이브러리 파일이나 문서 등이 공개되어 있다.

Express install 및 init

// 테스트용 디렉터리 생성
$ mkdir test_express

// npm 초기화를 하면 이름, 버전, 설명문, 엔트리 포인트, 테스트 명령, git 저장소, 키워드, 저자, 라이선스 등을 차례로 묻는데 잘 모르는 경우 전부 그대로 Enter 키를 누른다. 이것으로 package.json 파일이 생성된다.
$ npm init

// express install
$ npm install express --save

// main.js 생성 코드는 아래를 참고
$ vi main.js

example code

const express = require('express');
const app = express();
app.get('/', (req, res) => {
  res.send('Hello World!');
});
app.listen(8080, () => {
  console.log('Express App on port 8080!');
});

Reference

[Node.js] Express 프레임워크 - 프로그램 개발 지식 공유
Express 프레임워크 - zerocho