Spring Boot教程(5) – 模板引擎

模板引擎,是用來生成動態網頁內容的,一旦控制器(Controller)收集了足夠的數據,就會把數據交給模板引擎來處理,模板引擎根據數據生成HTML,返回給瀏覽器。html

Spring Boot支持多種模板引擎(能夠自動配置),包括FreeMarkerThymeleafMustacheGroovy Templates。你可能也知道JSP,被不少人認爲是過期的技術,雖然他仍然能夠完成你大部分的需求,也能夠在Spring Boot中使用,可是已經不被推薦了,具體你能夠參考 爲何Spring Boot不推薦使用JSP?。Thymeleaf如今被不少人採用,他的特色就是能夠直接在瀏覽器中打開模板文件,方便前端開發。FreeMarker使用FreeMarker模板語言(ftl),跟使用JSP或者PHP的感受有點類似,可是他並非通用語言,只專一於在模板中展現數據。Mustache和Groovy Templates一句話兩句話說不太清楚,你們看看例子就好。前端

須要提一句,Spring Boot官方並無默認的模板引擎,上面提到的四種官方都是平等相待的,你須要哪一種,加入對應的Starter就行。另外,模板引擎是用來實現MVC中的V(View)的,若是你的項目是先後端分離的,那就不須要模板引擎。git

先來看一看如何加入他們的依賴:github

哪個適合你,就選擇哪個。選好依賴以後,就能夠工做了,Controller的請求處理方法能夠返回一個String,這個String對象表明了指望的模板文件的名字。那麼模板文件去哪裏找呢?默認狀況下,Spring Boot會將路徑設置爲src/main/resources/templates , 若是你須要名稱爲「home」的模板文件,能夠到這個路徑下尋找前綴爲home的文件,後綴根據不一樣的模板引擎,會不同。好比Thymeleaf直接用html,FreeMarker使用ftl,Mustache使用mustache,Groovy Templates使用tpl。spring

圖中的home方法,告訴框架它須要使用homt.ftl生成網頁。若是home方法返回的是字符串「pages/home」,那麼框架會去templates下的pages目錄查找模板文件。更深的路徑以此類推。apache

下面的兩張圖演示瞭如何傳遞數據給模板引擎,以及這四種模板引擎是如何把數據展現出來的。home方法多了個Model參數,傳遞給模板引擎的數據,都經過Model對象添加。模板引擎根據「list」和「title」這兩個名稱來定位數據,顯示出來:後端

從圖中能夠一窺他們的區別。建議你們用FreeMarker或者Thymeleaf,畢竟用的人比較多,出現問題了方便解決。我我的比價傾向於使用FreeMarker,展現數據的邏輯和DOM是分開的,比較符合直覺。Thymeleaf是將控制的邏輯放到了標籤裏,腦子裏還得繞個彎,另外其聲稱優點並非很明顯。瀏覽器

這四種模板引擎都有屬性去控制是否打開緩存。緩存意味着運行的時候只解析一次,後續直接用就行,這種緩存在生產環境能夠提升運行效率,不過在開發環境,你可能會常常更改頁面,這時緩存就沒有必要了。下圖列出了幾個模板引擎控制緩存的屬性,以及其默認值:緩存

很奇怪他們的默認值還不太同樣,我再看了下Spring Boot的官方文檔,的確有的開有的關。我在《Spring in Action,Fifth Edition》中看到,做者說默認狀況下,這些屬性的值都是true,也就是緩存是默認開開的。我都不知道該信誰了,仍是相信代碼吧,寫了代碼驗證了下,的確跟官方文檔的描述是一致的。如今網絡上的博文,各類說法都有,若是你想避免這種不肯定性,建議針對開發環境和生成環境,分開寫配置,兩邊一個開,一個關。網絡

原文連接: fookwood.com/spring-boot…

相關文章
相關標籤/搜索