Ich bin immer noch meinen Kopf um Knoten, aber ich habe eine sehr einfache Frage. Ich sehe eine Menge von Knotenbeispielen, bei denen Leute ihre Routen und ihre gesamte Logik in einer einzigen app.js-Datei deklarieren (oder sie manchmal in Unterdateien aufteilen).Node.js, restify und richtiges Routing
Meine Frage ist im Grunde: ist es besser, alle Ihre Routen Deklarationen in der App oder Bootstrap eine generische Route, die auf Ihre Dateistruktur zuordnet. Dies mag wie eine primitive Frage erscheinen, aber mein Ziel ist es zu erfassen, was innerhalb von Knoten am effizientesten ist.
Ich baue gerade einen API-Handler mit Restify, aber ich habe eine andere App, die Express verwendet (diese Frage wird wahrscheinlich beide Fragen beantworten).
In meiner Route kann ich entweder eine einzelne Route Bootstrap wie so erklärt:
app.all('/api/:package/:controller', function(request, response) {
var controller = require(
'../' + request.params.package + '/api/' + request.params.controller
);
controller.index(request, response);
response.end();
});
Dieser übernimmt grundsätzlich alle Anrufe aus der API und zielt auf die richtigen api-Controller. Alternativ kann ich jede Route einzeln deklarieren oder vielleicht sogar eine Schleife schreiben, die jeden meiner Controller durchläuft und sie auf init deklariert. Also:
for (var i in packages.controllers) {
app.all('api/' + package + '/' + controllers[i].name, function(request, response) {
var controller = require(
'../' + request.params.package + '/api/' + request.params.controller
);
controller.index(request, response);
}
}
packages.controllers ist ein Array aller möglichen Steuerungen. Beachten Sie, dass der obige Code nicht korrekt ist. Ich habe eine HMVC-Ordnerstruktur, daher ist der Code ein wenig komplizierter als der obige Code. Aber Sie verstehen es.
Ich frage mich, was die Konsequenzen von beiden sind und ob es wirklich wichtig ist?
Danke!
Danke Don, das ist ein interessantes Beispiel, das ihr da habt. Aber ich denke, meine Hauptfrage ist noch nicht gelöst. In deiner App definierst du jede der Routen explizit in routes.js. Ich möchte das automatisch generieren, damit ich die Routen nicht manuell definieren muss. – pilotguy
magisches Zeug neigt dazu, mich zu erschrecken .. :) Wir gingen mit den routes.js b/c es war explizit. es macht es einfach zu sehen, welche Route Übereinstimmungen deklariert wurden, ohne sie mit dem Impl-Code zu verschmutzen. – Don