• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

app.js 내부의 명령어들은 어떤 신호를 언제 받아서 어떻게 콜 되나요?

18.10.07 11:19 작성 조회수 97

0

안녕하세요. 좋은 강의 잘 듣고 있습니다. app.js가 총괄하는 우주선의 조종실 이라는 설명도 비유가 적절한 것 같습니다.

그러나, 갑자기 궁금한 점이 생겼는데, app.js의 내용들을 보면 대체로

app.use 같은 미들웨어들을 끼워 맞춰 놓은 형식입니다.

근데 본문을 보면

app.use('/', indexRouter); 이런식인데, 이말은 결국 프로그램 실행시 모든

app.use()같은 친구들을 전부 한번 실행하란 말 아닌가요? 그리고 그 이후에는??

evantListener, ajax 명령어 같은 게 있어야, 언제 어느 미들웨어들을 실행하는지를 정할 수 있을 텐데 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 commentsRouter = require('./routes/comments')

var {sequelize} = require('./models')

var app = express();

sequelize.sync();

// view engine setup

app.set('views', path.join(__dirname, 'views'));

app.set('view engine', 'pug');

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);

app.use('/comments', commentsRouter);

// 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;

답변 2

·

답변을 작성해보세요.

0

ryu sin님의 프로필

ryu sin

질문자

2018.10.08

그렇군요. 주말에도 답변 달아주셔서 감사합니다 : )

0

app.js는 서버를 실행할 때 처음 1회만 실행됩니다. 메모리에 저 app.use같은 것들이 기억되고 있다가, 요청이 들어오면 그 때 미들웨어를 실행할 지 익스프레스가 결정합니다. 이벤트 리스너(http.createServer)도 익스프레스 안에 들어 있습니다.