类似 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 中工作?的主要内容,如果未能解决你的问题,请参考以下文章

单线程非阻塞 IO 模型如何在 Node.js 中工作

如何让 twitter 引导模式在 node js express js 中工作?

关于 connection.end() 如何在 node.js mySQL 模块中工作的困惑

为啥 catch 块不会触发并且应用程序停止在 node.js 中工作

无法让 SSL 在 Node.js 应用程序中工作

使用node.js批量插入不在Cassandra中工作