0

我有两个 Marko 组件,每当它们在 Express 服务器上呈现时,我想将它们包含在其他组件中:<main-header/><main-footer />.

components/main-header/index.marko如下:

<lasso-page />
<!DOCTYPE html>
<html>
    <head>
        <lasso-head />
    </head>
    <body>
        <nav>...</nav>

并且components/main-footer/index.marko是:

    <footer>...</footer>
    <lasso-body />
  </body>
</html>

我想在特定路线上呈现的页面如下所示:

<main-header />
    //component content
<main-footer />

但是,我得到一个错误Missing ending "body" tagfor main-header,所以显然这种 EJS-partials 像语法是不允许的。有没有更好的方法来做到这一点,而无需在每个路由处理程序index.marko中呈现单个文件?

4

1 回答 1

1

这是使用布局的文档: https ://markojs.com/docs/core-tags/#layouts-with-nested-attributes

文档提到 using @tagswhich 允许传递命名的内容块(如果你想把一些东西放进去<head>,其他东西放进去<body>),但如果你只有一个内容块要传递,你可以使用默认内容。

您可以创建一个使用<include>标签来呈现传递给它的内容的布局:

<html>
<body>
    <include(input.renderBody)/>
</body>
</html>

然后使用布局,传递正文内容:

<custom-layout>
    Content goes here
</custom-layout>
于 2018-03-22T06:07:23.177 回答