我几年来一直在使用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 / *文件夹并在保持中心/站点配置的同时加载它们?
或者有更好的方法吗?
答案 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 Passenger有implemented Node.js support,但我还没有成功测试过。如果您熟悉Ruby,那将是一次不错的尝试。
如果你真的想要构建一个包含许多模块的大项目,你可以为Architect项目试用一些工业化框架,例如Cloud9 IDE。
对于身份验证,我认为有必要在每个应用程序中使用独立的方法,但它们可以与一个用户数据库共享。