多页Node.js服务器无路由Bloat

Multipage Node.js Server Without Routing Bloat?

本文关键字:路由 Bloat 服务器 Node js 多页      更新时间:2023-09-26

我可以为每个页面设置一个不需要唯一路由的多页Node.js web服务器吗?

我使用Node和Express设置了一个简单的HTTP服务器,使用EJS作为视图引擎。我的路由目前看起来是这样的:

// routing
app.get('/', routes.index);
app.get('/hig', routes.hig);
app.get('/proto', routes.proto);
app.get('/design', routes.design);
app.get('/process', routes.process);
app.get('/demo', routes.demo);
app.get('/api', api.index);
app.get('/api/rules', api.list);
app.get('/api/rules/:id', api.ruleid);

我希望能够轻松地更新我的网站,使其拥有/hig/section1/hig/section2等页面,而无需每次更新路由表并重新启动服务器。更重要的是,我希望能够快速轻松地制作demo的多个版本,并能够链接到它们。

例如,创建一个新的演示并将用户链接到/demo/version23,同时将其他人链接到/demo/version 35,这样我就可以在不破坏以前的演示站点的情况下演示不同的功能。/demo/version108及其后的版本很快就会存在,因此最好有一种合理的方法来创建这些版本,而不需要108+条路由。

到目前为止,我唯一成功的方法就是更新路由表。有没有其他方法可以让我指向路由表中的不同页面,从而更容易地添加新页面?

您应该考虑将ex的url变量的一部分作为/hig/:部分。

然后,您应该将section作为一个参数,您可以使用它来映射到不同的内容、页面或执行您想要的任何其他逻辑。

在我的express api中,我有一个通配符get。端点var解析关键字,然后您决定如何处理它。在我的数据库中,我有一些if语句来更改数据库模型等,但你不需要。。。我建议保持404发送,所以如果有人点击了不想要的url,你可以给他们任何状态码。

app.get('/:endpoint', function (req, res) {
    var endpoint = req.params.endpoint;
    if( endpoint == 'something' ){

    } else if( endpoint == 'something' ){

    } else { return res.send(404, { erorr: "That resource doesn't exist" }); }

    // Display the results
});

我实现了一个简单的演示项目来实现多应用程序结构。

https://github.com/hitokun-s/node-express-multiapp-demo

有了这种结构,您可以轻松地独立设置和维护每个应用程序
我希望这对你有帮助。