Javascript 有什么我能做的吗';你不喜欢留胡子吗?

Javascript 有什么我能做的吗';你不喜欢留胡子吗?,javascript,mustache,Javascript,Mustache,我在评估 我在想,随着时间的推移,它将如何工作。如果我只是构建一个巨大的对象,那么Mustach是否足以将其转换为任何形式的HTML 所以,我的问题是。有胡子不能做的事吗 (我的想法是,这只是从JSON到HTML的树转换,但我不知道如何验证这一点,或者如何获得足够的信心来反对它) 进一步澄清 假设我所拥有的只是一个巨大的物体,然后我在一次迭代中给了一个小胡子模板;HTML中是否有任何东西不能通过其语言用Mustach表达。因为Mustach在JavaScript中只是一种模板语言,所以您可以用J

我在评估

我在想,随着时间的推移,它将如何工作。如果我只是构建一个巨大的对象,那么Mustach是否足以将其转换为任何形式的HTML

所以,我的问题是。有胡子不能做的事吗

(我的想法是,这只是从JSON到HTML的树转换,但我不知道如何验证这一点,或者如何获得足够的信心来反对它)

进一步澄清


假设我所拥有的只是一个巨大的物体,然后我在一次迭代中给了一个小胡子模板;HTML中是否有任何东西不能通过其语言用Mustach表达。

因为Mustach在JavaScript中只是一种模板语言,所以您可以用JavaScript做任何您已经可以做的事情,并且JavaScript是图灵完成的。所以,不,没有什么是你不能做的胡子;事实上,你在小胡子上做的事情没有JavaScript做不到的,它只是让一些事情变得更方便

在评估这样的事情时,与其确定它能做什么和不能做什么,不如问“它能让我需要做的事情变得容易吗”和“它能让我想避免的错误变得难以犯吗?”

例如,评估它的一种方法是,它是否使避免(XSS)攻击变得容易。根据文档“mustache.js在使用标准的双mustache语法时会逃逸所有值”,因此听起来它在帮助防止此类攻击方面做得不错

为了更好地评估它,您需要提供关于您的需求的更多细节。你想干什么?您需要与什么集成

编辑

即使在你澄清之后,仍然不清楚你在寻找什么。即使将自己限制为以单个视图作为输入来扩展单个Mustach模板,也可以生成任意字符串,从而生成任意HTML,只需将该字符串作为输入即可

如果您询问在给定模板和要渲染的视图的情况下是否可以执行任意计算,那么答案也是肯定的,因为Mustach允许您调用模板中的函数,并且这些函数是用Javascript编写的,这是图灵完成的

但这两个都是微不足道的答案;您可以通过提供任何给定的输出作为输入,也可以通过使用高阶部分进行任何给定的计算。正如我之前所说的,用它可以做的事情不如用它容易做的事情有趣,用它很难犯什么错误


我想有一个弱点,这可能是你正在寻找的类型,那就是如果你需要比胡须系统本身提供更多的功能,你需要将这些功能作为视图的一部分传递进来。因此,您需要将正在显示的对象与将用于显示它的代码合并。如果您删除了从传递到模板的视图中调用Javascript的功能,那么您所能做的就会受到严重限制。考虑到这些对象被称为“视图”的事实,似乎是通过设计将表示逻辑与它们混合在一起;这与允许模板直接从模型对象中提取值的模板系统非常不同。

是的,在Mustach中有许多事情是不能做的。Mustach比其他一些功能齐全的模板系统(如Django中的模板系统)更简单。Mustach是一个非常简单的模板系统,它鼓励您(通过缺乏功能)实现“无逻辑”模板。这意味着您可以在其他模板系统中执行的某些处理必须在修改发送到模板的数据的代码中执行

这不是一个糟糕的模板系统,它只是一个简单快速的最小系统


因此,我想说,这个问题的答案是:“是的,与其他模板系统相比,在胡子上有些事情是你做不到的。”

鉴于这个名字,我希望你能够让女性晕倒,并投掷一个卑鄙的棒球。