كيف ستعمل الرمز الشبيه بـ 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 مماثلة؟
المحلول
http://boldr.net/mvc-stack-node-js-ejsgi-scylla-mustache هي مقالة صغيرة رائعة مع مثال GitHub كامل لنمط MVC باستخدام وحدات العقدة dirfferent. كما يسرد وحدات بديلة متوفرة حاليًا. أجاب على هذا السؤال بالنسبة لي أفضل من http://howtonode.org/ التي لديها بعض التوتات الجيدة ولكن لم أتمكن من العثور على أي شيء على MVC هناك.
نصائح أخرى
أسهل طريقة للقيام بذلك هي مع ExpressJS ، وهو إطار MVC للعقدة. العقدة هي فقط ما تقوله ، أحداث 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
TowerJS هو إطار MVC شهير يعتمد على
- MongoDB (قاعدة البيانات)
- ريديس (وظائف الخلفية)
- قهوة
- القلم
- ياسمين (اختبارات)
- jQuery
موقع http://towerjs.org/
RailwayJS هو إطار MVC ، مكتوب في JavaScript يعتمد على ExpressJs ويعمل على منصة NodeJS. إنها مستوحاة من إطار Ruby on Rails. يمكنك أن تقرأ عن MVC Architecture of RailwayJS هنا: http://jsmantras.com/blog/Railwayjs-Routing