我正在评估http://github.com/janl/mustache.js
而且我正在考虑随着时间的推移,它将如何随着时间的推移而发挥作用.如果我只是构建一个巨大的对象,是否足以将其转换为任何形式的HTML?
所以,我的问题是.小胡子有什么不能做的吗?
(我的想法是它只是从JSON到HTML的树转换,但我不确定如何验证它或获得足够的信心来对它下注)
进一步澄清
假设我所拥有的只是一个巨大的物体,然后我在一次迭代中给了一个胡子模板; 什么是HTML中的任何东西,不能通过其语言表达胡子.
由于Mustache只是JavaScript中的一种模板语言,因此您可以执行任何您已经可以在JavaScript中执行的操作,并且JavaScript是Turing完成的.所以,不,没有什么是你不能在胡子做; 事实上,你在Mustache中无法做任何事情,你无法在JavaScript中做到这一点,它只是让一些事情变得更方便.
在评估这样的事情时,不要确定它能做什么和不能做什么,而是要问"它能让我需要做的事情变得容易",并且"它是否会让我想避免难以做出的错误更有用" ".
例如,评估它的一种方法是,是否可以轻松避免跨站点脚本(XSS)攻击.根据文档"mustache.js在使用标准双胡子语法时确实逃避了所有值",因此听起来它确实能够帮助防止这些类型的攻击.
为了更好地评估它,您需要提供有关您的要求的更多详细信息.你想做什么?你需要整合什么?
编辑
即使在您澄清之后,仍然不太清楚您在寻找什么.甚至限制自己使用单个视图作为输入扩展单个Mustache模板,您可以生成任意字符串,因此只需将该字符串作为输入即可生成任意HTML.
如果你问是否可以在给定模板和渲染视图的情况下执行任意计算,那么答案也是肯定的,因为Mustache允许你在模板中调用函数,而这些函数是用Javascript编写的,图灵完成了.
但这两个都是微不足道的答案; 您可以通过提供输入来生成任何给定的输出,或者您可以使用更高阶的部分执行任何给定的计算.正如我之前所说,可以用它做的事情比用它容易做的事情没有那么有意思,而且用它来做什么错误也很难.
我想一个弱点,可能是您正在寻找的类型,如果您需要比Mustache系统本身提供的更多功能,您需要将这些功能作为视图的一部分传递.因此,您需要将正在显示的对象与将用于显示它的代码混淆.如果您删除了从传递到模板的视图中调用Javascript的功能,那么您会严格限制您可以执行的操作.鉴于这些对象被称为"视图"这一事实,似乎是在设计中将表示逻辑与它们混合在一起; 这与模板系统非常不同,在模板系统中,模板允许模板直接从模型对象中提取值.