5 回答
TA贡献1829条经验 获得超6个赞
前端将操纵这些数据
什么前端?你指的是 HTML 页面中的 JavaScript 代码吗?那个是从哪里来的?哦,对了,服务器。
它是向客户端提供HTML 页面以及任何 .js 和 .css 文件的服务器。
服务器可以提供静态页面,任何动态页面都由 JavaScript 处理。或者,服务器可以使用……您猜对了……模板引擎来动态构建 HTML 页面。
您通常不希望 JavaScript 最初构建页面,只是为了使用 JavaScript 处理任何动态行为。有些页面甚至不需要任何动态行为。
当然,除非您正在考虑单页应用程序(SPA),其中只有一个根 HTML 页面,而其他所有内容都是通过 JavaScript 和 AJAX 调用在客户端构建的,但大多数 Web 应用程序都不是 SPA。
TA贡献1829条经验 获得超7个赞
我知道到目前为止这个问题已经得到了相当有效的回答,但我想补充两点,因为我经常与 Thymeleaf 一起工作。
考虑模板引擎的最简单方法是,它允许基于控制器方法传递给它的信息对 html 进行一些动态开发。这允许您添加通常不存在的逻辑,或者说如果用户可能登录到管理员,则显示特定部分。
如果网页是房子,html 是框架,css 是墙壁,Javascript 是灯和电,那么模板引擎几乎就是建筑师在根据用户的需求构建框架之前动态设计计划。房子的买家(用户输入)。
TA贡献1798条经验 获得超7个赞
Thymeleaf 通过使用模板引擎提供 HTML 页面来取代 JSP。控制器请求 HTML 文件,Spring Boot 在使用提供的模型构建模板后提供该模板。
Thymeleaf很棒,因为它允许您即时重建模板。假设您在前端显示用户指向他们,但这些点可能会增加或减少。
您可以做的是使用模型在后台构建模板。模型引用神奇地提供给解析它的模板。
@RequestMapping(...)
public String request(Model model) {
model.put("points", 5);
return "my-template.html"
}
然后使用 Thymeleaf 语言将您的对象提供给 HTML 文件,以便在运行时在引擎中进行处理。
<html..>
<head>...</head>
<body>
<h1 th:text="${points}"></h1>
</html>
Spring Boots 模板引擎将在后台构建此模板并将其呈现给用户,但它将向最终用户显示实际的点!希望这会有所帮助。
TA贡献1828条经验 获得超13个赞
好的,较新的应用程序和网站可能只需加载/启动/打开一次,然后通过 AJAX 请求拉取或推送数据,这很好,它可以节省流量并且速度很快。
但情况并非总是如此,一些框架仍然不会根据小请求构建所有内容。Java 中的 Spring 或 PHP 中的 Symfony 都是 MVC 框架,并使用模板引擎来构建页面。这听起来可能有点过时,但仍然有很多网站在使用它。
如果您为 PC 或其他设备速度较慢的客户构建 Web 应用程序,并且页面内容对性能要求很高,您可能希望在服务器上执行尽可能多的工作,以便用户不必等待很长时间。您还可以缓存渲染的页面。甚至还有反应页面的服务器端渲染,例如使初始页面加载速度更快......
对于Java和Spring,我只使用JSP,我不知道thymeleaf。只需使用您喜欢的内容,也许是最受支持/记录最多的内容。
构建这样的网站并不意味着您不能使用 AJAX,但如果您使用模板,您需要考虑什么是有意义的。
TA贡献1835条经验 获得超7个赞
让我困惑的是后端服务器怎么会有html?
“后端”必须具有 HTML,因为这是交付给客户端并由客户端呈现的内容。
后端“服务器”可能只是一个 CDN,传送 HTML/JS SPA,但仍然有一些东西传送内容到浏览器。
也就是说:服务器端渲染仍然是一个问题,并且最近又重新流行起来——React 应用程序可能会在服务器上完成其初始渲染,因此客户端再次获得使用 HTML 和关联数据渲染的页面,然后开始就像普通的 SPA 一样。
我的理解是后端服务器通过AJAX公开API供前端使用,前端将操作这些数据并将信息呈现在屏幕上,为什么后端要提供html代码?
因为有些东西需要运行JS来访问这些API。
一些历史:
浏览器过去很糟糕。JS 曾经是一个简洁的附加组件,站点相对静态,并且基本上所有渲染都是在服务器上完成的。后端会从它获取数据的任何地方获取数据并生成完整的 HTML 页面,除了一些表单字段(也许是一些验证)之外,客户端几乎没有发生任何事情,这就是它的范围。
添加回答
举报