Jea*_*ash 24
肯定存在一些重叠,但下面有几点需要考虑.考虑它的一种方法是模板就像方法级重用,而TagLibs更方便API级重用.
当您必须格式化特定的显示内容时,模板非常适合.例如,如果您想以特定方式显示域对象,通常在模板中更容易实现,因为您基本上只是用一些来编写HTML.它是可重用的,但我认为它的可重用性有点受限.即如果你有一个模板,你可以在几个页面中使用它,而不是在数百个页面中使用它.
另一方面,taglibs是一个较小的功能单元,但是你很可能在很多地方使用它.在它中你可能会连接字符串,所以如果你想创建一百行HTML,它们就不太方便了.taglibs允许的一个关键特性是注入/与服务交互的能力.例如,如果您需要一段调用身份验证服务并显示当前用户的代码,则只能在TagLib中执行此操作.在这种情况下,您不必担心将任何内容传递给taglib - taglib将从服务中找出它.您也可能在许多页面中使用它,因此拥有一个不需要参数的taglib会更方便.
还有几种taglib,包括允许你在体内迭代的东西,有条件的等等 - 这对模板来说是不可能的.如上所述,精心设计的taglib库可用于创建可重用的API,使您的GSP代码更具可读性.在同一个*taglib.groovy中,您可以有多个标签定义,这是另一个区别 - 您可以将它们全部分组到一个位置,并从一个taglib调用另一个.
另外,请记住,您可以从taglib内部调用模板,或者可以使用模板调用taglibs,这样您就可以根据需要进行混合和匹配.
希望这能为你清理一下,不过真的很多,这就是构造对代码更方便以及重复使用的频率.