我的目标是尝试在节点js服务器的一个实例中拥有多个Node JS“apps”。例如,在传统的PHP托管中,您可以在www目录中放置不同的文件夹,这些文件夹将作为单独的路径。如果我将folder1和folder2作为子目录转到www.example.com/folder1或www.example.com/folder2将是他们自己的应用程序及其自己的index.html和所有内容。
使用Node JS它有点不同,因为您不是调用单个服务器端PHP脚本,而是调用正在运行的主服务器。使用socket.io之类的东西,你可以使用socket('on'...)和socket('emit'...)与服务器通信,而不是调用特定的脚本,而是与服务器通信。
我想尝试模仿Node 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,但它们不是单独的节点应用程序,只是子目录。
这可能吗?你能给我一些实施代码示例吗?
答案 0 :(得分:1)
如果使用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。