EJS:将变量传递到包含的文件

Mih*_*ail 3 ejs

我将EJS用作前端开发堆栈的一部分。例如我正常的index.ejs看起来像这样:

<%- include parts/header.ejs %>

  <%- include parts/navigation.ejs %>
    
    <!-- HTML content: divs, spans, etc. -->
  
<%- include parts/footer.ejs %>
Run Code Online (Sandbox Code Playgroud)

我想要的是以某种方式通过include <%-include parts / footer.ejs传递变量吗?variable = value%>,并希望在包含的文件中读取它,以有条件地显示/隐藏内容的某些部分。

我找不到办法。EJS有可能吗?

Tim*_* Gu 5

有两种方法可以做到这一点:

愚蠢的方式

这种方式与EJS 1.0兼容,并且具有编译时的优势。

只需在includeing 之前声明变量。

例:

included.ejs:

<p><%= variable %></p>
Run Code Online (Sandbox Code Playgroud)

main.ejs:

<% var variable = 'hola' %>
<% include included %>
Run Code Online (Sandbox Code Playgroud)

聪明的方式

此方法仅适用于EJS 2.0或更高版本,但可能比上一个方法稍微慢一些(如果未启用缓存,则可能慢很多):

included.ejs:

<p><%= variable %></p>
Run Code Online (Sandbox Code Playgroud)

main.ejs:

<%- include('included', {variable: 'hola'}) %>
Run Code Online (Sandbox Code Playgroud)