Express.js 프레임워크란 ?
Node.js를 위한 웹 프레임워크의 하나로 자바스크립트 런타임 환경에서 웹 어플리케이션을 편하게 개발하기 위한 각종 라이브러리와 미들웨어들이 기본 내장되어 있고 프레임워크로서 개발 규칙을 강제하여 코드 구조를 간결하고 통일성있게 유지시켜주는 도구이다. (Express는 유연한 편이다.)
Node.js 웹 프레임워크는 Express 말고도 Nest.js, Hapi.js, Sails.js, Koa.js, Meteor.js 등이 있지만 사실상 Node.js의 웹 프레임워크 표준이라고 불일 정도로 절대 다수의 개발자가 Express를 사용하고 있다. 많은 사용자가 있다는 뜻은 커뮤니티가 활발하다는 것이고 관련 레퍼런스도 구글링을 통해 쉽게 접할 수 있다. 게다가 엄청나게 많은 템플릿 엔진과 패키지들을 지원한다 !
ES6 문법을 지원하는 Koa.js 프레임워크(Express를 개발한 팀이 만들었다) 가 차세대 프레임워크로 대두되고 있지만 그럼에도 불구하고 여전히 아주 많은 기업과 사용자가 앞으로도 Express 프레임워크를 사용하고 사용할 것이기에 Koa 학습 이전에 Express 를 배워두는 것이 좋겠다.
http 내장모듈 VS Express
http 내장모듈
1
2
3
4
5
6
7
8
const http = require('http');
http.createServer(function(request, response) {
response.writeHead(200, {'Content-Type' : 'text/html'});
response.write('HTTP 내장모듈');
response.end();
}).listen(3000, function(){
console.log('3000번 포트에서 대기중');
});
Express
1
2
3
4
5
6
7
8
9
10
const express = require('express');
const app = express();
app.set('port', 3000);
app.get('/', (res, res) => {
res.send('Express');
});
app.listen(app.get('port'), () => {
console.log(app.get('port'), '번 포트에서 대기중');
});
보는바와 같이 코드가 간결해진다.
Express 설치
간단한 npm 명령어로 설치할 수 있다.
1
2
user@myMacbook ProjectRoot % npm init -y
user@myMacbook ProjectRoot % npm install express
npm이 설치되어 있지 않으면 node.js 를 먼저 설치하여야 한다.
mac os > brew install node
windows os > https://nodejs.org/en/download/ 접속 후 LTS 버젼 설치
1
user@myMacbook ProjectRoot % npm install -D nodemon
npm install -D nodemon nodemon이란 node monitor의 약자로 노드가 실행되는 파일의 변경을 감지해서 자동으로 어플을 재시작 해주는 확장모듈이다.
개발환경에서 편의를 제공해주는 모듈이기 때문에 npm install -D 옵션을 붙여서 설치하자.
package.json
1
2
3
4
5
6
7
8
...
"dependencies": {
"express": "^4.17.1"
}
"devDependencies": {
"nodemon": "^2.0.12"
}
...
설치가 완료되면 Project 루트에 위치한 package.json의 dependencies에 express 가 추가된다.
실행
설치가 완료되면 프로젝트 루트에 app.js 파일을 다음과 같이 작성하고
1
2
3
4
5
6
7
8
9
10
const express = require('express');
const app = express();
app.set('port', 3000);
app.get('/', (res, res) => {
res.send('Express');
});
app.listen(app.get('port'), () => {
console.log(app.get('port'), '번 포트에서 대기중');
});
package.json 으로 가서 script 부분을 이렇게 수정하자
1
2
3
"scripts": {
"start": "nodemon app" //npm의 start 스크립트. nodemon으로 app.js 를 호출할 것이다.
},
그 다음 터미널에서 시작해준다.
1
2
3
4
5
6
7
8
9
10
user@myMacbook ProjectRoot % npm start
> learn.express@1.0.0 start
> nodemon app
[nodemon] 2.0.12
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node app.js`
3000 번 포트에서 대기중...
browser에서 localhost:3000에 접속하면 get / 요청의 결과를 확인할 수 있다.