node.js - 如何在 NodeJS & ExpressJS 中实现页面控制系统?
问题描述
我对 node- 和 expressJS 完全陌生。我一直在尝试使用node
and设置网站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 (根文件)中
解决方案
据我了解,基本上您是在尝试在 node 和 express 中设置路由系统。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;