Я использую 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, но оба этих языка шаблонов кажутся строго ограниченными, например, вы не можете даже создать объект данных.