MVC in Knoten und allgemein: Wie sind Modelle an Ansichten gebunden?

Ich beginne mit node.js und erstelle ein einfaches MVC-Framework. Bisher habe ich einen Front-Controller (oder, wenn Sie so wollen, einen "Dispatcher"). Das Routing erfolgt wie gezeigt über ein Dispatcher-Konfigurationsmodul.

Meine Fragen sind am Ende, unmittelbar nach dem Code. Dies ist auch eine Übung zum Erlernen des Knotens. Bitte schlagen Sie nicht express.js und ähnliches vor.

dispatcherConfig.js:

var url = require('url');

(function() {
    var dispatcherConfig = {
        '/'                 : 'homeController',
        '/index.html'       : 'homeController',
        '/sayHello.html'    : 'helloController',
        '404'               : '404Controller'
    };

    module.exports.getController = function(request) {
        var route = url.parse(request.url, true).pathname;
        if(dispatcherConfig[route]) {
            return dispatcherConfig[route];
        }
        return dispatcherConfig['404'];
    }
}());


Dies wird von verwendetdispatcher.js:

var dispatcherConfig = require('./config/dispatcherConfig');

(function() {
    module.exports.dispatch = function(request, response) {
        var requiredController = dispatcherConfig.getController(request);
        var controller = require('./controllers/' + requiredController);
        controller.doService(request, response);
    }
}());


Und so sieht ein Sample-Controller aus (funktioniert auch gut) -homeController.js:
(Bitte ignorieren Sie den Code für die Inline-Ansicht.)

(function() {
    var homeController = {
        doService: function(request, response) {
            response.write('<form action="/sayHello.html" method="GET">' + 
                '<input id="name" name="name" size="20" />' + 
                '<input type="submit" value="Submit" />' + 
                '</form>');
        }
    }

    module.exports.doService = function(request, response) {
        return homeController.doService(request, response);
    }
}());


Dieses Routing funktioniert gut. Ich habe Controller, die sich leicht mit URL-Mustern verkabeln lassen, und emuliere auch den Multi-Action-Controller-Typ von Spring, indem ich das Anforderungsobjekt weiter inspiziere.

Drei offensichtliche Dinge, die hier getan werden müssen, sind:

Ansichtsobjekte erstellenModellobjekte erstellenVerbindliche Ansichten und Modelle

Fragen:

In MVC (mindestens spring) sind es Controller, die eine Ansicht mit einem Modell verbinden. Ist das der beste Weg, es zu tun? Was ist, wenn ich eine separate Konfiguration pflege, die beschreibt, welche Ansicht an welches Modell gebunden ist, und der Controller nur an eine Ansicht weiterleitet. Ist das falsch und nicht MVC?

Was ist eine gute Möglichkeit, eine Ansicht in node.js darzustellen? Welche Templating-Optionen werden angeboten (ausgereifte), da es stark vorlagenbasiert ist?

Wenn ich eine Datei lade, die statisch bereitgestellt werden soll (z. B. eine CSS-Datei, die über eine in den Speicher geladene Datei geladen wird) und einen Verweis auf den Inhalt im Bereich global / app behalte, können nachfolgende Anforderungen direkt aus dem Speicher bereitgestellt werden, was zu phänomenalen Ergebnissen führt Geschwindigkeiten, ist diese Annahme richtig? Tatsächlich können wir garantieren, dass nach der ersten Anforderung, die auf dem Knotenserver eingeht (die das Lesen der Datei und das Laden der Inhalte in mem auslöst), alle nachfolgenden Anforderungen aus dem Speicher (für solche statischen Inhalte) bearbeitet werden.

Wie kann man auf niedriger Ebene (ohne Framework) POST-Daten in raw node.js abrufen?

Vielen Dank.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage