表达js多app中间件

时间:2014-11-19 22:00:30

标签: node.js express

我有一个简单的网站,有两个独立的应用程序(在同一个网站,不同的路线上),比如简介应用程序和产品应用程序。我可以让它们成为路由,但我想将它们保存在与应用程序类似的单独目录结构中。我想知道使用一个global.app或为每个应用程序创建单独的应用程序是一种好习惯吗?

此外,如果我要使用单独的应用程序,我如何在多个应用程序之间拥有通用中间件?

2 个答案:

答案 0 :(得分:2)

我相信你在expressjs中尝试做的是设置虚拟主机?它创建了可以在主应用程序中使用的快速和中间件的实例。

这是Github

以下是Expressjs vhost

的示例
var express = require('express');
var vhost = require('vhost');

/*
edit /etc/hosts:
127.0.0.1       foo.example.com
127.0.0.1       bar.example.com
127.0.0.1       example.com
*/

// Main server app

var main = express();

// Vhost app

var app = module.exports = express();

app.use(vhost('*.example.com', redirect)); // Serves all subdomains via Redirect app
app.use(vhost('example.com', main)); // Serves top level domain via Main server app

/* istanbul ignore next */
if (!module.parent) {
  app.listen(3000);
  console.log('Express started on port 3000');
}

还有其他几个包。该网站here详细介绍了如何进行设置。

答案 1 :(得分:0)

如果你有两个独立的应用程序,我的建议是有两个独立的后端。这是因为有一天,您可能希望将一个服务器移动到另一个服务器或单独升级,等等。将代码与开始分开,只是将应用程序的实际情况正式化。

至于在两个应用程序之间重用中间件,我会说不要这样做。如果您要重用的两个应用程序之间具有类似的代码,则可以将该功能部署为子应用程序。这样,两个应用程序都重用相同的代码,但具有该代码的不同实例。如果您想学习如何构建子应用程序,您可以阅读我就该主题撰写的教程(http://handyjs.org/article/your-guide-to-the-dark-arts-of-nodejs-sub-apps