EJS包括在单独的ejs文件中定义的函数

时间:2017-05-23 17:57:15

标签: ejs referenceerror

我正在尝试包含一个包含设置视图功能的ejs文件。这些函数被定义为使用帮助程序。我尝试过使用:

<% include helpers.ejs %>

但是当我尝试使用此文件中的函数时:

<% module_start('$body', [{name:'display',value:'block'}], 'body'); %>

我收到错误:

Reference Error: module_start is not defined

当我复制来自&#39; helpers.ejs&#39;的代码时。到我的原始视图文件,&#39; test.ejs&#39;,它按预期工作。我已经经历了几个答案, 我仍然感到困惑,在这种情况下我做错了什么。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

经过几个小时的努力尝试每一个构想的解决方案后,我已经找到了一个有效的解决方案。解决方案来自:

EJS Functions

查看此代码中提供的解决方案,我将'helpers.ejs'更新为'helpers.js'。接下来,我将导出的函数从'helpers.js'添加到ejs渲染上下文对象:

const ejs_helpers = require('path/to/helpers.js');

...

ejs.renderFile('filename', { helpers:ejs_helpers, ...}, (err,data)=>{});

在ejs视图文件中:

<%- helpers.function_name(params); %>

这大大改变了我最初解决问题的方式。使用普通的ejs帮助文件,这些函数在控制流语句之间包含HTML。在这里给出的情况下,函数返回纯字符串。注意带有'Scriptlet'标签的' - '。

希望这有助于某人。