and __filename
보통 .js .css .html 값의 변화를 직접입력하지않는이상 변화하지 않는파일
익스프레스에서 static한 파일에 접근하기 위해
app.use(express.static(__dirname + "/public")) 같은 미들웨어를 사용해서
/public폴더를 설정하고 그안에서 연결시켜주면 된다
반대로 filename은 절대 파일경로이다
const express = require("express");
const expressHandlebars = require("express-handlebars");
const port = process.env.PORT || 3000;
const app = express();
app.use(express.static(__dirname + "/public")); //__dirname 폴더경로
app.engine(
"handlebars",
expressHandlebars({
defaultLayout: "main",
})
);
app.set("view engine", "handlebars");
app.get("/", (req, res) => res.render("home"));
const fortunes = [
"Conquer your fears or they will conquer you.",
"Rivers need springs.",
"Do not fear what you don't know.",
"You will have a pleasant surprise.",
"Whenever possible, keep it simple.",
];
app.get("/about", (req, res) => {
const randomFortune = fortunes[Math.floor(Math.random() * fortunes.length)];
res.render("about", { fortune: randomFortune });
});
// custom 404 page
app.use((req, res) => {
res.status(404);
res.render("404");
});
// custom 500 page
app.use((err, req, res, next) => {
console.error(err.message);
res.status(500);
res.render("500");
});
app.listen(port, () =>
console.log(
`Express started on http://localhost:${port}; ` +
`press Ctrl-C to terminate.`
)
);
handlebars로 포츈쿠기설정이 재미있었다 랜덤으로 표시되는게 인상적