Handlebars: Partials vs Helpers For Templating



我们开始在一些项目中使用Handlebars作为视图层。我们开始遇到两种模板化方法之间的十字路口。我一直在使用分部处理模板&拥有小型HTML模板,如:

<p id="{{name}}">
  <label for="{{name}}Input">{{text}}</label>
  {{#if info}}
    <small>{{info}}</small>
  {{/if}}
  <textarea name="{{name}}" id="{{name}}Input"></textarea>
</p>

另一位开发人员认为我们不应该为此使用分部;相反,我们应该为此创建助手。

我可以看到助手更容易处理输入参数(因为我目前正在使用某种形式的"包含"助手来包含这些带有一些额外变量的部分)。但我不认为你在代码中把HTML写成字符串——我认为你没有正确地把你的关注点分开。我们还在Java中使用Handlebars(通过[Handebars.Java][2]),所以您的HTML在很大程度上是编译代码,而不是简单的编辑视图文件。

是否有一种普遍接受的方法来处理Handlebars中的模板?党派或帮助者,或者还有什么我不知道的吗?

首先,您需要了解,与handlers.java 相比,handlers.js中的分部非常不同

在handlers.js中,您声明自己的分部,并在控制器中随意调用/命名它们(通常),然后在视图中调用它们。在handlers.java中,在您的视图中定义了一个分部,它本质上只是一个带有路径属性的include。包含通常是大多数项目不可或缺的一部分,我认为放弃这样一个重要的功能没有任何好处。

此外,我在许多handlers.js应用程序中看到了"一切都使用助手"的心态,很难很快进行维护。助手是一个很好的功能,但应该谨慎使用。只要可能,使用内置的帮助程序,并尝试以不需要额外抽象逻辑的方式构建数据。

看看你的例子,我认为这正是偏的正确用法。

最新更新