【问题标题】:node.js + EJS + using javascript inside <% tagsnode.js + EJS + 在 <% 标签内使用 javascript
【发布时间】:2011-08-29 04:30:46
【问题描述】:
我是 node.js 的新手。我正在尝试使用 EJS 模板,但遇到了一点障碍。如果我做对了, 中的所有代码都会在服务器端执行。我不知道如何使用位于这些标签内的模块(js 文件)中的 javascript 函数。我应该像<script src="..."> 那样把它们包括进来吗?但这意味着它将被发送到浏览器,但我不想要那个(或者我想要吗?)。什么是正确的架构?
第二个问题是:ejs helper 具体是什么?我怎样才能做一个? (抱歉,我找不到任何简单示例)
【问题讨论】:
标签:
javascript
node.js
ejs
【解决方案1】:
听起来您在模板中使用了太多逻辑。您不想调用自定义函数,也不想使用那些 HTML 助手。
您想要做的是正确定义绑定到您的模板的数据模型,并将您的业务逻辑与您的数据模型包装在一起。
然后创建数据对象的实例并将其传递给 EJS。
你的目标是 tagsoup 地狱。模板的目标仅仅是使用简单的循环和部分视图将 JSON 转换为 HTML。
【解决方案2】:
老问题,但以防其他人在这里绊倒......
在 Express 3 中,您可以将助手添加到 app.locals。例如:
app.locals.somevar = "hello world";
app.locals.someHelper = function(name) {
return ("hello " + name);
}
这些可以在您的视图中访问,如下所示:
<%= somevar %>
<%= someHelper('world') %>