内容简介:Enjoy Template Engine 采用独创的 DKFF (Dynamic Key Feature Forward) 词法分析算法以及独创的DLRD (Double Layer Recursive Descent) 语法分析算法,极大减少了代码量,降低了学习成本,并提升了用户体验。 与...
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.8 最重要的改进是引入动态编译技术性能提升 12.9%,性能碾压 Freemarker、Velocity、Thymeleaf, 以下是 Intel Core i7 2.2G 机器上的性能测试结果:
Enjoy 的性能是 Thymeleaf 的 9.68 倍,是 Freemarker 的 3 倍,是 Velocity 的 2.86 倍,由于 Freemarker、Velocity、Thymeleafe 不支持 byte 模式,以上仅测试了 char 模式,在 byte 模式下 enjoy 性能将领先更多倍数。
以上测试使用 Java 基准测试框架 JMH,测试源码:
https://gitee.com/jfinal/template-benchmark
注意:Enjoy 的运行时编译技术仍然支持动态类型,某些模板引擎在使用 asm/cglib 运行时修改字节码优化性能以后不再支持动态类型,是得不偿失的做法,因为动态类型是现代模板引擎必须的特性
Enjoy 4.8 changelog:
1:新增 FastFieldGetter,支持动态类型的前提下性能提升 12.9%
2:添加 Engine.setFastMode(boolean),用于配置极速模式
3:新增 addDirective(.., .., boolean keepLineBlank) 方法,支持指令独占一行时保留前后空白字符:与输出指令 #() 行为一样
4:#date、#number、#escape 等输出型指令,配置成 keepLineBlank = true
5:优化注释对输出格式的影响,注释与指令处于同一行时保留行尾的换行字符(注释处在独立行时无此问题)
6:优化 FastStringWriter 性能
7:ByteWriter、CharWriter 递归优化为 while 循环
8:优化 #escape 指令性能,StringBuilder 字符串拼接改为直接向 Writer 输出
9:输出指令 Output 去掉对 Boolean 类型的判断
10:添加 Engine.removeSharedObject(...) 方法,可配合 addSharedObject(...) 支持动态切换共享对象,适用更多应用场景
11:添加 JdkEncoderFactory 方便配置 Engine.setToJdkEncoderFactory() 支持 utf8mb4 编码的 emoji 表情
12:改进 Utf8Encoder,在极端情况下碰到无法编码的字符时,抛异常改为输出问号,提升用户体验
13:EngineConfig.getSharedObjectMap() 改为 public 可见性
14:Template 添加无参 renderToString() 方法
15:添加 NullMethodInfo,简化代码提升性能
16:Scope 中的 getGlobal、setGlobal、removeGlobal 支持顶层 data 为 null
17:#set 系列指令放开对于自增、自减表达式的使用限制
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 中间人攻击,HTTPS 也可以被碾压
- 碾压 Python!为什么 Julia 速度这么快?
- 为什么Linux CFS调度器没有带来惊艳的碾压效果?
- 20项任务全面碾压BERT,CMU全新XLNet预训练模型屠榜(已开源)
- t-io 3.0.3:TFB 压测被 actframework 碾压过后的简单抵抗
- 飘刃 0.1.1 发布,速度碾压 Vue-CLI 的轻量级 Vue 项目构建工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。