익스프레스 공식 사이트 시작 예제에 들어가면 다음과 같은 예제가 있다
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이 렌더가 안되길래 너무 궁금하여 이것저것 찾아보다 알게 된 것들을 정리해보았다.
댓글