Как сделать состав компонентов (включает в себя включает в себя) с EJS и одиннадцати? - PullRequest
0 голосов
/ 30 мая 2019

Я использую Eleventy , генератор статического сайта для создания сайта. Он поддерживает множество шаблонных языков, но EJS выглядит лучшим в том смысле, что это «просто JavaScript», за исключением того, что я не могу понять, как создать композицию компонента, или вообще возможно ли это. Документы EJS, скажем так, сильно отсутствуют.

То, чего я хочу достичь, похоже на то, что вы бы делали в React или Vue с props.children или <slot>, где вы составляете компоненты, но это, очевидно, будет сделано с частями здесь.

Например, скажем, у меня был частичный элемент сетки, который принимал размеры, в которых он мог отображать, его имя тега и "children", что-то вроде:

<%- include('../grid-item', {
  size: '50',
  tag: 'li',
  children: ANOTHER-INCLUDE,
}); %>

Тем не менее, даже приведенный выше пример немного ограничивает, так что я действительно хотел бы достичь что-то вроде:

<%- include('../grid', {
  tag: 'ul',
}, () => { %>
  <%- include('../grid-item', {
    size: '50',
    tag: 'li',
  }, () => { %>
    <div>ANY MARKUP</div>
  <% }); %>
<% }); %>

Возможно ли это? Я подхожу к этому не с того угла?

Eleventy поддерживает обходной путь с помощью Парные шорткоды для Nunjucks и Liquid, но оба этих языка шаблонов кажутся строго ограниченными, например, вы не можете даже создать объект данных.

...