3

我能想到的最明显的例子是输出嵌套评论。假设您有一个评论树,并且您想使用您的模板将其输出为嵌套的 html(比如说列表中的列表或 div 中的 div)。

“评论”块/函数/标签/助手/任何东西都必须能够以某种方式为评论的孩子调用自己。

是否有模板引擎可以在一个模板文件中支持这种事情?

我知道您可以预先计算每条评论的“缩进”或“深度级别”,并以正确的顺序将它们作为一个平面列表发送到模板,但我们只是说我不想要那个。假设我不想在代码中/模板之外将片段拼接在一起——我希望整个页面都包含在一个模板或主题文件中。


更新:我想生成嵌套的 html。我希望评论嵌套的,而不是嵌套的。我知道如何使用 CSS 缩进。:) 无论是在浏览器还是在服务器上完成都无关紧要,因为关键是我希望模板在一个文件中自包含。

如:

var html = render(template, {comments: aTreeOfNestedComments});

(看到了吗?可能是node.js,一个浏览器插件,一些“jQuery”,因为现在有些人喜欢称之为javascript......)看起来jade可以使用mixins来做到这一点。任何可以做类似事情的基于标签的模板引擎?

4

3 回答 3

1

模板引擎可以解决通用的、普通的问题。虽然嵌套模板似乎是一个常见的用例,但我还没有遇到很多可以做到这一点的模板引擎。

由于市场没有提供好的解决方案,我正在从知道如何呈现自己的 JavaScript 对象构建我的应用程序。我从不使用模板;每个块都获得对 DOM 的引用(就像应该附加自身的父元素一样),或者渲染器返回子容器,父元素可以将其添加到合适的位置。

这让我可以使用 JS 的全部功能而不受模板引擎的限制。

[编辑]这是一种解决方法:如果您需要递归元素,请添加一个span(如果递归元素应该是内联的)或div(如果它是一个块元素)。给它类recursiveTemplate数据属性 data-template-name="..."

使用标准模板引擎运行模板。之后,使用 jQuery 之类的找到所有具有该类的元素recursiveTemplate并自己替换它们。

于 2012-05-14T15:52:55.067 回答
1

远端模板在这里有一个嵌套树的示例:

http://code.google.com/p/distal/wiki/UseCaseExamples#Building_a_nested_tree

于 2012-05-24T12:18:02.380 回答
-1

正如@TJHeuvel 所说,您可以使用服务器端脚本来生成所需的输出,这将是满足您要求的最佳方式。但是,如果您必须使用 JavaScript,我建议您使用 jQuery,这也可以让您产生所需的结果。

例如:

$("ul li").css("margin-left", "10px");
于 2012-05-14T08:13:19.017 回答