Express.js路由在一台服务器上运行的多个项目

时间:2012-09-17 18:56:25

标签: javascript node.js express

我对node.js很新,而且对Javascript很新(我不把简单的动画用jQuery算作js)。作为一名网络开发人员,我正在从PHP / MySQL迁移到Express / mongo。

我喜欢整洁的想法 - 只要没有明显的性能损失。由于节点发展如此迅速,我发现很难找到针对当前节点版本的路由方法的具体意见和答案(我发现的大多数帖子似乎都不相关且超过2年)。

|- app.js
    |- routes
        |- blog.js

我正在使用blog.js作为所有博客相关内容的网关。这包括使用函数注册GET和POST请求,以及处理页面呈现。

这一切都是通过一个电话启动的。

我的app.js有以下内容:

... //basic express installation
var db = ... //mongoose database connection

require('./routes/blog')(app, db, '/blog'); //starts the blog up

blog.js看起来像这样:

var db = null;
var basedir = null;

module.exports = function(app, _db, _basedir){
  db = _db;
  basedir = _basedir;

  app.get (basedir, pages.home );
  app.get (basedir + '/show/:id', pages.getBlog );

  /*app.get(basedir + '/*', function(req, res) {
    res.redirect(basedir);
  });*/ 
};

var pages = {
      home : function(req, res) {
        // whatever
    }

    , getBlog : function(req, res) {
        // whatever
    }
}

我知道这有效 - 我的问题是,这是否是传统的?这是不推荐的东西吗?是记忆浪费吗?为什么人们将app.gets放在app.js而不是外部文件中?目前主要使用的路由方法是什么(我在同一台服务器上开发了多个小应用程序,因此我希望我的app.js尽可能少)。

1 个答案:

答案 0 :(得分:1)

你所概述的方式是完全可以接受的,在我看来,我更喜欢只有一个大的app.js文件,其中包含你所有的路线和其他所有内容。

许多人将代码分离得比你概述的要多得多,特别是在尝试遵循MVC和类似MVC的模式时。

例如,这是一个我正在研究的样板项目,甚至可能在分离上有点过分。它不是一个成品,只是我正在玩的东西,从我喜欢的其他样板,框架等中获取了一些不同的东西。从那以后我学到了一些东西,我可能会在某些时候调整它。

NemoJS - My node/express/mongoose/jade/stylus/twitter_bstrap boilerplate project

要记住的一件事是,将它分开越多,追踪问题就越困难。虽然没有足够的理由不能保持井井有条。这基本上就是我们的目标,对吗?