【问题标题】:Making several applications inside of an express app在 express 应用程序中创建多个应用程序
【发布时间】:2013-08-20 08:27:58
【问题描述】:

我来自 django 背景,基本上,该框架允许大量模块化代码。我在 nodejs 和 express 中创建了一个简单的博客引擎。但是,所有路由最终都在我的主 app.js 文件中,或者更确切地说是 app.coffee,因为我在我的 nodejs 应用程序中使用了咖啡脚本,它符合 javascript。

所以,说这就是我的路线的样子:

app.get('/', index.index)
app.get('/users', user.list)
app.get('/blog', blog.blogList)
app.get('/blog/:id(\\d{5})', blog.blogEntry)

现在,这里的问题是,如果我想按类别对它们进行排序,那么就会发生这种情况,那么我必须在同一个文件中添加另一个 app.get 函数。代码:

app.get('/blog/categores/:cat(\w+), blog.someotherview)

如果我想添加按时间排序,例如:

app.get('/blog/time/:year(\\d{4}), blog.someYearView)

我想做的是将与/blog 相关的所有事情委托给blog.js 处理。理想情况下,如何将所有这些路由从主 app.js 文件中取出?

您可以通过在 django 中使用 include() 方法轻松地做到这一点。

【问题讨论】:

    标签: javascript django node.js express routes


    【解决方案1】:

    按照您的习惯,在您的 app.js 文件中创建一个 Express 应用程序。然后,在blog.js 文件中执行相同操作。在app.js内导入并使用如下:

    var blog = require('./blog');
    
    var app = express();
    app.use(blog);
    

    在您的blog.js 文件中,您需要做的就是导出您的应用程序:

    var app = express();
    app.get('/blog/...', ...);
    
    module.exports = app;
    

    换句话说:任何 Express 应用都可以用作任何其他 Express 应用的中间件,因此您可以创建子应用。

    希望这会有所帮助。

    PS:TJ Holowaychuk(Express 的创建者)为此制作了一个视频,Modular web applications with Node.js and Express

    【讨论】:

      猜你喜欢
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 1970-01-01
      • 2022-09-28
      • 2022-11-10
      • 1970-01-01
      • 2019-07-27
      相关资源
      最近更新 更多