2

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

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

  • 我希望只运行一个服务器实例:所有请求首先通过我们共同的身份验证检查进行处理。然后传递给应用程序的控制器。

  • 我还希望将每个应用程序分开:最好在单独的 site/applications/ 目录下。这些应用程序中的每一个都可以正常使用 CompoundJS 来设计。我想像这样安装它们:

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

    这将使来自 /hr、/finance、/payroll 的所有路由运行。

我该如何做到这一点?

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

或者,还有更好的方法?

4

3 回答 3

1

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

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

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

于 2013-11-22T15:37:42.490 回答
1

很抱歉回答迟了,但我需要类似的东西:我需要将工具应用程序放在一个门户中。

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

希望它可以提供帮助。

于 2013-11-18T22:34:27.143 回答
0

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

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

如果你真的想构建一个有很多模块的大项目,你可以尝试一些工业化的框架,例如Cloud9 IDE项目的Architect 。

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

于 2013-08-27T18:30:32.067 回答