보통 routes 폴더 안에 여러 route 파일들을 두는 구조를 이용
//위치: routes/user.js
const express = require('express');
const router = express.Router();
//GET / 라우터
router.get('/', (req, res) => {
//GET /user/
res.send('hello user');
});
module.exports = router;
// app.js
const indexRouter = require('./routes');
const userRouter = require('./routes/user');
app.use('/', indexRouter);
app.use('/user', userRouter);
req는 클라이언트가 서버로 보낸 HTTP 요청에 대한 정보를 담고 있음
res는 서버가 클라이언트에게 응답을 보낼 때 사용하는 객체
템플릿 엔진: HTML의 단점을 개선
Pug
<div class="jade"></div> => .jade로 표현!보통 views 폴더 안에 pug 파일들을 위치시킴
npm i pug: 설치
코드 예제
//app.js -> pug 템플릿 설정해줘야함
app.set('views', path.join(__dirname, 'views')); // 템플릿 파일 위치
app.set('view engine', 'pug'); // Pug를 템플릿 엔진으로 설정
//views/layout.pug
doctype html
html
head
title= title
link(rel='stylesheet', href='/style.css')
body
block content
//views/index.pug
extends layout
block content
h1= title
p Welcome to #{title}
//views/error.pug
extends layout
block content
h1= message
h2= error.status
pre #{error.stack}
pug 가 익숙해지지 않으면 nonjucks!
확장자는 html로 함
코드예제
//app.js
const nunjucks = require('nunjucks');
app.set('view engine', 'html');
nunjucks.configure('views', {
express: app,
watch: true,
});
//views/layout.html
<!DOCTYPE html>
<html>
<head>
<title>{{title}}</title>
<link rel="stylesheet" href="/style.css" />
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
//views/error.html
{% extends 'layout.html' %}
<h1><%= message %></h1>
<h2><%= error.status %></h2>
<pre><%= error.stack %></pre>
//views/index.html
{% extends 'layout.html' %}
{% block content %}
<h1>{{title}}</h1>
<p>Welcome to {{title}}</p>
{% endblock %}