December 19, 2020
노드란 간단히 말해서 비동기적인 이벤트 기반 JavaScript 런타임 환경입니다.
무슨 말인가 싶죠..? 저도 그렇습니다… 하나하나 뜯어봅시다!
이전에 JS로 비동기 처리를 하는 Promise에 대해서 포스팅한 적이 있었습니다.
다시한번 설명해보자면, JS 코드는 원래 위에서 아래로 하나하나 순차적으로 실행되죠?
만약 중간에 실행을 끝마치는 데 엄청나게 오래걸리는 코드가 있다면
그 다음 줄에 써져있는 코드는 실행되기 위해서는 이전 코드가 완전히 실행될때까지 하염없이 기다려야 합니다. 이를 동기적이라고 합니다.
비동기라는 것은 하나의 흐름에서 빠져나와 실행되는 것을 의미합니다.
노드 환경에서 이벤트란, 이제부터 백엔드 서버를 구축할 우리에게는 하나의 HTTP request와 같습니다.
노드가 비동기적으로 이벤트를 처리한다는 것은 클라이언트의 요청을 비동기적으로 받는다는 의미가 되겠죠!
따라서 한 시점에 여러 개의 리퀘스트를 처리할 수 있게 됩니다!
기존 JavaScript는 브라우저 내에서만 사용되었는데,
Chrome의 V8엔진을 브라우저 없이 작동할 수 있게 만든 것이 바로 노드입니다!
nodejs에서 웹서버를 개발한다고 했을 때, Express가 가장 유명한 프레임워크이지 않을까 싶습니다.
설치
$ npm install express --save
const http = require('http')
const express = require('express')
const app = express() // app으로 지정해주는게 국룰
app.get('/', (req, res) => {
// '/' 경로로 요청이 들어왔을 때 hello world라는 Response를 보냄
res.send('hello world!')
})
const server = http.createServer(app)
const PORT = 8000
server.listen(PORT, () => {
console.log(`${PORT} on!`)
})
위와 같이 express.js라는 파일을 작성하고
node express.js 명령어를 입력하면 8000 on! 이라는 콘솔이 찍히면서
서버가 켜지게 됩니다. 이제 localhost 8000번에 http request를 보내봅니다.
hello world!가 나타났죠! 와~짝짝짝!
이제 우리는 express를 이용해서 첫 엔드포인트를 구현해보았습니다!
나의 첫 서버…작고 귀여워…