Как создать систему управления страницами в NodeJS & ExpressJS? - PullRequest
0 голосов
/ 18 декабря 2018

Я совершенно новичок в node- и expressJS.Я пытался настроить веб-сайт, используя node и expressjs.Создание сервера было явно не ракетостроением, поэтому это было сделано, но в настоящее время я пытаюсь понять, как можно достичь контроллера страницы, как я это делал бы в PHP.

(в PHP), обычно я создаюпапка, которая содержит все страницы, которые должны отображаться в основном контейнере, когда эта конкретная страница запрашивается параметром /?page=, изменяются две разные переменные, title и page.

<?php
    require('connect.php');

    $pages = array(
        "home" => array("title" => "Home", "fontIcon" => "fas fa-home"),
        "accounts" => array("title" => "Accounts", "fontIcon" => "fas fa-key"),
        "players" => array("title" => "Players", "fontIcon" => "fas fa-users"),
        "posts" => array("title" => "Posts", "fontIcon" => "fas fa-newspaper"),
        "polls" => array("title" => "Polls", "fontIcon" => "fas fa-poll"),
        "shop" => array("title" => "Shop Items", "fontIcon" => "fas fa-shopping-cart"),
        "bans" => array("title" => "Banishments", "fontIcon" => "fas fa-user-slash")
    );

    // Check if (/?p=) parameter is set
    if(!isset($_REQUEST['p'])){
        $page = "home";
        $title = $pages["home"];
    } else {

        // See if requested page exists
        if(array_key_exists($_REQUEST['p'], $pages)){

            // iterate over pages array
            foreach ($pages as $p => $t) {

                // set page and title
                if($_REQUEST['p'] === $p){
                    $page = $p;
                    $title = $t;
                }
            }

        // use default page & title if requested page doesnt exist in array
        } else {
            $page = "home";
            $title = $pages["home"];
        }
    }

    // set path for requested page
    $page = "pages/".$page.".php";

?>

Однако в руководствах по expressJS я не смог найти такой код, чтобы выполнить то, что я описал выше.Авторы показывают только простые примеры, такие как приведенный ниже код, который, кажется, не является эффективным способом управления страницами.

app.get('/', function(req, res){
    // ... bla bla
});

app.get('/contact', function(req, res){
    // ... bla bla
});

app.get('/about', function(req, res){
    // ... bla bla
});

Так что в основном я пытаюсь достичь чего-то вроде следующегоструктура в node & expressJS:

Главная страница, на которой будет реализован контроллер страниц, и отображаемые страницы будут храниться в отдельном каталоге, где каждая страница будет иметь уникальный доступ по запросу URL.

_NodeExressAPP_
|
|__ pages/__page__.ejs
|
|__ backend/__page__.js
|
|__ views / index.ejs (main page)
|
|__ pageController.js
|
|_ server.js (include pageController)

Кажется, что express / node не позволяет мне объединять файлы, как это делает php, и поэтому я думаю, что каждый вынужден создавать отдельные, отдельные HTML-документы для каждого представления ... и это то, что беспокоит меня больше всего.Я не хочу создавать весь HTML-документ заново или копировать и вставлять его в новый файл, чтобы иметь другое представление.Я хочу объединить запрошенную страницу в index.ejs (корневой файл)

1 Ответ

0 голосов
/ 18 декабря 2018

Что я понимаю, в основном вы пытаетесь настроить систему маршрутизации в узле и экспрессе.Express предоставляет очень эффективную систему маршрутизации.Маршруты могут управляться несколькими способами в экспрессе.Я напишу небольшой пример, он может помочь вам начать.Кроме того, вы можете использовать экспресс-генератор, который немедленно создает базовый проект для создателя.

    //Server.js file
    const express = require('express');
    let app = express();

    // Define a separate file for your route 
    // Define a folder , the folder may contain files for various concerns 
    let router = require('./controller/location_routes');

    // The application have access to all the routes defined in locatin_routes.js file
    app.use(router);


    app.listen(3000,()=> {
    console.log('listening on port 3000');
    });


    // Location_routes.js file inside controller folder
    // Create a controller folder in root and add new file named (location_routes.js)
    const express = require('express');

    const router = express.Router();

    router.get('/location', (req, res ,next) => {

    console.log('I am Location route');
    res.send('Get locations');
    });


    router.post('/location', (req, res ,next) => {

    console.log('I am Add location route');
    res.send('Location Added');
   });

   module.exports = router;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...