-
Notifications
You must be signed in to change notification settings - Fork 10
새로운 페이지 만들기 예시
kyunghan edited this page Jun 2, 2021
·
6 revisions
// app.js
//...
const testRouter = require('./routes/test');
app.use('/test', testRouter);
- /test라우터의 미들웨어를 선언
- 선언한 미들웨어를 사용
// routes/test.js
const express = require('express'):
const router = express.Router();
const testCtrl = require('../controllers/testController');
router.get('/', testCtrl.testprint);
module.exports = router;
- 사용자가 /test에 접속하면 router.get 동작
- testCtrl.testprint와 같이 동작에 필요한 함수들은 컨트롤러에 따로 명시하여 사용
// controllers/testController.js
module.exports = {
testprint: (req, res, next) => {
res.render('test', {title: test};
}
};
- 동작에 필요한 함수들을 모아 놓은 곳
- render를 통해 뷰에게 동작을 전달
// views/test.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= title %></title>
</head>
<body>
test입니다.
</body>
</html>
- 사용자가 직접 접하는 화면
- ejs파일은 html과 js를 같이 사용 가능
- controller에서 넘어온 동작(변수)사용 가능
// routes/test.js
//...
router.get('/example/:whatever', testCtrl.dynamicURLTest);
- 루트(/)가 '/test'로 존재하며 루트뒤에 새로운 경로 추가
-
:
(콜론)이후는 동적 URL이라 불리며 작성된 URL경로는 어떤 이름으로도 사용될 수 있습니다. - 즉 /test/example/1 == /test/example/saver == /test/example/...로 사용될 수 있습니다.
// controllers/testController.js
// controllers/testController.js
module.exports = {
testprint: (req, res, next) => {
res.render('test', { title: 'test111' });
},
dynamicURLTest: (req, res,next) => {
res.render('dynamicTest', { title: 'dynamic111' })
}
};
라우터와 컨트롤러를 연결
이후 dynamicTest페이지를 생성한 후 /test/example/<동적URL>의 주소로 접속하면 dynamic111이 title인 페이지를 볼 수 있다.