본문 바로가기
Express

[Express] 핵심 주요 메서드와 속성 정리

by 개발지망생 2023. 2. 3.

익스프레스 공식 사이트 시작 예제에 들어가면 다음과 같은 예제가 있다

 

Express "Hello World" example

Hello world example Embedded below is essentially the simplest Express app you can create. It is a single file app — not what you’d get if you use the Express generator, which creates the scaffolding for a full app with numerous JavaScript files, Jade

expressjs.com

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
 console.log(`Example app listening at http://localhost:${port}`)
})

 

위 예제를 가지고 하나씩 정리해 보자.

npm install express를 하여 express가 존재한다는 가정하에 require라는 속성을 통해 호출 할 수 있다.

그리하여 app이라는 변수에 express() 서버 객체를 선언하여  메챠쿠챠 유린하면 된다고 한다.

 

그다음은 예제에서 나오는 get과 listen 외에 자주 쓰이는 메서드 몇개를 정리하려 한다.

정리할 목록은 다음과 같다.

 

📌 메서드 종류 및 설명

메서드 종류 설명
1. set(name, value) 서버 설정을 위한 속성을 name에 변수를 value에 값을 넣어 지정해준다. set()메소드로 지정한 속성은 get() 메소드를 통해 확인할 수 있다.
2. get(name) set에 설정해줬던 name값을 get(name)에 넣으면 set에 지정했던 value값을 가져온다.
3. use([path], callback) Express 앱에서 항상 실행하는 미들웨어 역할. [path]에 url을 따로 지정해 주지 않으면 url에 상관없이 매번 동작한다.
4. get([path], callback) [path] 경로에 요청된 정보를 처리한다. (use 메서드와 다르게 [path]에 반드시 url 경로가 들어가야 한다.)
5. listen(port, callback) port에는 서버를 오픈할 포트번호, callback에는 서버 오픈시 실행할 코드를 넣는다.

1~2. set, get 예시코드

app.set('title', 'myValue');
app.get('title'); // myValue

 

3. use 예시코드

app.use((req, res, next) => {
    console.log('모든 요청 실행해줌!.');
    /* 
        next라는 세 번째 매개변수는 다음 미들웨어로 넘어가는 함수이며, 
        실행하지 않으면 다음 미들웨어 실행이 안됨.
    */
    next(); 
})

 

4. get 경로 요청 예시코드

app.get('/', (req, res) => {
  res.send('Hello World!')
})

 

5. listen 예시코드

app.listen(port, () => {
 console.log(`Example app listening at http://localhost:${port}`)
})

 

🥾 한걸음 더 - set메서드 관련 추가 옵션

위에 예시를 든 것처럼 set은 변수처럼 임의의 key값과 value값을 가진 친구다. 하지만 서버 설정을 위해 미리 정해진 주요 속성 이름 또한 존재한다. 그 속성들을 알아보자.

속성 설명
1. port 포트 번호 지정.
2. views 뷰들이 들어 있는 폴더 또는 폴더 배열 설정.
3. view engine 기본으로 사용할 뷰 엔진을 설정.

1. port 예시코드

app.set('port', 3000);

app.listen(app.get('port'), () => {
  console.log(app.get('port'), '번 포트에서 대기 중');
});

 

2. views 예시코드

// __dirname : 현재실행중인 폴더 경로를 뜻함.
app.set("views", __dirname + "/viewer");

/*
views에 경로를 넣으면 get으로 렌더할때,
__dirname + "/viewer" 경로에 있는 보이고 싶은 파일명(예시 코드는 "home") render에 적으면 됨.
*/
 app.get("/", (req, res) => res.render("home"));

 

3. view engine 예시코드

// pug, ejs가 많이 사용됨
app.set("view engine", "pug");

 

🚶‍♂️ 이 글을 쓰게 된 이유

set메서드의 views 속성 때문이다. 왜냐하면 views가 속성인지 몰랐다... 그래서 위의 예시코드에서 set에 views가 아닌 다른 이름의 key값을 넣었을 때 home이 렌더가 안되길래 너무 궁금하여 이것저것 찾아보다 알게 된 것들을 정리해보았다.

댓글