Как перейти на страницу используя контроллер?

1. Как перейти на страницу используя контроллер?

2. Как сделать переход для двух вариантов:
Вариант-1
Index
- Page1

Вариант-2
Index
- Page1
- - Page11

Т.е.

  • перехожу с Index на Page1;
  • перехожу с Page1 на Page11;

В данном проекте about рассматривать как Page1


Я выполнил:

  • скорректировал app.js
    Добавил: app.use(‘/about’, aboutRoutes);

  • создал about.routes.js

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 — Яндекс.Диск

У меня есть подозрение что дело в “висячем” символе / в пути. Попробуй поменять <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>

Решил…
Остался Вариант-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>

Посмотрел на код.

Обрати внимание на app.use('/about', aboutRoutes); и то как aboutRoutes определены. Они определены как router.get('/about', aboutController.getAboutPage);. express интерпретирует эту контрукцию как “для всех путей /about используй подпути описанные в aboutRoutes”. Иными словами этот код описывает пути типа /about/***. Если ты откроешь браузер на http://localhost:2000/about/about то увидишь контент.

Я не понял про варианты. Для меня главное понять у тебя остались вопросы?