我们开始在一些项目中使用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应用程序中看到了"一切都使用助手"的心态,很难很快进行维护。助手是一个很好的功能,但应该谨慎使用。只要可能,使用内置的帮助程序,并尝试以不需要额外抽象逻辑的方式构建数据。
看看你的例子,我认为这正是偏的正确用法。