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 頁面,除了一些表單字段(也許是一些驗證)之外,客戶端幾乎沒有發生任何事情,這就是它的范圍。
添加回答
舉報