Enjoy 模板引擎,爽爽这三年,妙不可言。
Enjoy Template Engine 采用独创的 DKFF (Dynamic Key Feature Forward) 词法分析算法以及独创的DLRD (Double Layer Recursive Descent) 语法分析算法,极大减少了代码量,降低了学习成本,并提升了用户体验。
与以往任何一款 java 模板引擎都有显著的不同,极简设计、独创算法、极爽开发体验,从根本上重新定义了模板引擎,这里是首版发布时的盛况,传送门:JFinal 3.0 发布,重新定义模板引擎
Enjoy 模板引擎专为 java 开发者打造,所以坚持两个核心设计理念:一是在模板中可以直接与 java 代码通畅地交互,二是尽可能沿用 java 语法规则,将学习成本降到极致。
因此,立即掌握 90% 的用法,只需要记住一句话:JFinal 模板引擎表达式与 Java 是直接打通的。
本次 Enjoy 4.9.02 继续进行了增强与细致打磨,主要变化有:
1、enjoy 新增对中文表达式、变量名、函数名支持
这个需求在底层就是对中文标识符的支持,没想到提出这个需求的同学还挺多,光是 jfinal 俱乐部就有将近 10 人提出想要这个功能。
虽然我自己感觉这需求挺奇葩,但真实需求就必须要打破个人主观偏见,为用户创造价值更重要。
好在 jfinal 极简设计之下,添加这个功能也就 19 行代码的事,10 分钟内打完收工,添加中文标识符支持以后,可以这么来用了:
#(美女.身高)
#define 中文函数名在此()
#(中文变量名在此)
#end
2、#number 指令、算术运算默认使用四舍五入
老版本的舍入默认用的银行家舍入法,这个在欧美用得较多,在国内四舍五入用得多,所以这个功能很重要。
此外,舍入方式可以配置,配置方法如下:
engine.setRoundingMode(RoundingMode);
3、#date 指令支持 LocalDateTime、LocalDate、LocalTime
老版本的 #date 指令只支持 java.util.Date 及其子类,虽说自行扩展也很容易,但官方提供可以进一步节省你的时间专注业务开发。
为了支持 LocalDateTime,索性对 com.jfinal.template.io.Writer 新增了针对 LocalDateTime 的 write 方法,这样便于在扩展 enjoy 指令时更方便处理 LocalDateTime。
4、改进 enjoy 中 Compressor 的压缩算法
代码量减少了将近 50%,可读性更好,性能更高,压缩率更高,压缩 sql 模板格式更美观,sql 压缩配置方法:
activeRecordPlugin.getEngine().setCompressorOn(' ');
与本次同时升级的还有 jfinal 4.9.02、jfinal undertow 2.2、jfinal weixin 2.8、activerecord 4.9.02