5 回答

TA貢獻1829條經(jīng)驗 獲得超6個贊
前端將操縱這些數(shù)據(jù)
什么前端?你指的是 HTML 頁面中的 JavaScript 代碼嗎?那個是從哪里來的?哦,對了,服務器。
它是向客戶端提供HTML 頁面以及任何 .js 和 .css 文件的服務器。
服務器可以提供靜態(tài)頁面,任何動態(tài)頁面都由 JavaScript 處理。或者,服務器可以使用……您猜對了……模板引擎來動態(tài)構建 HTML 頁面。
您通常不希望 JavaScript 最初構建頁面,只是為了使用 JavaScript 處理任何動態(tài)行為。有些頁面甚至不需要任何動態(tài)行為。
當然,除非您正在考慮單頁應用程序(SPA),其中只有一個根 HTML 頁面,而其他所有內(nèi)容都是通過 JavaScript 和 AJAX 調用在客戶端構建的,但大多數(shù) Web 應用程序都不是 SPA。

TA貢獻1829條經(jīng)驗 獲得超7個贊
我知道到目前為止這個問題已經(jīng)得到了相當有效的回答,但我想補充兩點,因為我經(jīng)常與 Thymeleaf 一起工作。
考慮模板引擎的最簡單方法是,它允許基于控制器方法傳遞給它的信息對 html 進行一些動態(tài)開發(fā)。這允許您添加通常不存在的邏輯,或者說如果用戶可能登錄到管理員,則顯示特定部分。
如果網(wǎng)頁是房子,html 是框架,css 是墻壁,Javascript 是燈和電,那么模板引擎幾乎就是建筑師在根據(jù)用戶的需求構建框架之前動態(tài)設計計劃。房子的買家(用戶輸入)。

TA貢獻1798條經(jīng)驗 獲得超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 模板引擎將在后臺構建此模板并將其呈現(xiàn)給用戶,但它將向最終用戶顯示實際的點!希望這會有所幫助。

TA貢獻1828條經(jīng)驗 獲得超13個贊
好的,較新的應用程序和網(wǎng)站可能只需加載/啟動/打開一次,然后通過 AJAX 請求拉取或推送數(shù)據(jù),這很好,它可以節(jié)省流量并且速度很快。
但情況并非總是如此,一些框架仍然不會根據(jù)小請求構建所有內(nèi)容。Java 中的 Spring 或 PHP 中的 Symfony 都是 MVC 框架,并使用模板引擎來構建頁面。這聽起來可能有點過時,但仍然有很多網(wǎng)站在使用它。
如果您為 PC 或其他設備速度較慢的客戶構建 Web 應用程序,并且頁面內(nèi)容對性能要求很高,您可能希望在服務器上執(zhí)行盡可能多的工作,以便用戶不必等待很長時間。您還可以緩存渲染的頁面。甚至還有反應頁面的服務器端渲染,例如使初始頁面加載速度更快......
對于Java和Spring,我只使用JSP,我不知道thymeleaf。只需使用您喜歡的內(nèi)容,也許是最受支持/記錄最多的內(nèi)容。
構建這樣的網(wǎng)站并不意味著您不能使用 AJAX,但如果您使用模板,您需要考慮什么是有意義的。

TA貢獻1835條經(jīng)驗 獲得超7個贊
讓我困惑的是后端服務器怎么會有html?
“后端”必須具有 HTML,因為這是交付給客戶端并由客戶端呈現(xiàn)的內(nèi)容。
后端“服務器”可能只是一個 CDN,傳送 HTML/JS SPA,但仍然有一些東西傳送內(nèi)容到瀏覽器。
也就是說:服務器端渲染仍然是一個問題,并且最近又重新流行起來——React 應用程序可能會在服務器上完成其初始渲染,因此客戶端再次獲得使用 HTML 和關聯(lián)數(shù)據(jù)渲染的頁面,然后開始就像普通的 SPA 一樣。
我的理解是后端服務器通過AJAX公開API供前端使用,前端將操作這些數(shù)據(jù)并將信息呈現(xiàn)在屏幕上,為什么后端要提供html代碼?
因為有些東西需要運行JS來訪問這些API。
一些歷史:
瀏覽器過去很糟糕。JS 曾經(jīng)是一個簡潔的附加組件,站點相對靜態(tài),并且基本上所有渲染都是在服務器上完成的。后端會從它獲取數(shù)據(jù)的任何地方獲取數(shù)據(jù)并生成完整的 HTML 頁面,除了一些表單字段(也許是一些驗證)之外,客戶端幾乎沒有發(fā)生任何事情,這就是它的范圍。
添加回答
舉報