将节点 JS "apps"隔离在单个包含服务器中



我的目标是尝试在节点JS服务器的一个实例中拥有多个节点JS"应用程序"。例如,在传统的PHP托管中,您可以将不同的文件夹放在www目录中,这些文件夹将充当单独的路由。如果我有folder1和folder2作为子目录,请访问www.example.com/folder1或www.example.com/folder2将是他们自己的index.html和所有内容的应用程序。

使用节点JS有点不同,因为您没有调用单个服务器端PHP脚本,而是对正在运行的主服务器进行呼叫。使用socket.io之类的东西,您可以执行插座('on'...)和套接字('emit'...)与服务器通信,而不是调用特定脚本,而是与服务器通信。

我想尝试模仿节点JS

中的PHP功能

这可能是示例文件结构:

main
|--sites
   |--site1
   |  |--index.js
   |  |--public
   |--site2
   |  |--index.js
   |  |--public
   |--landing
      |--index.js
      |--public
|--app.js

我会想象app.js文件中会有所有路由。它将指定"/"是登陆文件夹,"/site1"是site1文件夹等。

我想要的是,这些"应用程序"都隔离了。index.js将是与该应用程序隔离的服务器。该应用程序中的路由和所有内容都将再次完成,好像是一个新的app.js,但它们不是单独的节点应用,而只是子目录。

这可能吗?您可以给我一些实施示例代码吗?

如果使用Express,则可以创建Express的多个实例。然后只需将它们连接到您的主路由器。

例如

可以说您有/app1/app.js

const express = require('express');
const app = new express();
app.get('/xyz'); //etc..
module.exports = app;

说另一个/app2/app.js,基本上具有相同的..

然后,您可以创建主入口点,以具有 ->

之类的东西
const app = new express();
app.use('/app1', require('./app1/app'));
app.use('/app2', require('./app2/app'));

在上面的任何请求/app1/*的任何请求中都将转到App1,/app2/*转到App2。

最新更新