编程语言
首页 > 编程语言> > Spring Boot 与 Thymeleaf 和 Bootstrap

Spring Boot 与 Thymeleaf 和 Bootstrap

作者:互联网




Thymeleaf 和 Bootstrap 是开发现代 Web 应用程序的强大技术。在本文中,我们将展示将 Thymeleaf 和 Bootstrap 添加到 Spring Boot 应用程序的步骤。

完整的设置也可以直接在 Bootify Builder 中创建。只需使用open project打开一个项目,选择您的首选项并选择Thymeleaf + Bootstrap作为前端堆栈。如果您不选择前端,则可以手动执行以下所有步骤。
 

将 Themeleaf 添加到我们的应用程序中


Thymeleaf 是 Spring Boot 最常用的模板引擎。由于模板是用有效的 HTML 代码编写的,因此也可以在没有服务器端渲染的情况下打开它们。要设置引擎和所有推荐的实用程序,首先将以下两个依赖项添加到我们的应用程序中。
 
implementation('org.springframework.boot:spring-boot-starter-thymeleaf')
implementation('nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect')
 

为 Thymeleaf 添加新的依赖项


该模块spring-boot-starter-thymeleaf将自动集成模板引擎 - 在下面的控制器中我们已经可以看到它是如何工作的。建议thymeleaf-layout-dialect大多数生产应用程序使用此布局,以便多个页面可以使用相同的布局。我们不需要在这里提供任何版本,因为它们是 Spring Boot 依赖管理插件的一部分。
 
@Controller
@RequestMapping("/todo")
public class TodoController {

    // ...

    @GetMapping
    public String list(final Model model) {
        model.addAttribute("todos", todoService.findAll());
        return "todo/list";
    }

}

  一个简单的 MVC 控制器

我们的简单端点仅显示待办事项列表。为此,所有当前待办事项都会首先从服务加载并添加到模型中。模板"todo/list"已src/main/resources/templates/todo/list.html加载。除非我们进行其他配置,否则该template文件夹是从中选取模板的默认文件夹。
 
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
        layout:decorate="~{layout}">
    <head>
        <title>[[#{todoList.list.headline}]]</title>
    </head>
    <body>
        <div layout:fragment="content">
            <!-- ... -->
            <div th:if="${todoLists.empty}">[[#{todoList.list.empty}]]</div>
            <div th:if="${!todoLists.empty}" class="table-responsive">
                <table class="table table-striped table-hover align-middle">
                    <thead>
                        <tr>
                            <th scope="col">[[#{todoList.name.label}]]</th>
                            <th><!-- --></th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr th:each="todo : ${todos}">
                            <td>[[${todo.name}]]</td>
                            <td>
                                <div class="float-end text-nowrap">
                                    <a th:href="@{/todos/edit/{id}(id=${todo.id})}" class="btn btn-sm btn-info">[[#{todo.list.edit}]]</a>
                                </div>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </body>
</html>

  一个简单的 Thymeleaf 模板

添加模板后list.html,我们已经成功使用 Thymeleaf 和 Bootstrap 类 - 稍后将显示唯一缺少的布局。为了在开发过程中实现真正的热重载,仅仅关闭模板缓存是不够的。本文介绍如何直接从文件系统读取 HTML 文件。


 

使用 WebJars 进行引导集成


Bootstrap 是目前最流行的 CSS 框架,可以使用 WebJars 直接集成到我们的 Spring Boot 应用程序中。为此,我们首先需要另一个依赖项。
 
implementation('org.webjars:bootstrap:5.3.3')

现在,我们可以将 Bootstrap 的 JavaScript 和 CSS 文件包含在我们的代码中,layout.html如下所示。如果需要的src/main/resources/static/js话,可以额外提供我们自己的 JS 或 CSS src/main/resources/static/css。
 
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
    <head>
        <!-- ... -->
        <link th:href="@{/webjars/bootstrap/5.3.0/css/bootstrap.min.css}" rel="stylesheet" />
        <link th:href="@{/css/app.css}" rel="stylesheet" />
        <script th:src="@{/webjars/bootstrap/5.3.0/js/bootstrap.bundle.min.js}" defer></script>
        <script th:src="@{/js/app.js}" defer></script>
    </head>
    <body>
        <main class="my-5">
            <div class="container">
                <!-- ... -->
                <div layout:fragment="content" />
            </div>
        </main>
    </body>
</html>

  将 Bootstrap 文件集成到最小化版本中
 

使用 Webpack 进行 Bootstrap 集成


或者,还可以使用 Webpack 集成 Bootstrap,以定义如何向前端提供 CSS 和 JS 的更复杂的规则。如果Webpack已经准备好了,只需要一条命令就可以添加Bootstrap。
 
npm i --save bootstrap @popperjs/core

但是,由于使用 npm 和 DevServer 设置 Webpack 需要大量解释,因此请查看有关使用 Webpack 设置 Spring Boot 的文章。使用 Webpack 提供了许多优势 - 但也带来了更高的集成工作成本。

在 Bootify 的免费计划中,可以直接在浏览器中初始化包括前端堆栈的 Spring Boot 应用程序,无需注册。带有 Bootstrap 的 Thymeleaf 可以直接通过 WebJars 或通过 Webpack 获得。

标签:Bootstrap,Thymeleaf,Spring Boot
来源: