Java 常用模板引擎推荐

此文章发布于 60 个月前,部分信息可能已经过时,请自行斟酌确认。

做 Web 开发离不开模板引擎,想十多年前微酷那时热衷于下载各类网站 CMS 管理系统,第一时间就是看模板支持哪些标签,那时认为内置支持的模板标越多就越牛B,谁让那时不会编程只是个苦逼的草根伪站长呢。

当时就认为动易是最牛逼的 CMS,织梦也很流行但感觉 PHP 好难模板改起来也好复杂...

扯远了,今天的正题是分享下 Java 比较流行的模板引擎,先说下微酷一个也没用过,因为这个月刚开始转研究 Java,之前一直在做 C# 呢。

Jsp

这个必须放到第一位,传统方式,可写 java 代码,支持 jsp 标签,表达式语法,官方标准,丰富的标签库,但这里不推荐。

FreeMarker

官网:https://freemarker.apache.org/

FreeMarker 是一款免费的模板引擎,它不是面向最终用户的,而是一个 Java 类库,是一款程序员可以嵌入他们所开发产品的组件。

模板编写为 FreeMarker Template Language (FTL)。它是简单的,专用的语言, 不是像PHP那样成熟的编程语言。那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。

使用表达式语言,性能不错,内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便。

<!DOCTYPE html>
<html>
<body>
    <h1>Hello ${name}</h1>

    <#-- if 指令-->
    <h1>
        <#if name == "FreeMarkerX">
            Welcome
        <#else>
            Bye~
        </#if>
    </h1>
    
    <table>
        <tr>
            <td>name</td>
            <td>age</td>
        </tr>
        <#-- 遍历列表-->
        <#list list as user>
            <tr>
                <td>${user.username}</td>
                <td>${user.age}</td>
            </tr>
        </#list>
    </table>
</body>
</html>

Thymeleaf

官网:https://www.thymeleaf.org/

Spring Boot 官方推荐模板,Thymeleaf 的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。

静态html嵌入标签属性,浏览器可以直接打开模板文件,便于前后端联调。

听说性能是相当的差,虽然 3.0 号称提供很多,但和其它模板比起来性能还是差。

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf-1</title>
</head>
<body>

     <h1>if 判断</h1>
    <h3>
        <b th:text="${name}"></b>
        <span th:if="${age gt 20}">老年</span>
        <span th:unless="${age gt 20}">少年</span>
    </h3>
    
    <table>
        <tr>
            <td>用户名</td>
            <td>密码</td>
        </tr>
        <tr th:each="user : ${userList}">
            <td th:text="${user.username}">test-username</td>
            <td th:text="${user.password}">test-password</td>
        </tr>
    </table>
</body>
</html>

Velocity

官网:http://velocity.apache.org/

较早出现的用于代替 jsp 的模板,性能良好,据说比jsp性能还要好些,使用表达式语言。

提示:网上人说很久没维护了,实际上最近版本是 2019.03.31 发布的 2.1 版。

可用于代码生成,从模板生成 SQL 等,语法看起来是微酷喜欢的类型。

#set($number = 1)
 
#if($number == 1)
    这个数是 1
#elseif($number == 2)
    这个数是 2
#else
     这个数是3
#end

#foreach ( $item in [1..5] )
    $item
#end

-------------------------------    
#set ( $arr2 = [0..1] )
#set ( $k = 1 )
#foreach ( $x in $arr2 )
    x:$x,k: $k
#set($k = $k+1)
#end
-------------------------------

beetl

官网:http://ibeetl.com/

国产模板引擎,Beetl 类似 Javascript 语法和习俗,只要半小时就能通过半学半猜完全掌握用法。官方号称速度非常的快:Beetl 远超过主流 java 模板引擎性能(引擎性能5-6倍与 freemaker,2倍于JSP)

<%
if(name=='lijzh'||age!=18){
%>
Hello,${name}
<%}else{%>
Morning ${name}
<%}%>

<%
for(user in userList){
%>
${user.name}
<%}%>

<% 
 var date = date();
%>
today is ${date,dateFormat='yyyy-MM-dd'}

Enjoy

官网:http://www.jfinal.com/

JFinal 极速开发框架出品的模板引擎,没大了解,有兴趣自己看下。

前后分离

什么年代了,现在流行前后分离,前后分离还用什么模板引擎,你需要的可能是:前端 UI 控件库

最后修改:2019 年 04 月 29 日 09 : 26 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论