본문 바로가기

Node.js/Express

(5)
Express - 템플릿 엔진 (Template Engine) 템플릿 엔진 웹페이지 구성 시 가장 기본적으로 쓰이는 마크업 언어인 HTML은 정적인 언어이다. 주어진 기능만 사용할 수 있으며, 직접 기능을 추가할 수 없다. 그러나 자바스크립트와 함께라면 가능하다. 예를 들어 HTML로 1,000개의 데이터를 모두 표현하고 싶다고 해보자. HTML만 사용한다면 일일이 직접 써서 넣어야 할 것이다. 그러나 자바스크립트로 표현하면 반복문으로 아주 간단하게 처리할 수 있다. 템플릿 엔진은 자바스크립트를 사용하여 HTML을 렌더링할 수 있게 해준다. 따라서 기존 HTML과 문법이 살짝 다를 수도 있고, 자바스크립트 문법이 들어가기도 한다. 템플릿 엔진에는 대표적으로 퍼그 (Pug), 넌적스 (Nunjucks), EJS, Handlebars 등이 있다. 퍼그는 사용법이 아주 ..
Express - req, res 객체 익스프레스의 req, res 객체는 기본적으로 http 모듈의 req, res 객체를 확장한 것이다. 기존 http 모듈의 메서드는 물론 익스프레스가 추가한 메서드나 속성을 이용할 수도 있다. 예를 들어 res.writeHead, res.write, res.end 메서드를 그대로 사용할 수 있으면서도 res.send 또는 res.sendFine 등의 메서드도 쓸 수 있다. 다만 익스프레스의 메서드가 워낙 편리하기 때문에 기존 http의 메서드들은 잘 사용되지 않는다. 익스프레스가 많은 속성과 메서드를 추가했지만, 자주 쓰이는 것 위주로 살펴보자. 먼저 req 객체를 살펴보자. req.app: req 객체를 통한 app 객체로의 접근이다. 예를 들어 req.app.get('port')와 같은 식으로 사용할..
Express - 라우터 (Router) 익스프레스를 사용하는 이유 중 하나가 라우팅을 깔끔하게 관리할 수 있다는 점이다. 예를 들어, app.js에서 app.get 같은 메서드가 라우터 부분이다. 그러나 라우터를 많이 연결하면 app.js 코드가 매우 길어진다. 익스프레스에서는 라우터를 분리할 수 있는 방법을 제공한다. routes 폴더를 만들고 그 안에 index.js와 user.js를 다음과 같이 작성해주자. // routes/index.js const express = require('express'); const router = express.Router(); router.get('/', (req, res) => { res.send('Hello, Express'); }); module.exports = router; // routes/..
Express - 미들웨어 (Middleware) 미들웨어 기본 미들웨어는 익스프레스의 핵심이다. 미들웨어는 요청과 응답의 중간에 위치한다 하여 미들웨어라고 불린다. 후에 다룰 라우터와 에러 핸들러 또한 미들웨어의 일종이며, 미들웨어가 곧 익스프레스의 전부라고 해도 과언이 아니다. 미들웨어는 요처오가 응답을 조작하여 기능을 추가하기도 하며 나쁜 요청을 걸러내기도 한다. 미들웨어는 app.use와 함께 사용된다. app.use(미들웨어) 꼴로 사용된다. 저번에 만들었던 서버에 미들웨어를 연결해보자. const express = require('express'); const app = express(); app.set('port', process.env.PORT || 3000); app.use((req, res, next) => { console.log('..
Express - 익스프레스 프로젝트 시작하기 (Start Express Project) 익스프레스는 웹 서버 프레임워크이며, Node.js를 기반으로 구동되는 웹 서버 프레임워크이다. 익스프레스는 http 모듈의 요청과 응답 객체에 추가 기능들을 부여한다. 또한, 코드를 분리하기 쉽게 만들어 관리하기도 용이하다. 그리고 더 이상 if 문으로 요청 메서드와 주소를 구별하지 않아도 된다. 이제 익스프레스 프로젝트를 시작해보자. 먼저 learn-express 라는 폴더를 만들고, package.json 파일을 생성하여 정보들을 입력해준다. npm init으로 해도 좋다. 그 후, express와 nodemon을 설치해주자. nodemon은 개발용 패키지로 설치해주는게 좋다. 그 후, package.json의 항목 중 scripts의 start 항목에 nodemon app이라는 명령어를 입력해주자..