类似 MVC 的代码如何在 Node.js 中工作?

Posted

技术标签:

【中文标题】类似 MVC 的代码如何在 Node.js 中工作?【英文标题】:How would MVC-like code work in Node.js? 【发布时间】:2011-01-11 21:14:25 【问题描述】:

我开始了解 node.js,并试图弄清楚我将如何做正常的 MVC 工作。例如,这是一个 Django 视图,它从数据库中提取两组记录,并将它们发送到模板中呈现。

def view(request):
    things1 = ThingsOne.objects.all()
    things2 = ThingsTwo.objects.all()
    render_to_response('template.html, 'things1': things1, 'things2': things2)

类似的 node.js 函数可能是什么样的?

【问题讨论】:

我发现howtonode.org 对我跟上进度很有帮助。 我在这里发表了一篇关于我用来在 Node 中获得可靠 MVC 模式的工具的博文:travisglines.com/web-coding/a-simple-mvc-setup-in-node-js 【参考方案1】:

RailwayJS 是一个 MVC 框架,基于 ExpressJS 用 Ja​​vaScript 编写,运行在 nodeJS 平台上。它的灵感来自 Ruby on Rails 框架。您可以在此处阅读有关 RailwayJS 的 MVC 架构:http://jsmantras.com/blog/RailwayJS-Routing

【讨论】:

【参考方案2】:

TowerJS 是一个流行的基于

的 MVC 框架 MongoDB(数据库) Redis(后台作业) CoffeeScript 手写笔 茉莉花(测试) jQuery

网站http://towerjs.org/

来源https://github.com/viatropos/tower

【讨论】:

【参考方案3】:

最简单的方法是使用 expressjs,它是 Node.js 的 MVC 框架。 Node 就是它所说的,用于 web 的事件 I/O。

http://expressjs.com 上的示例应该有助于了解基础知识,但可以直接回答您的问题。

var express = require('express');

var app = express.createServer();

app.get('/whatever', function(req, res) 

  Things1.objects.getAll(function(things1) 
    Things2.objects.getAll(function(things2) 
      var options =  locals:  things1: things1, things2: things2 ;
      res.render('thingstemplate.ejs', options); // or thingstemplate.jade or whatever
   );
  );
);

app.listen('80', ''); // port and optional hostname to bind

【讨论】:

可以将 Express 与其他东西一起使用来创建 MVC 框架,但 Express 不是“Node 的 MVC 框架”。【参考方案4】:

http://boldr.net/mvc-stack-node-js-ejsgi-scylla-mustache 是一篇很棒的小文章,其中包含使用不同节点模块的 MVC 模式的完整 github 示例。它还列出了当前可用的替代模块。它比 http://howtonode.org/ 更好地为我回答了这个问题,http://howtonode.org/ 有一些很好的 tuts,但我在 MVC 上找不到任何东西。

【讨论】:

博客(我的意思是 boldr.net)上给出的 Github 存储库已死。如果您碰巧有这个问题的最新答案,可以与我们分享吗?

以上是关于类似 MVC 的代码如何在 Node.js 中工作?的主要内容,如果未能解决你的问题,请参考以下文章