본문 바로가기
Back-end/node js

EXPRESS Framework 사용시 app 객체 주요 기능 살펴보기

by kkkdh 2022. 9. 30.
728x90

지난번에 정리한 내용에 이어서..

지난번에는 express-generator를 이용해 express framework 기반의 프로젝트 생성을 해보는 단계까지 정리해 봤습니다. 이번에는 프로젝트를 생성했을 때, 가장 핵심이라고 할 수 있는 app.js 파일을 살펴보려 합니다.

 

Node.js 설치 및 express framework 간단하게 써보기

Node.js 설치 우선 아래 node.js 공식 홈페이지로 이동해서 최신 LTS 버전을 다운로드합니다. https://nodejs.org/ko/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodej..

kkkdh.tistory.com


app.js 파일을 살펴보자!!

우선 app.js 파일을 살펴보면 아래와 같이 require라고 작성된 부분과

다음과 같이 use 같은 메서드를 사용하는 부분들이 가장 눈에 띕니다.

Node.js에서는 require method를 사용해서 외부 module을 import 할 수 있고, 첨부한 사진과 같이 local내의 경로를 통해서 직접 작성한 모듈을 가져올 수 있고, 다음과 같이 npm을 이용해 설치한 module을 import 해서 사용할 수 있습니다.

const express = require('express');
const mysql = require('mysql');

 

다음으로 app 객체의 use 메서드가 사용되는 부분은 app 객체에 app.js에서 import한 미들웨어를 등록하여 각각 '/', '/users' 경로에 해당하는 request가 client로부터 들어오는 경우 해당 미들웨어를 실행하도록 등록하는 과정을 의미합니다!

 

간단하게 말하면 첫 번째 인자로 설정한 경로에 대한 요청시 실행할 미들웨어를 등록하기 위해서 app 객체의 use 메서드를 사용하는 개념이라고 정리할 수 있을 것 같습니다.

 

위의 코드를 예시로 설명하면 다음과 같습니다

 

 routes 폴더 내에 있는 joinForm.js 파일에서 export 하는 모듈을 require 메서드를 이용해 import 해오고 join이라는 이름을 붙인다

그 이후에 /join path에 대한 요청이 들어올 때 import한 join module이 실행되도록 미들웨어로 등록한다!

 

use 메서드 이외에도 http methods인 get, post, put, delete에 대한 요청에 대해서만 실행하는 미들웨어를 등록하려면, 각각 이름에 맞는 메서드를 사용하면 되고 또 router 객체를 추가로 이용해서 path 별로 모듈화 하여 요청을 처리하는 다양한 방법이 존재하는데, 이는 다음 글에서 정리해보려 합니다..

또 위에 보면 set이라는 메서드를 활용하는 부분도 눈에 띄는데, 이는 웹 서버의 환경 설정을 할 때 사용하는 메서드로 name과 value 쌍으로 인자를 지정합니다.

// 이런 느낌입니다.
app.set(name, value);

위의 그림은 views 환경 변수를 MVC pattern 중에서 View 역할을 할 파일들이 저장된 현재 디렉토리/views 경로로 설정하는 것이고, 두 번째 app.set은 view engine을 ejs로 설정한 것입니다.

app.set('view engine', 'ejs'); // ejs로 template engine 설정
app.set('view engine', 'pug'); // pug로 template engine 설정

이렇게 pugview engine을 설정하고 싶으면, value에 들어갈 값을 바꿔주면 되겠죠?

 

뿐만 아니라 portname으로 설정하여 value웹 서버가 열리길 바라는 포트 번호를 지정하는 등 다양한 환경 변수 값을 설정할 수 있습니다.

 

저도 이제 nodejsexpress 공부를 시작하는 만큼 정리할수록 많이 알아가는 것 같습니다! 앞으로도 조금씩 공부한 내용을 정리해 보도록 하겠습니다 😀👍🏼😀👍🏼

728x90

댓글