1. 程式人生 > >jsp、freemarker、velocity、thymeleaf頁面方案分析

jsp、freemarker、velocity、thymeleaf頁面方案分析

springboot1.5開始已經不支援velocity,牛客網高階專案還在使用velocity,這一點一點要注意,自己想辦法解決。

1、概述
在java領域,表現層技術主要有三種, 
(1)jsp; 
(2)freemarker; 
(3)velocity; 
(4)thymeleaf;

2、jsp
優點: 
1、功能強大,可以寫java程式碼 
2、支援jsp標籤(jsp tag) 
3、支援表示式語言(el) 
4、官方標準,使用者群廣,豐富的第三方jsp標籤庫 
5、效能良好。jsp編譯成class檔案執行,有很好的效能表現 
缺點: 
jsp沒有明顯缺點,非要挑點骨頭那就是,由於可以編寫java程式碼,如使用不當容易破壞mvc結構。

3、freemarker
FreeMarker是一個用Java語言編寫的模板引擎,它基於模板來生成文字輸出。FreeMarker與Web容器無關,即在Web執行時,它並不知道Servlet或HTTP。它不僅可以用作表現層的實現技術,而且還可以用於生成XML,JSP或Java 等。

目前企業中:主要用Freemarker做靜態頁面或是頁面展示 
優點: 
1、不能編寫java程式碼,可以實現嚴格的mvc分離 
2、效能非常不錯 
3、對jsp標籤支援良好 
4、內建大量常用功能,使用非常方便 
5、巨集定義(類似jsp標籤)非常方便 
6、使用表示式語言 
缺點: 
1、不是官方標準 
2、使用者群體和第三方標籤庫沒有jsp多

選擇freemarker的原因: 
1、效能。velocity應該是最好的,其次是jsp,普通的頁面freemarker效能最差(雖然只是幾毫秒到十幾毫秒的差距)。但是在複雜頁面上(包含大量判斷、日期金額格式化)的頁面上,freemarker的效能比使用tag和el的jsp好。 
2、巨集定義比jsp tag方便 
3、內建大量常用功能。比如html過濾,日期金額格式化等等,使用非常方便 
4、支援jsp標籤 
5、可以實現嚴格的mvc分離

4、velocity
優點: 
1、不能編寫java程式碼,可以實現嚴格的mvc分離 
2、效能良好,據說比jsp效能還要好些 
3、使用表示式語言,據說jsp的表示式語言就是學velocity的 
缺點: 
1、不是官方標準 
2、使用者群體和第三方標籤庫沒有jsp多。 
3、對jsp標籤支援不夠好

5、thymeleaf
Thymeleaf是個XML/XHTML/HTML5模板引擎,可以用於Web與非Web應用。

Thymeleaf的主要目標在於提供一種可被瀏覽器正確顯示的、格式良好的模板建立方式,因此也可以用作靜態建模。你可以使用它建立經過驗證的XML與HTML模板。相對於編寫邏輯或程式碼,開發者只需將標籤屬性新增到模板中即可。接下來,這些標籤屬性就會在DOM(文件物件模型)上執行預先制定好的邏輯。Thymeleaf的可擴充套件性也非常棒。你可以使用它定義自己的模板屬性集合,這樣就可以計算自定義表示式並使用自定義邏輯。這意味著Thymeleaf還可以作為模板引擎框架。

thymeleaf優點:靜態html嵌入標籤屬性,瀏覽器可以直接開啟模板檔案,便於前後端聯調。springboot官方推薦方案。thymeleaf缺點:模板必須符合xml規範,就這一點就可以判死刑!太不方便了!js指令碼必須加入/
---------------------