【问题标题】:NODE.JS accessing functions within an EJS templateNODE.JS 访问 EJS 模板中的函数
【发布时间】:2019-02-21 20:34:59
【问题描述】:

我有一个 scripts.js 文件,其中包含一个我想在 EJS 模板中访问的函数。

在模板中我包含了一个标题,在标题中我添加了一个脚本 rel 到 scripts.js

<script src="/scripts/scripts.js" type="text/javascript"></script> 

我通过 console.log("test") 对其进行了测试,当模板被调用时,我看到控制台中出现了“test”。

当我尝试在 EJS 模板中调用实际函数 (verify_data) 时,我得到一个错误 verify_data is not defined。 EJS 中的错误代码如下所示:

<p><em>Submited By <%= verify_data(results.user.username) %></em></p>

该函数检查传递的参数是否为空/未定义,如果是则返回数据,如果不是则返回“n/a”字符串。

如何在 EJS 模板中直接访问 JS 函数?

谢谢,

【问题讨论】:

  • 您正在将后端脚本与来自客户端(即:浏览器)的 Javascript 混合。
  • 问题是否有解决方案,直接从 EJS 模板中运行调用 js 函数?
  • 不,不可能。
  • 感谢 Ele 的回答,我认为数据验证仅在实际路线上进行?在将参数传递给模板之前?
  • 是的,这是一种更好的方法

标签: javascript node.js function ejs


【解决方案1】:

假设您没有使用 SPA 框架,您需要添加一个标签,该标签将被函数替换或包含您要存储的数据。

看这段代码sn-p

<p><em>Submited By <span id='userData'></span></em></p>

<script>
//This is the script.js
function verify_data(userName) {
  return `My data with '${userName}'`;
}
</script>

<script>
  let data = verify_data("EleFromStack"); // assuming <%=results.user.username%> = "EleFromStack"
  document.querySelector("#userData").textContent = data;
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多