[Node.js] Express 서버 만들기 1 - 설치 및 구조

jungeundelilahLEE·2021년 2월 8일
0

Node.js

목록 보기
23/27

GOAL

  • Express 프레임워크를 이용해서 서버 만들기 - basic

Express

정의

  • 서버 제작시, 불편함은 줄이고 편리성은 극대화한 hot한 웹 서버 프레임워크

설치

  • npm install express

  • 빠르게 설치하기
    : npm install express-generator -g
    - 명령의 옵션들 보기
    : express -h
    - [새 프로젝트 이름]을 가진 express 앱 생성하기
    : express [새 프로젝트 이름] --view=pug or express --view=pug [새 프로젝트 이름]
    - 이후 cd [새 프로젝트 이름]으로 들어가서, npm i로 필요한 모듈들을 설치한다.

  • 앱 실행하기(리눅스/맥)
    : DEBUG=myapp:* npm start
    - 앱 실행하기(윈도우)
    : set DEBUG=myapp:* & npm start

  • 이후 브라우저에서 http://localhost:3000/ 을 로드하여 앱에 액세스 (기본 3000)

  • 기본 디렉토리 구조 : (아래 참고)


구조


  • bin/www : http 모듈에 express 모듈을 연결하고, 포트를 지정
var app = require('../app'); // app.js 를 가져옴
var debug = require('debug')('express01:server'); // 디버그할 수 있도록 콘솔에 로그를 남김
var http = require('http'); // http 모듈
var port = normalizePort(process.env.PORT || '3000');
// process.env 객체에 PORT 속성이 있으면, 그 값을 사용한다. 없으면 3000포트를 사용한다.
app.set('port', port); 
// app.set(키, 값)을 사용해서 데이터를 저장할 수 있음 
// set 메소드를 이용해서 서버가 실행될 포트를 지정함
var server = http.createServer(app);
// http.createServer로 불러온 app 모듈을 넣어줌
// app 모듈이 createServer 메소드의 콜백함수 역할을 함
// http모듈로 만드는 점과 가장 다른점은 app 모듈을 사용한 콜백함수 부분을 다르게 만든 것!
server.listen(port);
// listen 부분은 http모듈과 같음
server.on('error', onError);
server.on('listening', onListening);
  • app.js : app 모듈
// 기본으로 넣어주는 모듈들
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
// 과 routes의 파일들 불러오기
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();
// var express = require('express'); 
// 이 부분의 express 패키지를 호출해서, app 객체를 만듦
// app 객체에 use 메소드를 사용해서 각종 기능들을 연결한다
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
// set 메소드로 express 앱을 설정한다
app.use(logger('dev'));
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);

// 404 에러처리 미들웨어 - 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');
});
// use 메소드로 미들웨어들을 연결한다.
module.exports = app;
// 지금까지 만든 app객체를 모듈로 만든다 
profile
delilah's journey

0개의 댓글