在 EJS 模板引擎中,如何“包含”页脚?

Posted

技术标签:

【中文标题】在 EJS 模板引擎中,如何“包含”页脚?【英文标题】:In EJS template engine, how do I "include" a footer? 【发布时间】:2011-08-14 09:37:20 【问题描述】:

假设我保存了一个页脚的片段。如何在我当前的模板中“包含”它?

【问题讨论】:

你可以试试 【参考方案1】:

我知道这个问题已被标记为已回答,但我相信您正在寻找的是“部分”语法。在 EJS 中,您可以将一个视图模板中的内容包含在另一个视图模板中,如下所示:

<html>
  <head></head>
  <body>
    Blah blah blah
    <%- partial('footer') %>    
  </body>
</html>

【讨论】:

从 EJS 中删除了部分,但是您现在可以使用“包含”语法。见这里:***.com/a/11835644/175082【参考方案2】:

EJS 使得使用包含非常简单。以下是 EJS README 中的描述:

包含与包含语句的模板相关,例如 例如,如果您有“./views/users.ejs”和“./views/user/show.ejs” 您将使用 。包含的文件是 字面上包含在模板中,之后不执行任何 IO 编译,因此局部变量可用于这些包括 模板。

<ul>
  <% users.forEach(function(user) %>
    <% include user/show %>
  <% ) %>
</ul>

因此,在您的情况下,如果页脚与您要包含它的文件位于同一目录中,您只需将&lt;% include footer %&gt; 添加到您的文件中。

【讨论】:

如果页脚模板位于父目录&lt;% include ../footer %&gt; 中,此操作是否有效? 是的,这也可以。只要您的节点进程具有读取权限,您就可以使用文件系统上任何 ejs 文件的路径。 这种奇怪的语法......能够在不使用引号或任何东西的情况下包含../footer 如果没有引号和括号中的路径/文件名,这将不起作用。 EJS 文档显示 【参考方案3】:

您可以通过

包含ejs模板
<% include includes/header.ejs %>

【讨论】:

我认为这行不通,您需要使用 我同意@VikasKandari。 EJS docs 建议使用原始输出标签 &lt;%-,因为它会插入未转义的值。【参考方案4】:

正确的语法是&lt;%- include('&lt;path&gt;', &lt;object with extra parameters&gt;) %&gt;

include 是一个函数 包含与包含调用的模板相关。 (这需要 'filename' 选项。)例如,如果你有 "./views/users.ejs" 和 "./views/user/show.ejs" 你会使用 。

您可能希望将原始输出标记 (

【讨论】:

【参考方案5】:

在同一目录中&lt;%- include('header'); -%&gt;

根目录&lt;%- include('../partials/header'); -%&gt;

适用于 EJS v3.0.1

【讨论】:

它对我有用。但是为什么我们这样使用呢?有什么理由吗?如果有人知道,请分享。谢谢... 我在使用这个关闭模式后面对背景。【参考方案6】:

使用以下语法可以轻松使用包含在ejs 中:

&lt;% include filename %&gt;

注意:文件应该在视图中。

【讨论】:

【参考方案7】:

此语法 不再有效。 这个语法有效

【讨论】:

以上是关于在 EJS 模板引擎中,如何“包含”页脚?的主要内容,如果未能解决你的问题,请参考以下文章

EJS模板引擎

ejs模板引擎的使用

如何使用 EJS 模板引擎将变量传递给内联 javascript?

EJS模板引擎

EJS 高效的 JavaScript 模板引擎

Koa中 引入使用 EJS 模板引擎