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

时间:2013-08-27 09:41:20

标签: ruby-on-rails node.js compoundjs

我几年来一直在使用nodeJS + expressJS为我们的组织开发自定义应用程序平台。我们的中心框架为其下的任何已安装的模块/应用程序提供了一组通用服务(身份验证,语言,管理等)。

我想用compoundJS切换我们的框架。但是我不熟悉它(以及一般的Rails应用程序)所施加的设计限制,似乎无法弄清楚如何完成我所追求的目标。

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

  • 我还希望将每个应用程序分开:最好 在单独的站点/应用程序/目录下。每一个 可以使用compoundJS正常设计应用程序。我想安装它们像:

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

    然后这将包含来自/ hr,/ finance,/ payroll的所有路线。

我如何做到这一点?

有没有办法让compoundJS搜索模型/控制器/视图的非标准/ applications / *文件夹并在保持中心/站点配置的同时加载它们?

或者有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

对于迟到的回答感到抱歉,但我需要类似的东西:我需要在门户网站中整理工具应用程序。

我找到了一种方法,可以将父应用程序中的子应用程序作为节点模块包含在内。我写了一个如何操作的指南,并发送了一个拉取请求,将其添加到CompoundJS' guides的高级文件夹中。它也可用here。它需要一些工作,但它适用于我们的4个应用程序。

希望它可以提供帮助。

答案 1 :(得分:1)

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

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

当您访问/ subroot / any-path时,它将由您的子应用程序的/ anypath路由处理。请注意,您不需要对路径助手进行任何额外的工作,因为它们将自动以'/ subroot'开头(在复合方面处理)。

答案 2 :(得分:0)

这是一个好点,但我们还没有看到任何实现。也许多年后会有一些。

在实例前面使用代理层将是一种通用方法,通常使用Nginx,Vanish Cache等。对于前沿技术人员,我听说Phusion Passengerimplemented Node.js support,但我还没有成功测试过。如果您熟悉Ruby,那将是一次不错的尝试。

如果你真的想要构建一个包含许多模块的大项目,你可以为Architect项目试用一些工业化框架,例如Cloud9 IDE

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