[Express] 라우터 - 파일로 분리
기초/Node.js2021. 7. 17. 20:22
소프트웨어가 커짐에 따라 그 복잡도를 잘 정리정돈/관리하지 않으면 소프트웨어의 확장에 한계가 있다.
https://expressjs.com/ko/guide/routing.html
넘 어렵다...
const express = require("express");
const app = express();
const port = 3000;
var fs = require("fs");
var template = require("./lib/template.js");
var path = require("path");
var sanitizeHtml = require("sanitize-html");
var qs = require("querystring");
var bodyParser = require("body-parser");
var compression = require("compression");
var topicRouter = require("./routes/topic");
app.use(express.static("public"));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(compression());
app.use(function (request, response, next) {
fs.readdir("./data", function (error, filelist) {
request.list = filelist;
next(); // next라는 변수에는 그 다음에 호출되어야 할 미들웨어가 담겨 있다.
});
});
app.use("/topic", topicRouter);
app.get("/", function (request, response) {
var title = "Welcome";
var description = "Hello, Node.js";
var list = template.list(request.list);
var html = template.HTML(
title,
list,
`<h2>${title}</h2>${description}
<img src="/images/doodoo.jpeg" style="width:100px; display:block; margin-top:10px"
`,
`<a href="/topic/create">create</a>`
);
response.send(html);
});
app.use(function (req, res, next) {
res.status(404).send("사이트를 찾을 수 없습니닷!");
});
이렇게 길었던 코드를!
아래의 두 코드로 각각 분리할 수 있다.
//main.js
const express = require("express");
const app = express();
const port = 3000;
var fs = require("fs");
var bodyParser = require("body-parser");
var compression = require("compression");
var indexRouter = require("./routes/index")
var topicRouter = require("./routes/topic");
/*app.get("/", (req, res) => {
res.send("/");
});*/
app.use(express.static("public"));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(compression());
app.use(function (request, response, next) {
fs.readdir("./data", function (error, filelist) {
request.list = filelist;
next(); // next라는 변수에는 그 다음에 호출되어야 할 미들웨어가 담겨 있다.
});
});
//topic으로 시작하는 주소들에게 topicRouter라는 미들웨어를 적용하겠다는 뜻.
app.use("/", indexRouter);
app.use("/topic", topicRouter);
//router를 이렇게 지정하면 라우터 내부에서는 path중 topic을 topic.js에 담을 필요가 없다.
//index.js
const express = require("express");
const router = express.Router();
var template = require("../lib/template.js");
router.get("/", function (request, response) {
var title = "Welcome";
var description = "Hello, Node.js";
var list = template.list(request.list);
var html = template.HTML(
title,
list,
`<h2>${title}</h2>${description}
<img src="/images/doodoo.jpeg" style="width:100px; display:block; margin-top:10px"
`,
`<a href="/topic/create">create</a>`
);
response.send(html);
});
module.exports = router;
'기초 > Node.js' 카테고리의 다른 글
[Express] 보안과 express generator (0) | 2021.07.17 |
---|---|
[Express] 에러 처리하기 (0) | 2021.07.17 |
[Express] 미들웨어의 실행순서 (0) | 2021.07.16 |
댓글()