栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Node.js + Express上的多个视图路径

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Node.js + Express上的多个视图路径

最后更新

自Express 4.10起,框架支持多视图文件夹功能。

只需将一系列位置传递给

views
属性,就像这样。

app.set('views', [__dirname + '/viewsFolder1', __dirname + '/viewsFolder2']);

Express 2.0

据我所知,express目前不支持多个视图路径或名称空间(就像静态中间件一样)

但是您可以自己修改查找逻辑,以使其按您想要的方式工作,例如:

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)    };}

您将通过调用上面的函数并传递 express 作为参数来启用新逻辑,然后将能够为配置指定视图数组:

var express = require('express');enableMultipleViewFolders(express);app.set('views', [__dirname + '/viewsFolder1', __dirname + '/viewsFolder2']);

或者,如果愿意,可以直接修补框架(更新其中的 view.js 文件)

这应该 可以在Express 2.x中运行 ,不确定是否可以在新版本(3.x)中使用

更新

不幸的是,上述解决方案在Express 3.x中不起作用,因为 express.view未定义的

另一个可能的解决方案是代理 response.render 函数并设置views文件夹配置,直到获得匹配:

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);};

我还没有测试过它,反正我还是很讨厌,不幸的是这个功能又被推迟了:https
:
//github.com/visionmedia/express/pull/1186

更新2

由于合并了以下拉取请求,因此Express
4.10中已添加此功能:https :
//github.com/strongloop/express/pull/2320



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469147.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号