Как MVC-подобный код будет работать в Node.js?
Я начинаю разбираться в 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?
4 ответа
http://boldr.net/mvc-stack-node-js-ejsgi-scylla-mustache - отличная небольшая статья с полным примером github шаблона MVC с использованием модулей Node. В нем также перечислены альтернативные модули, доступные в настоящее время. Он ответил на этот вопрос для меня лучше, чем http://howtonode.org/ котором есть несколько хороших цитат, но я не смог найти там ничего о MVC.
TowerJS - это популярный MVC-фреймворк, основанный на
- MongoDB (база данных)
- Redis (фоновые задания)
- CoffeeScript
- стилус
- Жасмин (тесты)
- JQuery
Сайт http://towerjs.org/
Источник https://github.com/viatropos/tower
Самый простой способ сделать это с помощью expressjs, который является инфраструктурой MVC для Node. Node - это только то, что он говорит, четный ввод / вывод для сети.
Пример на 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
RailwayJS - это инфраструктура MVC, написанная на JavaScript на основе ExpressJS и работающая на платформе nodeJS. Он вдохновлен платформой Ruby on Rails. Вы можете прочитать об архитектуре MVC RailwayJS здесь: http://jsmantras.com/blog/RailwayJS-Routing