Node.js + EJS +在 <% 标签内使用 javascript

发布于 2024-11-08 05:44:58 字数 306 浏览 3 评论 0 原文

我是 Node.js 新手。我正在尝试使用 EJS 模板,但遇到了一些障碍。如果我没猜错的话,<% %> 里面的所有代码在服务器端执行。我不知道如何使用位于这些标签内的模块(js 文件)中的 JavaScript 函数。我应该像


第二个问题是:ejs helper具体是什么?我怎样才能制作一个? (抱歉,我找不到任何简单示例)

I'm new to node.js. I'm trying to use EJS templates, and i've got a little obstacle. if i'm getting it right, all code inside <% %> is executed serverside. What i don't know is how can i use javascript functions,that are located in modules (js files) inside those tags. Should i include them smth like <script src="...">? but that means it will be sent to the browser but i don't want that (or do I?). What is the right architecture?


Second question is: What ejs helper is specifically? how can i make one? (srry, i can't find any simple example of it)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

め可乐爱微笑 2024-11-15 05:44:58

听起来您在模板中使用了太多逻辑。您不想调用自定义函数,也不想使用那些 HTML 帮助程序。

相反,您想要做的是正确定义绑定到模板的数据模型,并将业务逻辑与数据模型包装在一起。

然后创建数据对象的实例并将其传递给 EJS。

你所走向的是tagoup地狱。模板的目标只是使用简单的循环和部分视图将 JSON 转换为 HTML。

It sounds like your using too much logic inside your template. You do not want to call custom functions, you do not want to use those HTML helpers.

What you want to do instead is define the data model bound to your template properly and wrap your business logic together with your data model.

Then create an instance of you data object and pass it to EJS.

What your leading towards is tagsoup hell. The templates objective is merely to turn JSON into HTML using simple loops and partial views.

别在捏我脸啦 2024-11-15 05:44:58

老问题,但以防万一其他人在这里绊倒......

在 Express 3 中,您可以向 app.locals 添加帮助程序。例如:

app.locals.somevar = "hello world";

app.locals.someHelper = function(name) {
  return ("hello " + name);
}

这些可以在您的视图中访问,如下所示:

<%= somevar %>
<%= someHelper('world') %>

Old question, but in case anybody else stumbles over here...

In Express 3, you can add helpers to app.locals. Ex:

app.locals.somevar = "hello world";

app.locals.someHelper = function(name) {
  return ("hello " + name);
}

These would be accessible inside your views like this:

<%= somevar %>
<%= someHelper('world') %>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文