Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 选择正确的模板引擎_Java_Templates_Frameworks - Fatal编程技术网

Java 选择正确的模板引擎

Java 选择正确的模板引擎,java,templates,frameworks,Java,Templates,Frameworks,从今天起,我一直使用简单的JSP标记和JSTL,这很有效,但现在我正在寻找更多的功能和可能更多的可用性 通过谷歌搜索,我找到了Freemaker、Velocity和Tiles,它们似乎非常有名。你们中是否有人对其中一些有进一步的经验,可以给我一个简短的介绍 或者还有其他值得研究的框架吗 Velocity是java模板引擎的老手,它展示了这一点。这个设计是一个有点僵硬的静态方法,它有点有限,不太可扩展。不过,它工作得非常好,而且。 Freemarker从速度停止的地方开始。它有更多的功能,非常可扩

从今天起,我一直使用简单的JSP标记和JSTL,这很有效,但现在我正在寻找更多的功能和可能更多的可用性

通过谷歌搜索,我找到了Freemaker、Velocity和Tiles,它们似乎非常有名。你们中是否有人对其中一些有进一步的经验,可以给我一个简短的介绍

或者还有其他值得研究的框架吗

Velocity是java模板引擎的老手,它展示了这一点。这个设计是一个有点僵硬的静态方法,它有点有限,不太可扩展。不过,它工作得非常好,而且。 Freemarker从速度停止的地方开始。它有更多的功能,非常可扩展,与SpringMVC集成得非常好。另一方面,我发现模板表达式语言非常独特。 虽然与Struts的任何关联都会让我产生怀疑,但我对Tiles没有任何经验。 在视图呈现方面,我仍然使用JSP和JSTL。在我看来,尽管它们存在种种缺陷,但它们仍然提供了最佳的选择范围

对于我来说,在web层范围外呈现动态文本文档(如SMS或电子邮件模板)时,Freemarker可以轻松获胜

Velocity是java模板引擎的老手,它展示了这一点。这个设计是一个有点僵硬的静态方法,它有点有限,不太可扩展。不过,它工作得非常好,而且。 Freemarker从速度停止的地方开始。它有更多的功能,非常可扩展,与SpringMVC集成得非常好。另一方面,我发现模板表达式语言非常独特。 虽然与Struts的任何关联都会让我产生怀疑,但我对Tiles没有任何经验。 在视图呈现方面,我仍然使用JSP和JSTL。在我看来,尽管它们存在种种缺陷,但它们仍然提供了最佳的选择范围


对于我来说,在web层范围外呈现动态文本文档(如短信或电子邮件模板)时,Freemarker可以轻而易举地获胜。

在我看来,有了模板引擎,越少越好。也就是说,您需要更少的特性,而不是更多的特性,以提高模板的可重用性

一个模板引擎,只提供模板引擎严格需要的功能,不再提供。这不是我个人在生产系统中使用的东西,但我正计划着下一个机会

如果您有兴趣了解更多关于主题/哲学的信息,请阅读StringTemplate的创建者

如果您只阅读了那篇文章中的一部分,请阅读第7章,其中包括我在使用JSP之类的东西时尝试执行的以下规则,可以说这是一个功能强大的引擎:

视图也不能通过直接更改模型来修改模型 数据对象或通过调用 导致副作用的模型。 也就是说,模板可以访问数据 从模型和调用方法,但是 这样的引用肯定会有副作用 自由的这条规则部分产生 因为数据引用必须是 顺序不敏感。见第7.1节。 视图无法对相关数据执行计算 值,因为计算可能会 未来的变化,他们应该 被整齐地封装在模型中 无论如何。例如,视图不能 按以下公式计算图书销售价格: “$price*.90”。独立于 模型,视图无法创建 关于数据含义的假设。 视图无法比较依赖数据值,但可以测试 数据的属性,例如 存在/不存在或长度 多值数据值。测试如
$bloodPressure在我看来,使用模板引擎,越少越好。也就是说,您需要更少的特性,而不是更多的特性,以提高模板的可重用性

一个模板引擎,只提供模板引擎严格需要的功能,不再提供。这不是我个人在生产系统中使用的东西,但我正计划着下一个机会

如果您有兴趣了解更多关于主题/哲学的信息,请阅读StringTemplate的创建者

如果您只阅读了那篇文章中的一部分,请阅读第7章,其中包括我在使用JSP之类的东西时尝试执行的以下规则,可以说这是一个功能强大的引擎:

视图也不能通过直接更改模型来修改模型 数据对象或通过调用 导致副作用的模型。 也就是说,模板可以访问数据 从模型和调用方法,但是 这样的引用肯定会有副作用 自由的这条规则部分产生 因为数据引用必须是 顺序不敏感。见第7.1节。 视图无法对相关数据执行计算 值,因为计算可能会 未来的变化,他们应该 被整齐地封装在模型中 无论如何。例如,视图ca 不 按以下公式计算图书销售价格: “$price*.90”。独立于 模型,视图无法创建 关于数据含义的假设。 视图无法比较依赖数据值,但可以测试 数据的属性,例如 存在/不存在或长度 多值数据值。测试如 $bloodPressure我和Spring MVC一起工作过。虽然速度确实很轻而且易于使用,但它在某种程度上是有限的。我更喜欢使用FreeMarker进行网页呈现,因为现有的大型宏库和JSP包含支持

我还建议对网页进行装饰,以避免模板文件将内容与装饰混为一谈

因此,如果您不需要AJAX页面的幻想,结果是:Freemarker+SiteMesh+SpringMVC。但是,如果您想知道是否使用AJAX,我建议您看看。

我已经与这两种技术以及Spring MVC一起使用过。虽然速度确实很轻而且易于使用,但它在某种程度上是有限的。我更喜欢使用FreeMarker进行网页呈现,因为现有的大型宏库和JSP包含支持

我还建议对网页进行装饰,以避免模板文件将内容与装饰混为一谈

因此,如果您不需要AJAX页面的幻想,结果是:Freemarker+SiteMesh+SpringMVC。但是如果您想知道是否使用AJAX,我建议您看看。

如果您喜欢您可能喜欢的编程语言,因为它允许您使用功能强大的Scala表达式,而不是有限的JSP/JSF/JSTL EL表达式语言,同时完全静态键入,以便在编辑/编译时检查模板是否有错误

Scalate中的模板可以让您编写真正枯燥的模板,这对XML/HTML Rails的粉丝们来说特别好,他们喜欢Haml,Scaml是Haml的Scala端口——不过,如果您习惯JSP,那么最好从Scalate中类似JSP的模板开始编写。

如果您喜欢这种编程语言,您可能也会喜欢它它允许您使用功能强大的Scala表达式,而不是有限的JSP/JSF/JSTL EL表达式语言,同时完全是静态类型,以便在编辑/编译时检查模板是否存在错误


Scalate中的模板可以让您编写非常枯燥的模板,这对于XML/HTML Rails的粉丝们来说特别好,他们喜欢Haml,Scaml是Haml的Scala端口——不过,如果您习惯JSP,那么最好从Scalate中类似JSP的模板开始编写。

感谢分享本文!选一个你不会后悔的,听。也支持这一理念,尽管你会得到更多的绳子和一个温和的警告,不要用它吊死自己。谢谢分享这篇文章!选一个你不会后悔的,听。也支持这一理念,尽管你会得到更多的绳子和一个温和的警告,不要用它吊死自己。