Javascript 隔离节点JS";应用程序“;在单个包含服务器中
我的目标是尝试在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功能 这可能是一个示例文件结构: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脚本,而是调用正在运行的主服务器。使用
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通信?你能用一些示例代码回答吗?太棒了!看来这会实现我想要的。谢谢:)