Como o código do tipo MVC funcionaria no Node.js?
Pergunta
Estou começando a entender o Node.js e estou tentando descobrir como faria coisas normais do MVC. Por exemplo, aqui está uma visão do Django que puxa dois conjuntos de registros do banco de dados e os envia para serem renderizados em um modelo.
def view(request):
things1 = ThingsOne.objects.all()
things2 = ThingsTwo.objects.all()
render_to_response('template.html, {'things1': things1, 'things2': things2})
Como seria uma função Node.js semelhante?
Solução
http://boldr.net/mvc-stack-node-js-ejsgi-scylla-mustache é um ótimo pequeno artigo com um exemplo completo de Github de um padrão MVC usando módulos de nó Dirfferent. Ele também lista módulos alternativos atualmente disponíveis. Ele respondeu a esta pergunta para mim melhor do que http://howtonode.org/ que tem alguns bons tuts, mas não consegui encontrar nada no MVC lá.
Outras dicas
A maneira mais fácil de fazer isso é com o ExpressJS, que é uma estrutura MVC para o nó. O nó é exatamente o que diz, com E/S, para a web.
O exemplo no http://expressjs.com Deve ajudar no básico, mas para responder diretamente à sua pergunta.
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
Towerjs é uma estrutura popular do MVC baseada em
- MongoDB (banco de dados)
- Redis (trabalho de fundo)
- CoffeeScript
- Caneta
- Jasmim (testes)
- jQuery
Local http://towerjs.org/
A RailwayJS é uma estrutura MVC, escrita em JavaScript baseada em expressjs e executa sobre a plataforma NodeJS. É inspirado no Ruby on Rails Framework. Você pode ler sobre a arquitetura do MVC de ferrovias aqui: http://jsmantras.com/blog/railwayjs-routing