1. Как перейти на страницу используя контроллер?
2. Как сделать переход для двух вариантов:
Вариант-1
Index
- Page1
Вариант-2
Index
- Page1
- - Page11
Т.е.
перехожу с Index на Page1;
перехожу с Page1 на Page11;
В данном проекте about
рассматривать как Page1
Я выполнил:
const fs = require('fs');
const express = require("express");
const router = express.Router();
// const homeController = require('../controllers/home.controller');
const aboutController = require('../controllers/about.controller');
router.get('/about', aboutController.getAboutPage);
module.exports = router;
создал about.controller.js
const fs = require('fs');
exports.getAboutPage = (req, res) => {
console.log(`Controller page: getAboutPage`);
return res.render('about.ejs');
};
index.ejs
<h1>Index page</h1>
<a href="/about" >Go to page `About`. Test-1</a> </br>
<a href="http://localhost:2000/about/" >Go to page `About`. Test-2</a> </br>
<a href="/about/getAboutPage" >Go to page `About`. Test-3</a> </br>
Выполнение.
перехожу по ссылке http://localhost:2000/about
;
результат: 404;
Для изучения я использовал проект:
Ссылка на архив с проектом: - fl.zip — Яндекс.Диск
dmitry
11.Август.2022 12:02:59
2
У меня есть подозрение что дело в “висячем” символе /
в пути. Попробуй поменять <a href="http://localhost:2000/about/" >
на <a href="http://localhost:2000/about" >
. С перспективы (во всяком случе старого express) router.get('/about', aboutController.getAboutPage);
не тоже самое что и router.get('/about/', aboutController.getAboutPage);
1 лайк
Удалил /
.
Проблема осталась…
Ссылка на архив с проектом - fl.zip — Яндекс.Диск
index.ejs
<h1>Index page</h1>
<a href="/about" >Go to page `About`. Test-1</a> </br>
<a href="http://localhost:2000/about" >Go to page `About`. Test-2</a> </br>
<a href="/about/getAboutPage" >Go to page `About`. Test-3</a> </br>
Live321:
Вариант-1
Index
Решил…
Остался Вариант-2 .
Вариант-1. Решение.
app.js
// .... Произвольный код
const aboutRoutes = require('./routes/about.routes');
// .... Произвольный код
// routes for the app
app.use('/', homeRoutes);
app.use('/player', playerRoutes);
app.use('/about', aboutRoutes);
app.get('*', function(req, res, next){
res.status(404);
res.render('404.ejs', {
title: "Page Not Found",
});
})
// .... Произвольный код
about.routes.js
const fs = require('fs');
const express = require("express");
const router = express.Router();
const aboutController = require('../controllers/about.controller');
router.get('/', aboutController.getAboutPage);
module.exports = router;
about.controller.js
const fs = require('fs');
exports.getAboutPage = (req, res) => {
console.log(`Controller "about.controller" method: getAboutPage`);
return res.render('about.ejs');
};
index.ejs
<h1>Index page</h1>
<a href="about" >Go to page `About`. Test-1</a> </br>
<a href="http://localhost:2000/about" >Go to page `About`. Test-2</a> </br>
dmitry
12.Август.2022 07:27:03
5
Посмотрел на код.
Обрати внимание на app.use('/about', aboutRoutes);
и то как aboutRoutes
определены. Они определены как router.get('/about', aboutController.getAboutPage);
. express интерпретирует эту контрукцию как “для всех путей /about
используй подпути описанные в aboutRoutes
”. Иными словами этот код описывает пути типа /about/***
. Если ты откроешь браузер на http://localhost:2000/about/about то увидишь контент.
dmitry
12.Август.2022 07:27:58
6
Я не понял про варианты. Для меня главное понять у тебя остались вопросы?