当前位置: 首页 > 知识库问答 >
问题:

推荐的模板引擎,以减少动态内容的冗余(Spring Boot)

萧嘉禧
2023-03-14

我即将重新编写一个web平台,我正在使用SpringBoot/SpringMVC。该平台的一个主要部分是网站。我正在努力决定使用哪个模板引擎。Thymeleaf似乎是被推荐的,而JSP则不被鼓励。我不确定我的要求是否不同寻常,至少在我看来不是这样的:

  • 我不想在不同的模板中重复我自己,它们都应该显示在“主模板/布局”中。

1) 据我所知,使用Thymeleaf时,使用布局是推荐的(仅适用于?)方法然而,在我看来,所有的动态内容仍然可以在每个模板中生成(其中,它使用layout:fragment属性流入布局)。这听起来不太理想,因为这意味着我仍然需要在每个模板中生成布局的动态部分。如果内容(菜单、页脚、twitter提要等)是与实际内容模板分开生成的,那么在Thymeleaf布局中是否无法包含动态内容?

2)JSP似乎能够相当容易地解决这个问题,为布局使用一个自定义标记,该标记具有

3) 如果采用第2)节中所述的方法,我将仅限于将所有Java逻辑放入主布局(页眉、导航、页脚、twitter提要)中包含的模板的JSP中,还是有更好的方法使用类似控制器的类来备份这些存根?

4) 是否有其他模板引擎能够很好地与SpringMVC/SpringBoot集成,这将是比上述任何一个更好的选择?


共有1个答案

端木兴国
2023-03-14

Use可以使用Thymeleaf Ultraq Layout创建一个基本模板,该模板将充当其他模板的装饰器,如下所示:

base-template.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>

  <title layout:title-pattern="$CONTENT_TITLE - $LAYOUT_TITLE">Sample</title>
  <meta name="description" content=""/>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  <!-- all CSS links here -->
</head>


<body>
<div class="container">
  <div class="content">
    <div layout:fragment="page_content">
      <!-- Content from other pages which decorate using this template -->
    </div>
  </div>
</div>

<!-- /.container -->
<!-- All script tags here -->

<th:block layout:fragment="scripts">
  <!-- If you have any page specific scripts -->
</th:block>
</body>
</html>

然后其他页面将使用上述模板作为装饰器,如下所示:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
      layout:decorate="~{base-template}">

<head>
  <title>This page title</title>
</head>

<div layout:fragment="page_content">
  <!-- content for this page -->
</div>

<th:block layout:fragment="scripts">
  <!-- add any scripts related to this page -->
</th:block>
</html>

语法~{base模板}用于Thymeleaf 3之后。

您可以继续使用上述方法,而不必在其他页面上重复导航、页眉和页脚。

 类似资料:
  • 我有一个静态页面,我想有条件地服务于特定的URL 使用spring boot,我可以将页面放置在静态或公共资源目录中,并将其提供给所有人,但如果我想通过功能标志限制或禁用对它们的访问,那么这并不合适 使用模板引擎,我可以将页面作为模板加载,并返回对视图的引用。然而,我的应用程序相当简单,当我不需要模板引擎时,我不想使用模板引擎 我希望能够使用控制器来确定是否提供页面。让控制器返回静态页面的最简单方

  • 具体查看ejs官方文档 https://github.com/mde/ejs

  • 我们自己实现了一个轻量级的模板引擎,不要问为什么不用smart之类的,因为我们认为没有必要为了一个小小的模板引擎而引入smaart这样复杂的实现。你可能会说,smart功能强大,支持各种标签,标签也是很强大,而且还可以对模板引擎进行各种"灵活"的配置... 这里我们觉得有必要说明一下: 框架的内置模板引擎基本上实现了我们日常开中所有常用的标签。 不常用的标签我们也做了巧妙的实现。 我们只提供了扩展

  • 内置模板引擎 视图的模板文件可以支持不同的解析规则,默认情况下无需手动初始化模板引擎。 可以通过下面的几种方式对模板引擎进行初始化。 配置文件 内置模板引擎的参数统一在配置目录的template.php文件中配置,例如: return [ // 模板引擎类型 支持 php think 支持扩展 'type' => 'Think', // 模板路径 '

  • Warning: The packages listed below may be outdated, no longer maintained or even broken. Listing here does not constitute an endorsement or recommendation from the Expressjs project team. Use at your

  • Use the app.engine(ext, callback) method to create your own template engine. ext refers to the file extension, and callback is the template engine function, which accepts the following items as parame