javascript - 是否有支持递归之类的javascript模板引擎?

标签 javascript templates recursion

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

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

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

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


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

如:

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

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

最佳答案

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

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

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

[EDIT] 这是一个解决方法:如果您需要递归元素,请添加 span(如果递归元素应该是内联的)或 div(如果它是 block 元素)。给它类 recursiveTemplate 和一个 data attribute data-template-name="..."

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

关于javascript - 是否有支持递归之类的javascript模板引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10579576/

相关文章:

c++ - 转置模板参数包

javascript - 递归添加数组中点之间的中点

javascript - Node js : receive data from client

javascript - 有没有一种方法可以让我们将鼠标悬停在系列的任何点上而不是悬停在数据点上时触发 echarts 库上的 mouseover 事件?

javascript - Angular ng-repeat 过滤器在搜索后取消选中所有复选框

c# - 使用 SWIG 从 C++ 初始化对 C# 共享指针的引用

javascript - Facebook Connect 按钮问题 - 请帮忙

java - 递归和递归方法

python - 使用递归从 python 中的单体列表生成 k-mers

javascript - 如何将异步方法拆分成更小的部分并依次调用它们?