프로그래밍 언어/NODE JS

템플릿 엔진 사용하기 - 퍼그(제이드)

· 코딩마이데이

퍼그(제이드)

문법이 간단해서 코드양이 줄어들기 때문입니다.  루비(Ruby)를 사용해봤다면 문법이 비슷해서 빠르게 적응할 수 있으며, 물론 루비를 잘 모르더라도 문법이 쉬워서 빠르게 배울 수 있습니다.

 

퍼그를 설치합니다.

 

$ npm i pug

 

익스프레스와 연결하려면 app.js에 다음과 같이 작성되어야 합니다.

const express = require("express");
const morgan = require("morgan");
const cookieParser = require("cookie-parser");
const session = require("express-session");
const dotenv = require("dotenv");
const path = require("path");

dotenv.config();
const indexRouter = require("./routes");
const userRouter = require("./routes/user");
const app = express();
app.set("port", process.env.PORT || 3000);
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "pug");

app.use(morgan("dev"));
app.use("/", express.static(path.join(__dirname, "public")));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use(
  session({
    resave: false,
    saveUninitialized: false,
    secret: process.env.COOKIE_SECRET,
    cookie: {
      httpOnly: true,
      secure: false,
    },
    name: "session-cookie",
  })
);

app.use("/", indexRouter);
app.use("/user", userRouter);

app.use((req, res, next) => {
  console.log("모든 요청에 다 실행됩니다.");
  next();
});
app.get(
  "/",
  (req, res, next) => {
    console.log("GET / 요청에서만 실행됩니다.");
    next();
  },
  (req, res) => {
    throw new Error("에러는 에러 처리 미들웨어로 갑니다.");
  }
);

app.use((req, res, next) => {
  res.status(404).send("Not Found");
});

app.use((err, req, res, next) => {
  console.error(err);
  res.status(500).send(err.message);
});

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

 

views는 템플릿 파일들이 위치한 폴더를 지정하는 것입니다. res.render 메서드가 이 폴더 기준으로 템플릿 엔진을 찾아서 렌더링합니다. res.render('index')라면 views/index.pug를 렌더링합니다. res.render('admin/main')이라면 views/admin/main.pug를 렌더링합니다.

view engine은 어떠한 종류의 템플릿 엔진을 사용할지를 나타냅니다. 현재 pug로 설정되어 있으므로 그대로 사용하면 됩니다.

'프로그래밍 언어 > NODE JS' 카테고리의 다른 글

퍼그 - 변수  (3) 2025.07.14
퍼그 - HTML 표현  (1) 2025.07.11
req, res 객체 살펴보기  (1) 2025.07.06
Router 객체로 라우팅 분리하기  (2) 2025.07.03
multer  (0) 2025.06.30