-
Express.js]Navigation을 위한 헬퍼(유틸)함수 사용Node.js 2023. 12. 12. 09:28
기존 코드에서 경로를 나타내기 위해 아래와 같이 코드를 작성했었다.
res.sendFile(path.join(__dirname, "../", "views", "add-product.html"));
이를 아래와 같이 수정한다. 역시 모든 운영체제에서 호환되게 하기 위함이다.
res.sendFile(path.join(__dirname, "..", "views", "add-product.html")); // ../ -> ..
그러나 더 간단하게 url을 표시하는 방법이 있다고 한다.
바로 헬퍼 함수를 사용하는 것이다.
1. util함수 파일 만들기
먼저 폴더를 새로 생성한다.
util 또는 helpers가 일반적으로 많이 쓰인다.
path.js 파일을 생성한다.
// path.js const path = require('path'); //module.exports = path.dirname(process.mainModule.filename); //deprecated. 아직 사용은 가능 module.exports = path.dirname(require.main.filename); //우리 앱이 실행될 수 있도록 해주는 파일의 경로 표시
deprecation warning
deprecated란 '더 이상 사용되지 않음'을 의미한다.
곧 앞으로 사라질 기능이니 더 이상 사용하지 않기를 권하는 것이다.위 함수는 우리 앱이 실행되는 파일(여기서는 app.js)의 경로를 가리킨다.
2. path.js 임포트 및 사용
const rootDir = require("../util/path"); res.sendFile(path.join(rootDir, "views", "add-product.html"));
기존 path 모듈과 이름이 같아서 충돌이 나지 않을까 싶지만
불러오는 방식이 다르므로 별개로 인식한다.
rootDir로 우리 앱이 실행되는 경로를 저장 및 사용할 수 있으니
path.join()에서는 rootDir과 함께 바로 폴더 경로를 사용할 수 있다.
//admin.js const path = require("path"); const express = require("express"); const rootDir = require("../util/path"); const router = express.Router(); // /admin/add-product <- GET router.get("/add-product", (req, res, next) => { //res.sendFile(path.join(__dirname, "../", "views", "add-product.html")); res.sendFile(path.join(rootDir, "views", "add-product.html")); }); // /admin/add-product <- POST router.post("/add-product", (req, res, next) => { console.log(req.body); res.redirect("/"); }); module.exports = router;
같은 방식으로 shop.js도 수정한다.
'Node.js' 카테고리의 다른 글
Express.js] 여러 정보를 한번에 export하는 라우터 만들기 (0) 2023.12.12 Express.js] static 폴더 사용 | 정적으로 파일 서비스 하기 | CSS, JS, 이미지 파일 등 가져오기 (0) 2023.12.12 Express.js] HTML 페이지 서비스하기 (0) 2023.12.11 Express.js] 경로 필터링 (0) 2023.12.11 Express.js] 404 오류 페이지 추가하기 (0) 2023.12.11