如何在一个compoundJS实例下运行多个“应用程序”?

多年来,我一直在使用nodeJS + expressJS为我们的组织开发定制的应用程序平台。 我们的中央框架为任何已安装的模块/应用程序提供了一套通用的服务(authentication,语言,pipe理等)。

我想用compoundJS来切换我们的框架。 不过,我不熟悉它(和Rails应用程序)强加的devise约束,似乎无法弄清楚如何完成我所追求的。

  • 我想只有一个服务器实例运行:通过我们的通用身份validation检查所有请求的第一个进程。 然后传递给应用程序的控制器。

  • 我也想分开每个应用程序:最好在一个单独的网站/应用程序/目录下。 这些应用程序中的每一个都可以使用compoundJS来devise。 我想安装它们,如:

    cd site/applications npm install site-hr npm install site-finance npm install site-payroll 

    这将有所有从/ hr,/ finance,/ payroll运作的路线。

我如何做到这一点?

有没有办法让compoundJSsearch模型/控制器/视图的非标准/应用程序/ *文件夹,并加载它们,同时保持中央/网站configuration?

或者,还有更好的方法?

对不起,我迟迟没有回答,但是我需要类似的东西:我需要将工具应用程序放在一个门户中。

我find了一种将子应用程序作为节点模块包含在父应用程序中的方法。 我写了一个关于如何做的指南,并发送了一个pull请求,将它添加到CompoundJS的指南的高级文件夹中。 这也可以在这里find 。 它需要一些工作,但它适用于我们的4个应用程序。

希望它可以帮助。

这很简单。 只需在config / environment.js中使用app.use来映射您的子应用程序:

 var mod = require('your-compound-module'); app.use('/subroot', mod()); 

当你访问/ subroot /任何path,那么它将由你的子应用程序/任何path处理。 注意,你不需要在path助手上做任何额外的工作,因为他们将以“/ subroot”自动开始(在复合端处理)。

这是一个好点,但我们还没有看到任何实施。 可能几年后会有一些。

在实例前面使用代理层将是一个通用的方法,通常有Nginx,Vanish Cache等。对于stream血尖端的技术人员,我听说Phusion Passenger已经实现了Node.js的支持 ,但是我还没有成功testing过。 如果你熟悉Ruby,这将是一个很好的尝试。

如果你真的想要构build一个包含很多模块的大项目,你可以尝试一些工业化的框架,比如Architect for Cloud9 IDE项目。

对于身份validation,我认为有必要在每个应用程序中使用独立的方法,但可以与一个用户数据库共享。