Rails最终用户模板引擎:Liquid vs Mustache vs. Others?

mar*_*eus 11 ruby templates ruby-on-rails liquid mustache

我正在创建一项服务,我希望允许最终用户编辑网页的HTML模板,以允许访问特定的"变量"以包含在模板中.

我知道液体是为这个目的而设计的,是安全的(至少是相对的),并且正在大量生产中使用.但是,与Mustache相比,我发现最终用户的语言相当复杂.

Mustache听起来不错,但我担心安全问题......它曾被用于最终用户模板吗?

基本上我正在寻找一个模板引擎,我可以使用w/Rails为最终用户:

  1. 安全 - 不允许用户执行代码...至少不在服务器上执行.用户将被允许插入客户端javascript.
  2. 功能强大 - 允许最终用户使用提供的"变量"创建几乎任何他们可以想象的网页,并在#1的上下文中
  3. 简单 - 语法清晰,易于最终用户应用
  4. 如果支持在javascript和其他语言中呈现模板语法,则奖励积分.

液体满足1和2,但不满足3-4.小胡子符合2-4,但我不确定#1,这是不容谈判的.

非常感谢任何见解,经验或评论.

Win*_*eld 5

Mustache 非常适合插值,如果您使用它进行 Javascript 评估,我无法想象它会让您面临服务器端漏洞。这是最简单、最强大的选择。我不知道非程序员是否会理解它,但我确信它比 Liquid 更简单。

另一种选择是使用现有的更简单的用户标记集(如 BBcode)或富文本编辑库(如 TinyMCE)。这些功能大大减少,但对普通人来说更容易使用。

  • Winfield,我接受了你的答案,因为我认为它本质上是正确的,使用 Mustache 的安全风险似乎很小。不幸的是,在我的测试中,使用 Mustache 作为最终用户模板引擎所允许的灵活性是有限的。例如,当我需要仅显示第一个结果中的元素时,除非我在服务器上提供逻辑,否则我找不到允许这样做的 Mustache 语法。然而,切换到 Liquid 非常容易,并且提供了我迄今为止所需的最终用户功能......即使语法稍微不太直观。 (3认同)