令我困惑的是后端服务器怎么可能拥有 HTML 呢?难道呈现不应该由前端的 HTML、CSS 和 JavaScript 处理吗?我甚至看到过教程中他们在控制器中直接输入 HTML 代码作为返回值。
我的理解是后端服务器通过 AJAX 提供 API 给前端使用,然后前端会操作这些数据并将信息呈现在屏幕上。那么,为什么后端要提供 HTML 代码呢?
谢谢。
令我困惑的是后端服务器怎么可能拥有 HTML 呢?难道呈现不应该由前端的 HTML、CSS 和 JavaScript 处理吗?我甚至看到过教程中他们在控制器中直接输入 HTML 代码作为返回值。
我的理解是后端服务器通过 AJAX 提供 API 给前端使用,然后前端会操作这些数据并将信息呈现在屏幕上。那么,为什么后端要提供 HTML 代码呢?
谢谢。
前端将操作这些数据
什么前端?你是指HTML页面中的JavaScript代码吗?它来自哪里?哦,对了,是服务器。
是服务器向客户端提供HTML页面以及任何.js和.css文件。
服务器可以提供静态页面,任何动态内容都由JavaScript处理。或者,服务器可以使用模板引擎 动态 构建HTML页面。
通常不希望JavaScript最初构建页面,而是使用JavaScript处理任何动态行为。有些页面甚至不需要任何动态行为。
除非你在考虑 单页应用程序(SPA),其中只有一个根HTML页面,其他所有内容都是使用JavaScript和AJAX调用在客户端构建的,但大多数Web应用程序都不是SPA。
Thymeleaf通过提供模板引擎,替代了JSP来使用HTML页面。控制器请求HTML文件,Spring Boot在使用提供的Model构建后提供该模板。
Thymeleaf很棒,因为它允许您动态重建模板。例如,您正在前端向用户显示他们的积分,但积分可能会增加或减少。
您可以使用Model在后台构建模板。 Model引用被神奇地提供给解析它的模板。
@RequestMapping(...)
public String request(Model model) {
model.put("points", 5);
return "my-template.html"
}
<html..>
<head>...</head>
<body>
<h1 th:text="${points}"></h1>
</html>
好的,新一代的应用程序和网站可能只需加载/启动/打开一次,然后通过 AJAX 请求拉取或推送数据,这很好,可以节省流量并且速度快。
但事实并非总是如此,有些框架仍然不会在小请求上构建所有内容。Java 中的 Spring 或 PHP 中的 Symfony 是 MVC 框架,使用模板引擎构建页面。这听起来可能有点过时,但仍有许多网站在使用。
如果您为慢速 PC 或其他设备的客户构建 Web 应用程序,并且页面内容性能较重,则可能希望尽可能多地在服务器上处理工作,以便用户不必等待太久。而且您还可以缓存渲染的页面。甚至可以对 React 页面进行服务器端渲染,以加快初始页面加载速度...
使用 Java 和 Spring 时,我只使用了 JSP,我不知道 thymeleaf。只需使用您喜欢的东西,也许是最受支持/记录的东西。
像这样构建网站并不意味着您不能使用 AJAX,但如果使用模板,则需要考虑何时使用它。
过去浏览器很糟糕。JS曾经是一个不错的附加功能,网站相对静态,基本上所有的渲染都是在服务器上完成的。后端从任何地方获取数据并生成完整的HTML页面,客户端除了一些表单字段、可能的验证外,几乎没有什么活动。
javascript
,请编辑。 - Nidhin Joseph