Express
Express는 HTTP 요청에 대해 라우팅과 미들웨어 기능을 제공하는 웹 프레임 워크이다.
Express-generator
Express 프레임워크는 익스트레스 외에도 여러가지 패키지를 사용해서 구조를 잡는 도중 필요한 패키지를 하나하나 찾아서 설치하기 까다롭다. 하지만 Express-generator라는 패키지를 통해서 프레임워크에 필요한 package.json과 기본 구조까지 잡을 수 있다.
- express-generator를 사용하기 위해 npm 전역 설치
npm i -g express-generator
전역 설치를 만들면 본격적으로 express-generator를 이용한 익스프레스 프로젝트를 만들 수 있다.
- 새 express 프로젝트 생성하기
express <express 프로젝트 명>
이렇게 하면 express 프로젝트가 생성이 된다.
프로젝트 명 뒤에 --view=<template>을 추가하면 템플릿 엔진을 설정할 수 있다 ( --view=ejs )
- 이렇게 생성된 express 프로젝트에는 추가로 npm 모듈을 설치해 주어야 한다.
cd <express 프로젝트 명>
npm install
Express 구조 뜯어보기

- bin/www
- http 모듈에 express 모듈을 연결하며, 포트를 지정할 수 있다.
- 서버를 실행하는 스크립트이다.
- public
- 각종 리소스들을 모아놓은 폴더로 외부(브라우저 등의 클라이언트)에서 접근 가능한 파일들을 모아 둔 디렉토리이다.
- images, javascripts, stylesheets 파일들이 들어있다.
- routes
- 라우터들을 관리하는 곳으로 서버의 로직은 모두 routes 폴더 안의 파일에 작성할 것이다.
- index.js를 기반으로 라우팅 관리를 해주면 된다.
- routes 디렉토리 안에 또 폴더를 만들어 관리해도 된다. 다만 index.js가 루트가 되어야 한다.
- views
- view 파일들을 관리하는 곳으로 웹서버로 사용 시 이 디렉토리에 있는 파일들을 사용해서 렌더링 시킨다.
- app.js
- 핵심적인 서버의 역할을 하며 미들웨어 관리를 하는 곳이다.
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express(); // --- 1
// view engine setup // --- 2
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev')); // --- 3
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app; // --- 4
- express 패키지를 호출해 app 변수 객체를 만든다.
app.set()으로 익스프레스 앱을 설정한다.app.use는 미들웨어를 변경하는 부분이다. (미들웨어는 반드시next()를 호출해야 다음 미들웨어로 넘어간다.)- app 객체를 모듈로 만든다.
출처: https://velog.io/@new_wisdom/Node.js-6-Express-Express-generator로-프로젝트-만들기