본문 바로가기

Web Programming

Node.js 로 하는 웹 프레임워크 Express.js

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



 unopinionated 에 대한 좋은 표현이 잘 떠오르지를 않는다. 자기 주장을 내세우지 않는 이런 뜻이라고 봐야하는데.. 이게 뭔가 의존성이 적다는 건지.. 어떤 제약사항이 적다는 건지 뭔지 표현은 안되지만.. 작고 빠른 웹 프레임워크를 말한다고 하는 express.js 에 대해서 배우기를 시작하게 되었다. 먼저 Java 나 ASP.NET 를 알고 사용한지가 꽤 오래 되었으니 비교를 한번 해보자면 개인적인 소감은 이랬던것 같다. 미묘한 차이이긴 하지만 일단 설치가 매우 간단하다는 점..? 물론 Java 나 ASP.NET 도 어렵지는 않지만.. ^^ 아직 Express.js 와 비교하기엔 다소 어려운 단계인 것 같다.


 먼저 Getting started 를 수행해보면 정말 어렵지 않게 Hello World 를 만날 수 있다. 아마 ASP.NET 이나 Java 였다면 Web.xml 을 살살 만져주고 있지 않았을까 싶다. 그 후에 Controller 클래스를 만들고 ViewResolver 를 세팅해주고 하지 않았을까 싶다. 물론 조금은 다른 개념일 수도 있으나.. 어떻게 구조를 가져갈 것인가 어떤 패키지 구성을 해볼까에 고민을 하고 있었을 것 같다. 하지만 expressjs 에서의 접근은 얼마나 빠르게 실행환경이 갖춰지느냐에 촛점을 맞추다 보니 접근이 조금 달랐다.


 Expressjs 는 기존 Node 와 크게 다르지 않았다. Hello World 를 띄우는 웹서버를 띄우는 것 조차도 유사했다.


이건 node.js 공홈에 올라와있는 소스

var http = require('http')
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'})
  res.end('Hello World\n')
}).listen(1337, '127.0.0.1')
console.log('Server running at http://127.0.0.1:1337/')


이건 Express.js 공홈에 올라와있는 소스

var express = require('express')
var app = express()

app.get('/', function (req, res) {
  res.send('Hello World!')
})

var server = app.listen(3000, function () {

  var host = server.address().address
  var port = server.address().port

  console.log('Example app listening at http://%s:%s', host, port)

})


어짜피 결과는 HTML PlainText 로 Hello World! 가 찍히는 것.. 결과는 같은데 소스를 보면 express 라는 모듈을 사용하는 것과 http 모듈을 사용하는 것의 차이를 볼 수 있다. 그리고 가장 큰 차이? 라면.. express 에서는 routing 을 해주고 있고.. HTTP METHOD 에 대해서도 고려를 해주고 있다는 점.. 이런 차이가 있다고 할 수 있다. 이는 웹 프레임워크가 해야할 가장 중요한 일이기도 하니 expressjs 가 그를 잘 지원하고 있다고 보면 되겠다.


사실 원하던 것은.. node.js 를 nginx 나 apache 와 같은 웹 서버에 띄우는 방법을 고민 중인데.. 이는 더 진행해 봐야 겠다.

일단은 Expressjs 에 대한 맛보기 정도로 하고 더 이어서 배워 봐야겠다.