类似 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 用 JavaScript 编写,运行在 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 中工作?的主要内容,如果未能解决你的问题,请参考以下文章
如何让 twitter 引导模式在 node js express js 中工作?
关于 connection.end() 如何在 node.js mySQL 模块中工作的困惑