Última actualización
La vista característica de varios carpetas se apoya en el marco expreso desde 4,10
Sólo tiene que pasar una serie de ubicaciones a la propiedad views
, como tal.
app.set('views', [__dirname + '/viewsFolder1', __dirname + '/viewsFolder2']);
Express 2.0
Por lo que yo sé expresar no soporta múltiples rutas de ver o espacios de nombres en el momento (como el middleware estática hacer)
pero puede modificar la búsqueda lógica usted mismo para que funcione de la manera que desee, por ejemplo:
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)
};
}
Habilitará la nueva lógica mediante callin g la función anterior y pasando expresan como un parámetro, y entonces usted será capaz de especificar una matriz de puntos de vista a la configuración:
var express = require('express');
enableMultipleViewFolders(express);
app.set('views', [__dirname + '/viewsFolder1', __dirname + '/viewsFolder2']);
O, si lo prefiere, puede parchear el marco directamente (actualización la view.js archivo dentro de ella)
Esto debería trabajo in exprés 2.x, no estoy seguro si lo hará con la nueva versión (3.x)
ACTUALIZACIÓN
Desgraciadamente la solución anterior no funcionará in exprés 3.x desde express.view sería indefinido
Otra posible solución será la de proxy de la respuesta .render función y ajustar la configuración de la carpeta puntos de vista hasta que obtiene un partido:
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);
};
yo no lo he probado, se siente poco limpia a mí de todos modos, desgraciadamente, esta característica ha sido empujado de nuevo: https://github.com/visionmedia/express/pull/1186
ACTUALIZACIÓN 2
Esta característica se ha agregado in exprés 4.10, ya que la solicitud de extracción siguiente se ha fusionado: https://github.com/strongloop/express/pull/2320
¿Algo como esto funcionaría para usted? http://stackoverflow.com/questions/9470466/node-express-js-overriding-where-to-look-for-the-views-folder-for-each-reque –
http://stackoverflow.com/questions/ 36374424/mean-app-with-admin-panel-and-client-panel? Answertab = active # tab-top –