百里香叶是一种什么样的解决方案?

What kind of a solution is thymeleaf?

我读到如今百里香叶比 JSP 更受欢迎。 thymeleaf 解决了哪个 JSP 不能解决的问题? thymeleaf 与其他模板引擎相比如何?

好吧,这确实是一个基于意见的问题,这就是我的答案:)

主要区别在于 JSP 被编译为 Java servlet 类 而 Thymeleaf 读取模板文件,解析其 DOM 然后将模型应用于它。这引入了性能开销并为 JSP 提供了性能优势,即使启用了 Thymeleaf 的模板缓存也是如此。另一方面,它使 Thymeleaf 更容易开发,原因如下:

  • Thymeleaf 使用纯 HTML 作为其模板。您可以选择具有 data-th 属性的纯 HTML5 方法或原始自定义命名空间 th: 属性。使用普通HTML的好处是可以在浏览器中打开它,这使设计人员的工作更容易:设计人员和开发人员可以在同一个文件上工作。

  • Thymeleaf 模板可以在没有应用程序服务器的情况下使用,它们也可以很好地与嵌入式服务器一起工作。您不必跳过箍来对模板进行集成测试,您可以通过 Thymeleaf's own standalone template testing library 或作为功能测试的一部分来进行,例如Spring MVC 控制器的集成测试。

  • Thymeleaf 具有更轻量级和更强大的语法,并与 Spring 生态系统更好地集成。从概念上讲,它旨在与 Spring 集成,但您也可以在 Spring 之外使用它。我发现它对电子邮件和报告生成很有用。

  • Thymeleaf 模板允许大量重用;您可以创建小的模板片段并在其他模板中重复使用它们,这对于具有大量模板的项目来说是一个救星。它还具有开箱即用的强大布局支持,但如果您需要更多 flexibility/power,您也可以找到 community plugins

免责声明:一年多来我没有进行任何 Thymeleaf 开发,但据我所知,它并没有太大变化。您还可以查看 Spring 中的 this article - 虽然它有点旧,但它确实说明了主要区别。