장점
- 웹 애플리케이션을 만들기 위한 각종 라이브러리와 미들웨어 등이 내장돼 있어 개발하기 편리함
- 수많은 개발자들에게 개발 규칙을 강제하여 코드 및 구조의 통일성을 향상시킴
디렉토리 생성후, 작업 디렉토리로 설정
mkdir 디렉토리명
cd 디렉토리명
pakage.json 파일 생성
npm init -y
express 설치
npm install express
// server.js 작성
const express = require('express');
const app = express(); // Expres App 객체 -> 모든 서버의 일을 처리함
app.get('/', (req, res) => {
res.send('Hello World!'); // 'Hello World!' 문자열 전송
});
app.listen(3000, () => { // 3000 포트에서 요청 대기
console.log(`Example app listening on port 3000`);
});
Routing : URI(또는 경로) 및 특정한 HTTP 요청 메소드(GET, POST 등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것route는 하나 이상의 핸들러 함수를 가질 수 있으며, 이러한 함수는 라우트가 일치할 때 실행된다// app -> express의 인스턴스
// METHOD -> HTTP 요청 메서드
// PATH -> 서버에서의 경로
// HANDLER -> 라우트가 일치할 때 실행되는 함수
app.METHOD(PATH, HANDLER)
| 메소드 | 설명 |
|---|---|
res.download | 파일이 다운로드되도록 프롬프트. |
res.end() | 응답 프로세스를 종료 |
res.json() | JSON 응답을 전송 |
res.jsonp() | JSONP 지원을 통해 JSON 응답을 전송 |
res.redirect() | 요청의 경로를 재지정 |
res.render() | 보기 템플릿 렌더링 |
res.send() | 다양한 유형의 응답을 전송 |
res.sendFile() | 파일을 옥텟 스트림의 형태로 전송 |
res.sendStatus() | 응답 상태 코드를 설정한 후 해당 코드를 문자열로 표현한 내용을 응답 본문으로서 전송 |
이미지, CSS 파일 및 JavaScript 파일과 같은 정적 파일을 제공하려면 express.static을 사용
app.use(express.static('public'));
다음과 같이 public 디렉토리에 포함된 파일을 로드할 수 있다
http://localhost:3000/images/kitten.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/app.js
http://localhost:3000/images/bg.png
http://localhost:3000/hello.html
✔️ express의 핵심은 미들웨어이다
✔️ 미들웨어 함수는 요청 오브젝트(
req), 응답 오브젝트 (res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수 대한 액세스 권한을 갖는 함수이다. 그 다음의 미들웨어 함수는 일반적으로next라는 이름의 변수로 표시된다✔️ 아래 이미지에서
function(req, res, next) {}부분이 미들웨어이다

✔️ 미들웨어 사용
app.use(미들웨어)
app.use(미들웨어 사용경로, 미들웨어)
app.METHOD(미들웨어)
app.METHOD(미들웨어 사용경로, 미들웨어)
const express = require('express');
const app = express();
// app.use가 미들웨어가 아니라 app.use()의 인자안의 함수가 미들웨어
app.use(function (req, res, next) {
req.requestTime = Date.now(); // req라는객체에 requestTime 키와 밸류를 래퍼로 등록. requestTime는 사용자가 정한 값이다.
next(); // 다음 미들웨어 함수를 작동
});
// app.get이 미들웨어가 아니라 app.get()의 인자안의 함수가 미들웨어
app.get('/', function (req, res) { // 위에서 next()가 호출되면 이 콜백함수가 작동
res.send(req.requestTime); // 위 미들웨어에서 requestTime 객체를 등록했고 next()를 사용했기 때문에 호출해서 데이터 사용 가능
});
// 서버 실행
app.listen(3000);
// server.js
const express = require('express');
const path = require('path'); // path 모듈
const app = express();
// __dirname : 현재 위치를 가리키는 node.js의 전역변수
// path.join : 디렉토리 주소 구분자에 상관없이 주소를 완성해줌
app.use(express.static(path.join(__dirname, 'html'))); // 정적 파일 제공
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'html', 'main.html'));
});
app.get('/about', (req, res) => {
res.sendFile(path.join(__dirname, 'html', 'about.html'));
});
app.listen(3000, () => {
console.log(`Example app listening on port 3000`);
});
https://expressjs.com/ko/starter/installing.html
https://inpa.tistory.com/entry/EXPRESS-%F0%9F%93%9A-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4-%F0%9F%92%AF-%EC%9D%B4%ED%95%B4-%EC%A0%95%EB%A6%AC