이번 글은 아래 페이지들을 참고하여 작성하였습니다.
MDN_link
Express 공식 사이트
stackoverflow 내 답변
MERN Clone Coding_blog-app
MERN에서 'E'를 맡고 있는 'express'가 무엇인지 궁금하여 찾아보았다.
express
는 현시점에서 가장 인기 있는 node.js의 프레임워크이다. 기존의 복잡했던 node.js 작업을 간소화해서 진행할 수 있다. 매우 가볍게 동작하도록 고안되었기 때문에 외부 library나 features를 잘 접목하여 사용해야 제 성능을 발휘할 수 있다.
다른 framework와 달리 express
의 주된 특징이라면 바로 unopinionated framework
라는 점이다.
여기서 opinionated
와 unopinionated
의 개념을 짚고 가자.
opinionated
Opinionated frameworks는 특정 작업에 대해 곧바로 접근하는 방식(right way)의 framework이다. 곧바로 접근하는 방식은 알기 쉽고 잘 정돈되기 때문에 특정 domain에서 빠른 개발을 지원한다. main domain 외부에서 작업할 때 다소 유연하지 못하기 때문에 components나 approaches를 고를 때 선택지가 적은 게 단점이다.
unopnionated
Unopinionated frameworks는 작업하는 데 제약이 적어 각종 components를 조합하여 사용할 수 있다. 이러한 특징은 개발자로 하여금 특정 작업을 완수하는 데 가장 적합한 tool을 사용하기 유용하게 한다. 하지만 어떤 tool이 가장 적합할지 스스로 알아내야 하는 점이 단점이다.
express
는 unopinionated framework
로서 가끔은 너무 선택지가 많아 곤란하다고 여길 만큼 개발자가 원하는 middleware를 자유롭게 넣을 수 있다!
express
는 npm
을 이용해서 간단히 설치 가능하다. 아래의 입력값들을 terminal창에 차례대로 입력하여 설치하자.
$ mkdir myapp
$ cd myapp
$ npm init
package.json 파일을 만들고 나면 다음과 같은 setting값들이 terminal창에 표시될 텐데 자신이 원하는 대로 설정을 하면 된다.
dependencies list에 추가할지 여부에 따라 아래와 같이 입력하면 된다.
$ npm install express --save
$ npm install express --no-save
다음 예제 코드를 통해 기본적인 local server를 구축하는 법을 알아보자.
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
$ node app.js
위와 같이 코드를 작성하고 파일을 실행시킨 후 http://localhost:3000/
에 접속해보면 실시간으로 변경사항이 반영되는 서버가 완성된다!
이를 응용하여 다양한 페이지를 구성하고 자신만의 서비스를 발전시켜 나가면 된다!
Routing은 application이 특정 endpoint에 대한 client의 request가 어떻게 respond할지 결정하는 데 관련 있다. endpoint로는 URI (or path), 특정한 HTTP request method (GET, POST, and so on) 등이 있다.
각 route
는 route
가 일치하면 실행되는 하나 혹은 그 이상의 handler functions를 가진다.
route
의 구조는 다음과 같다.
app.METHOD(PATH, HANDLER)
//app is an instance of express.
//METHOD is an HTTP request method, in lowercase.
//PATH is a path on the server.
//HANDLER is the function executed when the route is matched.
HTTP request method의 종류는 링크 걸어두었다.
다음 예제들을 통해 기본적인 route
를 정의하는 법을 알아보자.
app.get('/', function (req, res) {
res.send('Hello World!')
})
app.post('/', function (req, res) {
res.send('Got a POST request')
})
app.put('/user', function (req, res) {
res.send('Got a PUT request at /user')
})
app.delete('/user', function (req, res) {
res.send('Got a DELETE request at /user')
})