Javascript 隔离节点JS";应用程序“;在单个包含服务器中

Javascript 隔离节点JS";应用程序“;在单个包含服务器中,javascript,node.js,server,Javascript,Node.js,Server,我的目标是尝试在NodeJS服务器的一个实例中包含多个NodeJS“应用程序”。例如,在传统的PHP托管中,您可以在www目录中放置不同的文件夹,这些文件夹将充当单独的路由。如果我将folder1和folder2作为子目录,则转到www.example.com/folder1或www.example.com/folder2将是他们自己的应用程序,具有他们自己的index.html和所有内容 对于Node JS,这有点不同,因为您不需要调用单独的服务器端PHP脚本,而是调用正在运行的主服务器。使用

我的目标是尝试在NodeJS服务器的一个实例中包含多个NodeJS“应用程序”。例如,在传统的PHP托管中,您可以在www目录中放置不同的文件夹,这些文件夹将充当单独的路由。如果我将folder1和folder2作为子目录,则转到www.example.com/folder1或www.example.com/folder2将是他们自己的应用程序,具有他们自己的index.html和所有内容

对于Node JS,这有点不同,因为您不需要调用单独的服务器端PHP脚本,而是调用正在运行的主服务器。使用类似socket.io的东西,您可以使用socket('on'…)和socket('emit'…)与服务器通信,而不是调用特定的脚本,而是与服务器通信

我想尝试在NodeJS中模拟PHP功能

这可能是一个示例文件结构:

main
|--sites
   |--site1
   |  |--index.js
   |  |--public
   |--site2
   |  |--index.js
   |  |--public
   |--landing
      |--index.js
      |--public
|--app.js
我可以想象app.js文件将包含所有路由。它将指定“/”是到登录文件夹,“/site1”是到site1文件夹等

然而,我想要的是,这些“应用程序”中的每一个都是孤立的。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。

当你说App时,你指的是express吗。如果是这样,您只需在路由上创建另一个express应用程序,并将其连接到路由。您可以通过在节点应用程序前面放置一个代理来实现这一点,然后代理可以根据主机名或标头等将流量发送到正确的主机/端口。@Keith您能详细说明一下吗?类似这样:
app.use('/firstsite',require('/sites/firstsite'))
?这些文件夹中的index.js文件是作为该应用程序的独立服务器,还是仍在尝试与app.js通信?你能用一些示例代码回答吗?太棒了!看来这会实现我想要的。谢谢:)