如何在 EJS 中包含带参数的模板?

how to include a template with parameters in EJS?

作为一个真正的 EJS 初学者,我的 html 页面中有两个图表,所以我想使用我的部分两次:

<% include partials/spider-chart.ejs %>

但我需要在ejs中传递一些参数来区分图表。

最好的方法是什么?

我认为您想使用相同的 partial ejs 模板渲染两个不同的图表,只需提供不同的数据(在主 ejs 文件中)。

您可以只定义一个变量,它将分配给第一个图表将使用的 data,而不是包含 chart.ejs 文件,再次更改 data,并再次包含部分 ejs 文件(chart.ejs),所以现在您有两个文件可以使用相同的变量(数据),但可以根据分配给 data.[=18= 的值绘制不同的图表]

例如:

<% var data= 'data to be used by first chart(parameter)'; %>
<% include partials/spider-chart.ejs %>

// re-initializing data for second chart
<% data= 'data to be used by second chart(parameter)'; %>
<% include partials/spider-chart.ejs %>

您的 spider-chart.ejs 文件可能会使用 data

蜘蛛-chart.ejs

    <li>
        <%= data %> // just an example
    </li>

此处,当您使用数据时,两个图表访问的数据变量将不同,因为您在每个图表之前为数据重新分配值。

@Naeem Shaikh 解决方案有效。 尽管 include 还为您提供了更直观的方式来包含部分模板,并将上下文变量传递给 documention section of ejs.

中找到的模板
<ul>
  <% users.forEach(function(user){ %>
      <%- include('user/show', {user: user}); %>
  <% }); %>
</ul>

您可以传递单个数据也可以传递多个数据这里是如何做到的

In render funtions

我们可以像这样将多个数据作为一个对象传递

app.get("/account", function(req, res) {
  res.render("account", {
    name: 'Jon Snow',
    age: 35
  });
});

然后可以使用像这样的 ejs 简单模板标签访问 account 中的数据

<h2> hello <%= name %> </h2> <p> your age is <%= age %> </p>

In Partial views

像这样传递数据

<%- include('partials/logout', {name='triyon'}) %>

然后像我们上面那样访问它

<h2> logged out <%= name %> </h2>

这是最好的解决方法,在呈现基本 ejs 文件时仅将视图文件名作为上下文传递。

/base.ejs:

<html>
    <%- include(content) %>
</html>

/extra.ejs:

<div> some content which is to be added in base ejs file </div>

/controller.js:

res.render('base', { content: 'extra' })