如何访问express.js中的ejs对象

时间:2012-01-05 19:14:51

标签: node.js ejs express

我正在使用express(net.js的web框架)和ejs。现在我想创建我自己的过滤器,如ejs github page

所述
To add a filter simply add a method to the .filters object:

ejs.filters.last = function(obj) {
  return obj[obj.length - 1];
};

问题:如何访问该ejs对象?我在app.js中尝试过(天真):

ejs.filters.myfilter = function (obj) {
  ....
}

给了我错误:

ReferenceError: ejs is not defined

1 个答案:

答案 0 :(得分:10)

您需要在应用程序中要求ejs并在其上设置自定义过滤器,这对于Express应用程序是可见的。另请注意您在视图<%=: data_to_be_filtered | your_filter %>中如何使用ejs过滤器。

示例应用程序:

<强> app.js

var app, express = require('express'), ejs = require('ejs');

ejs.filters.my_custom_filter = function(ary) {
  return ary[ary.length - 1];
};

app = express.createServer();

app.configure(function() {
  app.set('view options', { layout: false });
  app.set('view engine', 'ejs');
});

app.get('/', function(req, res) {
  res.render('index', { data: [1, 2, 3, 4, 5] });
});

app.listen(8080);
console.log('Server started on port 8080');

index.ejs (位于/ views中)

<%=: data | my_custom_filter %>

直接从github下载代码:http://github.com/alessioalex/ejs_filters

更多信息结帐:https://github.com/visionmedia/ejs