【问题标题】:How would MVC-like code work in Node.js?类似 MVC 的代码如何在 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 函数可能是什么样的?

【问题讨论】:

标签: javascript model-view-controller server-side node.js serverside-javascript


【解决方案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 存储库已死。如果您碰巧有这个问题的最新答案,可以与我们分享吗?
      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      相关资源
      最近更新 更多