Last Update
Die Mehrfachansicht Ordner verfügen durch den Rahmen seit Express 4.10 unterstützt wird
einfach eine Reihe von Orten an der views
Eigenschaft übergeben, wie so.
app.set('views', [__dirname + '/viewsFolder1', __dirname + '/viewsFolder2']);
Express 2.0
Soweit ich auszudrücken weiß nicht, mehrere Ansichts Pfade oder Namensräume im Moment (wie die statische Middleware tun)
unterstützen Aber Sie können die Lookup ändern Logik selbst, so dass es, wie Sie wollen, zum Beispiel funktioniert:
function enableMultipleViewFolders(express) {
// proxy function to the default view lookup
var lookupProxy = express.view.lookup;
express.view.lookup = function (view, options) {
if (options.root instanceof Array) {
// clones the options object
var opts = {};
for (var key in options) opts[key] = options[key];
// loops through the paths and tries to match the view
var matchedView = null,
roots = opts.root;
for (var i=0; i<roots.length; i++) {
opts.root = roots[i];
matchedView = lookupProxy.call(this, view, opts);
if (matchedView.exists) break;
}
return matchedView;
}
return lookupProxy.call(express.view, view, options)
};
}
Sie die neue Logik von callin ermöglichen g die Funktion oben und vorbei auszudrücken als Parameter, und dann werden Sie eine Reihe von Ansichten der Konfiguration angeben können:
var express = require('express');
enableMultipleViewFolders(express);
app.set('views', [__dirname + '/viewsFolder1', __dirname + '/viewsFolder2']);
Oder, wenn Sie möchten, können Sie den Rahmen Patch direkt (Aktualisierung die view.js Datei in it)
Dies sollte Arbeit in Express 2.x, nicht sicher, ob es mit der neuen Version (3.x)
UPDATE
Unluckily die obige Lösung nicht da express.view in Express 3.x arbeitenundefined
Eine andere mögliche Lösung für Proxy wird die Antwort sein würde. Funktion machen und den Ansichten Ordner Config gesetzt, bis es eine Übereinstimmung bekommt:
var renderProxy = express.response.render;
express.render = function(){
app.set('views', 'path/to/custom/views');
try {
return renderProxy.apply(this, arguments);
}
catch (e) {}
app.set('views', 'path/to/default/views');
return renderProxy.apply(this, arguments);
};
ich es nicht getestet habe, ist es mir sehr hacky fühlt sich trotzdem, unglücklicherweise diese Funktion wieder zurück geschoben wurde: https://github.com/visionmedia/express/pull/1186
UPDATE 2
Diese Funktion in Express 4.10 hinzugefügt wurde, da der folgende Pull-Request zusammengefasst wurde: https://github.com/strongloop/express/pull/2320
Würde so etwas für Sie funktionieren? http://stackoverflow.com/questions/9470466/node-express-js-overriding-where-to-look-for-the-view-folder-for-each-reque –
http://stackoverflow.com/questions/ 36374424/mean-app-mit-admin-panel-und-client-panel? Answertab = aktiv # tab-top –