东西好不好,先比一下功能,拿目前最流行的Freemarker来做比较
完全参考了
Freemarker
官方文档(
2.3.19
)
第一列是freemarker官方文档目录,第二列是表示
beetl
中是否具有同样的功能
通过下列表格,可以看出绝大部分功能,
beetl
都是支持的
功能
|
是否支持
|
备注
|
1.1
简介
|
支持
|
|
1.2
模板
+
数据模型
=
输出
|
支持
|
|
1.3
数据模型一览
|
支持
|
|
1.4.1
简介
|
支持
|
|
1.4.2 (.1--.4)
指令示例
|
支持
|
Beetl
中,采用includeFileTemplate
标签来include
一个文件。Beetl
中还支持switch/case
|
1.4.2.5
处理不存在的变量
|
支持
|
不支持询问变量是否存在,
但可以通过扩展函数来支持
|
2.1
基本内容
|
支持
|
|
2.2.1
类型
简介
|
大部分支持
|
很少使用的节点类型
不支持
|
2.2.2
标量
|
支持
|
|
2.2.3
容器
|
支持
|
|
2.2.4
方法和函数
|
支持
|
可以通过扩展函数来间接支持
|
2.2.5
其它(节点类型)
|
不支持
|
|
3.1
总体结构
|
支持
|
|
3.2
指令
|
支持
|
|
3.3
表达式
|
支持
|
集合操作不支持,但可以通过扩展函数来实现集合操作。
截取字符串也不是内置的,但可以通过扩展函数来实现,如str.subString
|
3.3.3.1
字符串
|
支持
|
|
3.3.3.2
数字
|
支持
|
|
3.3.3.3
布尔值
|
支持
|
|
3.3.3.4
序列
|
支持
|
采用js
语法的json
格式支持。但不包括支持
start
..end
这样的方式
|
3.3.3.5
哈希表
|
支持
|
|
3.3.4
检索变量
|
支持
|
|
3.3.5
字符串操作
|
不支持
|
此语法很奇怪,只能说freemaker
复杂了语法
|
3.3.5.2
获取一个字符
|
支持
|
通过扩展函数支持
|
3.3.6.1
序列操作
连接
|
支持
|
通过扩展函数支持
|
3.3.6.2
序列切分
|
支持
|
通过扩展函数支持
|
3.3.7
哈希表操作
连接
|
支持
|
|
3.3.8
算数运算
|
支持
|
|
3.3.9
比较运算
|
支持
|
|
3.3.10
逻辑操作
|
支持
|
|
3.3.11
内建函数
|
支持
|
|
3.3.13
处理不存在的值
|
支持
|
通过扩展函数支持
|
3.3.13.1
默认值
|
部分支持
|
|
3.3.13.2
检测不存在的值
|
支持
|
|
3.3.14
括号
|
支持
|
|
3.3.15
表达式中的空格
|
支持
|
|
3.3.16
操作符的优先级
|
支持
|
无
数字范围
这个概念
|
3.4
插值
|
支持
|
|
4.1
自定义指令
(宏)
|
支持
|
间接通过标签等支持
|
4.1.4
嵌套内容
|
支持
|
Beetl
中主要用在layout
标签里
|
4.1.5
宏和循环变量
|
支持
|
|
4.2
在模板中定义变量
|
支持
|
|
4.3
命名空间
|
部分支持
|
通过扩展函数支持,
|
4.4
空白处理
|
支持
|
Beetl
中不需要此额外功能
|
4.5
替换(方括号)语法
|
支持
|
|
东西好不好,再比一下性能,那被公认为性能良好的Freemarker做比较
性能比较
单线程:
还是以常用模板为准(大小6K
),循环渲染50000
次,需要时间(毫秒为单位)如下
Beetl1.2M1
解释执行方式(普通模式),运行三次,分别 1356,1365,1348
Beetl1.2M1
编译执行方式(普通模式),运行三次,分别 913,922,905
Freemarker
分别是 1155,1130,1122
Beetl1.2M1
允许字节流优化,解释方式执行三次,分别是 587,605,610
Beetl1.2M1
允许字节流优化,编译方式执行三次,分别是 385,355,370
简而言之,对beetl
做运行时编译,byte
输出设定后,渲染5
万次6K
的模板,性能如下
Freemarker
|
Beetl
|
1140
毫秒
|
370
毫秒
|
及时不对beetl
做任何优化,性能也与Freemarker
持平
最后,向给位有志从事开源开发的朋友号召,无论你是工作10+年的老手,还是在学习就读的学生,如果愿意从事beetl开发和维护,我非常欢迎。我用了很多业余的精力去一个人搞一个开源的方方面面的工作,感到非常费神。我希望找一个能力突出,愿意去维护beetl开源的人。有想法可以留言。
分享到:
相关推荐
### Velocity与FreeMarker的区别 在IT领域特别是Java开发中,模板引擎是不可或缺的一部分,它们用于将数据模型转换为HTML、PDF、Word文档等格式。在众多模板引擎中,Velocity和FreeMarker是两种非常受欢迎的选择。...
与其他Java模板引擎相比,Beetl具备功能全面、语法直观、性能极高的特点,它还支持HTML标签,易于维护,特别适合于需要快速响应的大网站和复杂的CMS管理系统。Beetl的核心特性可以概括为以下几点: 1. 功能完备:...
4、易于整合:Beetl 能很容易的与各种 web 框架整合,如 Spring MVC,JFinal,Struts,Nutz,Jodd,Servlet 等。 5、支持模板单独开发和测试,即在 MVC 架构中,即使没有 M 和 C 部分,也能开发和测试模板。 6、扩展...
在IDE支持方面,Beetl可以很好地与各种开发环境集成,提供代码提示和自动完成功能,提升了开发体验。对于MVC架构,Beetl能够很好地配合Spring MVC、JFinal、Struts、Nutz以及Jodd等框架,实现高效的视图层渲染。 ...
Beetl是一款功能完备、语法直观、性能超高的新一代Java模板引擎,其版本为2.7.14。相较于其他Java模板引擎,Beetl在语法设计、性能表现、易用性等方面具有诸多优势。接下来,我们将详细探讨Beetl的关键知识点。 ###...
根据性能比较,Beetl的引擎性能是Freemarker的5-6倍,JSP的2倍。 4. 易于整合:Beetl可以轻松整合到多种web框架中。 5. 支持模板单独开发和测试:即使在没有M和C部分的MVC架构中,也能进行模板的开发和测试。 6. ...
2. **功能全面**:Beetl提供了与Freemarker相当的功能,包括控制语句、占位符、变量定义、算术和逻辑表达式、循环、条件判断、函数调用、格式化等。此外,它还具备一些独特的功能,如自定义占位符、控制语句符号、...
Beetl是一款功能全面、语法直观、性能优越且易于维护的Java模板引擎,当前版本为2.8.3。相较于其他模板引擎,Beetl的语法与JavaScript类似,便于用户快速学习和掌握。其独特优势包括: 1. 功能完备性:Beetl不仅...
Beetl的附录部分列出了函数、格式化函数、标签、与Freemarker的功能对比以及性能比较等信息。 Beetl的扩展包功能强大,可以自定义函数和格式化函数,以及使用标签等。Beetl还提供了宏支持和空格处理方法。 Beetl的...
- **全面性**: 支持大多数流行的模板引擎的功能,比如FreeMarker。 - **高性能**: 在优化模式下,性能优于多数模板引擎。 - **创新性**: 提供了诸如自定义占位符、控制语句符号等功能。 - **灵活性**: 兼容松散的MVC...
Beetl的性能表现卓越,其引擎性能是主流Java模板引擎FreeMarker的5-6倍,是JSP的2倍。这得益于宏观上的渲染引擎优化、IO二进制输出、字节码属性访问增强,以及微观上的上下文Context一维数组保存、静态文本合并处理...
2. **与FreeMarker比较**:FreeMarker也是常用的Java模板引擎,但Beetl的语法更接近自然语言,且提供了更多的内置功能。 3. **与Velocity比较**:Velocity的语法与Beetl类似,但Beetl在性能和扩展性上有优势。 **...
Beetl与FreeMarker、Velocity等其他Java模板引擎相比,其优势在于语法简洁、性能优越。然而,选择哪个模板引擎取决于项目需求和个人喜好,每种引擎都有其适用场景。 8. **应用场景** Beetl常用于Java Web开发,...
Beetl模板引擎是由中国的开源社区开发,它在设计上吸取了其他模板引擎的优点,如FreeMarker、Velocity等,并在性能、易用性、功能全面性等方面有所提升。Beetl支持丰富的语法结构,包括表达式、控制语句、函数、...
关于性能:通过与主流模板引擎Freemarker,Velocity以及JSP对比,Beetl均远高于前面三个,这是因为宏观上,通过了优化的渲染引擎,IO的二进制输出,字节码属性访问增强,微观上,通过一维数组保存上下文,合并静态...
该项目是一款基于SpringBoot2和Freemarker技术的代码生成器源码,包含202个文件,涵盖47个FTL模板、32个CSS样式文件、31个JavaScript脚本文件、25个Java类文件、9个HTML文件、8个PNG图像文件、7个映射文件、6个YAML...
在Spring MVC中,可以与Thymeleaf或FreeMarker等其他模板引擎一起使用,为开发者提供灵活的视图渲染选项。 至于JSON,它是网络传输数据的一种常见格式,Spring MVC通过Jackson或Gson库,可以轻松地进行JSON对象的...
JPA(Hibernate数据库CRUD),Mybatis(数据库CRUD),Mybatis(Mybatis数据库CRUD),thymeleaf(模板解析),beetl(模板解析),freemarker (模板解析),enjoy(模板解析),并包含一些整合多个功能模块的090-...
Beetl在设计上借鉴了JSP和Freemarker等模板语言的优点,同时在性能和功能上进行了优化,使其成为Java开发者的一个优秀选择。 Beetl的核心特性包括: 1. **简洁的语法**:Beetl的模板语法简洁明了,如`${expression...