我对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(根文件)
答案 0 :(得分:0)
据我了解,基本上,您正在尝试在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;