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

我用ejs使用express(node.js的web框架)。 现在我想创build我自己的filter,如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 

您需要在您的应用程序中需要ejs,并在其上设置自定义filter,这将在您的Express应用程序中可见。 另外请注意您在视图中如何使用ejsfilter<%=: data_to_be_filtered | your_filter %> <%=: 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 (位于/视图)

 <%=: data | my_custom_filter %> 

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

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