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
  1. express 패키지를 호출해 app 변수 객체를 만든다.
  2. app.set()으로 익스프레스 앱을 설정한다.
  3. app.use는 미들웨어를 변경하는 부분이다. (미들웨어는 반드시 next()를 호출해야 다음 미들웨어로 넘어간다.)
  4. app 객체를 모듈로 만든다.

출처: https://velog.io/@new_wisdom/Node.js-6-Express-Express-generator로-프로젝트-만들기

* TOC {:toc}

© 2021. All rights reserved.