Abr*_*ain 3 ejs referenceerror
我正在尝试包含一个ejs文件,该文件包含用于设置视图的功能。这些功能被定义为可以使用的助手。我试过使用:
<% include helpers.ejs %>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用此文件中的函数时:
<% module_start('$body', [{name:'display',value:'block'}], 'body'); %>
Run Code Online (Sandbox Code Playgroud)
我得到错误:
Reference Error: module_start is not defined
Run Code Online (Sandbox Code Playgroud)
当我将代码从“ helpers.ejs”复制到我的原始视图文件“ test.ejs”时,它可以正常工作。我经历了几个答案,但仍然感到困惑,在这种情况下我做错了什么。
感谢您的帮助。
经过数小时的辛苦尝试后,我找到了一个可行的解决方案。该解决方案是从以下机构借来的:
查看此代码中提供的解决方案,我将“ helpers.ejs”更新为“ helpers.js”。之后,我将导出的功能从“ helpers.js”添加到ejs渲染上下文对象:
const ejs_helpers = require('path/to/helpers.js');
...
ejs.renderFile('filename', { helpers:ejs_helpers, ...}, (err,data)=>{});
Run Code Online (Sandbox Code Playgroud)
在ejs视图文件中:
<%- helpers.function_name(params); %>
Run Code Online (Sandbox Code Playgroud)
这极大地改变了我最初解决问题的方式。使用普通的ejs帮助程序文件,这些函数在控制流语句之间包含HTML。在此处显示的情况下,函数返回纯字符串。注意带有“ Scriptlet”标记的“-”。
希望这对某人有帮助。