转载

Enjoy 3.6 发布,Java 开发者专用超轻量级模板引擎

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 3.6 继续进行了增强与细致打磨,主要变化有:

1、添加 #switch 指令

#switch 指令特色之一是 #case 分支支持多参数:

#switch (month)
  #case (1, 3, 5, 7, 8, 10, 12)
    #(month) 月有 31 天
  #case (2)
    #(month) 月平年有28天,闰年有29天
  #default
    月份错误: #(month ?? "null")
#end

如上代码所示,#case 分支指令支持以逗号分隔的多个参数,这个功能就消解掉了 #break 指令的必要性,所以 enjoy 模板引擎是不需要 #break 指令的。

特色之二是 #case 参数支持任意表达式:

#case (a, b, x + y, "abc", "123")

上述代码中用逗号分隔的表达式先会被求值,然后再逐一与 #switch(value) 指令中的 value 进行比较,只要有一个值与其相等则该 case 分支会被执行。

#case 支持逗号分隔的多参数,从而无需引入 #break 指令,不仅减少了代码量,而且避免了忘写 #break 指令时带来的错误隐患。

2、添加 #call 指令,可动态调用模板函数

使用 #call 指令,模板函数的名称与参数都可以动态指定,提升模板函数调用的灵活性,用法如下:

#call(funcName, p1, p2, ..., pn)

上述代码中的 funcName 为函数名,p1、p2、pn 为被调用函数所使用的参数。如果希望模板函数不存在时忽略其调用,添加常量值 true 在第一个参数位置即可:

#call(true, funcName, p1, p2, ..., pn)

3、其它改进

放开 field 取值表达式对于 getField()、getMethod() 的调用

添加 removeForbidenClass 与 removeForbidenMethod 方法

ByteWriter.close()、CharWrite.close() 去掉 flush() 调用

添加 FieldGetter 抽象,可任意扩展 obj.field 表达式的取值方式

更多详情移步 enjoy 官方文档: https://www.jfinal.com/doc/6-1

原文  https://www.oschina.net/news/104141/enjoy-3-6-released
正文到此结束
Loading...