使用Backbone.js的小胡子有什么优缺点?

时间:2012-01-10 16:25:05

标签: backbone.js underscore.js mustache

我正在学习backbone.js我正在处理的Rails 3应用程序。 Backbone使用underscore,我相信它内置了自己的模板引擎。

我读过关于胡子的好东西,但是想知道我是否应该考虑使用它而不是下划线的内置模板引擎?

你有什么想法?

由于

3 个答案:

答案 0 :(得分:32)

我的第一个企业级骨干应用程序已经过了一半。我目前正在使用内置模板的下划线,因为当我开始学习的方式是使用下划线时...我不一定对它们有任何问题。所有的模板解决方案都非常简单。

我已经查看过其他一些解决方案,并考虑转换,但仅仅是因为我认为其他一些解决方案看起来更清晰。此外,一些解决方案还具有更多功能。

我喜欢胡子,因为它的语法较短。看起来更干净但是,如果我切换,我想我会选择Handlebars.js。

Handlebars具有相同的短语法,以及大量其他功能,例如自定义帮助程序方法和模板中的设置对象上下文。看看here。如果我在项目开始时就知道了把手,我肯定会跳过它。

我不会像其他人提到的那样增加另一个依赖关系。完成正确的骨干应用程序无论如何都会快速闪电。 :D

如果您有任何其他问题,请与我们联系。我一直非常喜欢骨干,所以我正试着看标记的帖子。不过实话说。把手看起来合法。

编辑:

我还想补充说,把手的文件看起来比下划线更合法......

答案 1 :(得分:18)

我能想到的最大的问题是,您正在添加另一个库来执行您的依赖项已经执行的操作。如果语法是您最关心的问题,则以下代码段将告诉下划线使用类似的语法。

_.templateSettings = {
  evaluate : /\{\[([\s\S]+?)\]\}/g,
  interpolate : /\{\{([\s\S]+?)\}\}/g
};

答案 2 :(得分:3)

问题是Rails,但没有标记;因此con与使用类似胡须的语法(如django的模板)的语言冲突。

如果django模板首先解析一个块,它将在编写JS之前尝试填充{{ }}块。

我正在使用verbatim django模板标记忽略{{}}块来解决问题,但我现在希望我使用默认的<%=%>语法,这样我就不必明确了转义django模板引擎中写的这些块。