在EXPRESS中为Jade文件添加更多视图文件夹?

时间:2014-07-04 03:48:24

标签: javascript node.js express

我知道Express中的这一行app.set('views', path.join(__dirname, 'views'));设置了视图变量,所以我可以在./views文件夹中渲染我的所有.jade文件。

有没有人知道如何为views变量添加更多的值,所以我可以在./views文件夹以及./views文件夹内部渲染我的.jade文件?

(例如./includes/form/form.jade和./views/index.jade)

我有Express 4.2.0,文件结构如下:

+ node_modules
+ public
    - includes
        - form
            - index.jade
            - style.less
            - script-form.js
+ views
    - index.jade

1 个答案:

答案 0 :(得分:0)

这对我有用,因为我表达了3.x或更高版本。

function enable_multiple_view_folders() {
// Monkey-patch express to accept multiple paths for looking up views.
// this path may change depending on your setup.
var View = require("./node_modules/express/lib/view"),
    lookup_proxy = View.prototype.lookup;

View.prototype.lookup = function(viewName) {
    var context, match;
    if (this.root instanceof Array) {
        for (var i = 0; i < this.root.length; i++) {
            context = {root: this.root[i]};
            match = lookup_proxy.call(context, viewName);
            if (match) {
                return match;
            }
        }
        return null;
    }
    return lookup_proxy.call(this, viewName);
};

}

并使用它: -

enable_multiple_view_folders();
app.set('views', [__dirname + '/views', __dirname + '/form']);
app.set('view engine', 'jade');