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

5
我正在使用express(node.js的web框架)和ejs。现在,我想创建自己的过滤器,如ejs github页面所述:
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个回答

10

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

示例应用程序:

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


太好了,谢谢!我主要是缺少require('ejs')<%=后面的冒号。 - topskip
很高兴能够帮助,不要忘记您还可以接受答案(除了投票赞成)。 - alessioalex
能否在块中使用过滤器?<% block('title', owner | 在此处添加过滤器 ) %> - chovy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接