1

一般来说,我对 node.js 和 web 编程有点陌生,所以如果我问奇怪的问题,请原谅:D

所以这是我设置我的 express node.js 项目的方式。
我有一个顶级 app.js 只是为了将流量重定向到几个子域:

var app = module.exports = express.createServer(options);
app.use(express.vhost('blog.localhost', require('./apps/blog/blog.js')));
app.use(express.vhost('app1.localhost', require('./apps/app1/app1.js')));
app.use(express.vhost('login.localhost', require('./apps/login/login.js')));

在通过 require() 包含的每个子应用程序中,我只返回一个新的快速服务器:

module.exports = express.createServer(options);

设置 404 页面最优雅的方式是什么?当我只使用一个应用程序时,我只是使用

app.use(function(req, res, next){
  res.render('404', {
  });
});

但是如果我使用这种方法,我将不得不为每个应用程序创建一个 404.jade,我不喜欢代码中无用的重复。知道如何在多个虚拟主机之间共享一个 404 逻辑吗?

4

1 回答 1

0

您有 3 台主机需要 3 个路由文件。我的建议是从外部文件中要求每个 404 路由。这样,您将拥有每个主机的 404 路由,但它只会驻留在一个地方。

例子:

404 路由文件 - 404.js

module.exports = function (app, req, res, options) {
  app.get('/404', function(req, res, next) {
    res.render('404', { options: options });
  });
}

主机 A 的路由

// define other routes here
...
// you pass the app, req, res as params
// the last param is for local vars sent to the view
require('./routes/404.js')(app, req, res, { host: 'HostA' });
于 2012-01-05T09:51:06.477 回答