Chapter01 Java常用引擎模板
JavaWeb领域,.net Web领域早期,确切的说是在"前后端分离"日益火爆的当下之前的一段,并没有很久的时间里,模板引擎一直为大众所使用。JSP、ASP、Razor等等
1. Jsp
这个必须放到第一位,传统方式,可写 java 代码,支持 jsp 标签,表达式语法,官方标准,丰富的标签库,但这里不推荐。
2. FreeMarker
官网:https://freemarker.apache.org/
FreeMarker 是一款免费的模板引擎,它不是面向最终用户的,而是一个 Java 类库,是一款程序员可以嵌入他们所开发产品的组件。
模板编写为 FreeMarker Template Language (FTL)。它是简单的,专用的语言, 不是像PHP那样成熟的编程语言。那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。
使用表达式语言,性能不错,内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便。
Hello ${name}
<#-- if 指令--><#if name == "FreeMarkerX"> Welcome <#else> Bye~ #if>
name | age |
${user.username} | ${user.age} |
3. Thymeleaf
官网:https://www.thymeleaf.org/
Spring Boot 官方推荐模板,Thymeleaf 的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。
静态html嵌入标签属性,浏览器可以直接打开模板文件,便于前后端联调。
听说性能是相当的差,虽然 3.0 号称提供很多,但和其它模板比起来性能还是差。
Thymeleaf-1 if 判断
老年 少年
用户名 | 密码 |
test-username | test-password |
4. 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-------------------------------
5. 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'}
6. Enjoy
官网:http://www.jfinal.com/
JFinal 极速开发框架出品的模板引擎,没大了解,有兴趣自己看下。
7. 前后分离
《Bootstrap3-buleprints》、《Bootstrap4-blueprints》两本书籍中,详细介绍了如何使用Bootstap进行前端项目的开发。
《Vue.js实战》提供了前端模板引擎的流行做法。
各种层出不穷的UI控件库,让前端开发不再是后端人员无法企及的领域。这就是开源和可持续设计的魅力。
总结
引擎模板说白了就是后端领域人员,在纯后端团队中建立中小型项目时,不用再找一群前端人员做前端开发的捷径。早期出现时,也许能够提高些许的开发效率,但做出来的东西基本都缺少页面的鲜活感,也是一锤子的买卖,二次升级和开发几乎不可能。实际上,正是因为本就是建立在后端框架之下的前端实现,"从娘胎里"就非常不符合软件开发高内聚低耦合的基本规范,只能适时的退出了主流市场。
这些模板引擎的早期支持者或者技术持有者们,有些人甚至还怀着自己会别人不会的态度,为了提高技术壁垒,遮遮掩掩,希望掌握行业技术话语权,而忽略让技术开源并大范围推广,最终导致本应占据市场主体的技术断送在这些自视甚高的技术持有者手里。实际上这些模板引擎技术,其实并不优雅,有些甚至如鸡肋般有碍观瞻,影响效率。即便如此又不愿接收开源所带来的优化,最终胎死腹中。所以,拥有技术应当心怀敬畏,勇于并勤于开源分享。自视甚高只能自取灭亡。放眼中国,迫于无法跟进技术迭代而终结技术职业生涯者比比皆是,留下来的又有多少是溜须拍马的达人,为人处世的背书家,亦使后人复哀后人。
以上内容主体参考:Java 常用模板引擎推荐 - 微酷网 (weiku.co)