Beetl 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Beetl 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Beetl 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 BSD
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发模板引擎
开源组织
地区 国产
投 递 者 闲大赋
适用人群 未知
收录时间 2012-03-05

软件简介

Beetl 是新一代 Java 模板引擎典范。相对于其他 java 模板引擎,具有功能齐全,语法直观,性能超高,开发和维护模板有很好的体验。是新一代的模板引擎。总得来说,它的特性如下:

  • 功能完备:同主流的java模板引擎相比,Beetl具有绝大多数功能。适用于各种应用场景,从对响应速度有很高要求的大网站到功能繁多的CMS管理系统都适合。Beetl本身还具有很多独特功能来完成模板编写和维护,这是其他模板引擎所不具有的。

  • 非常简单:类似Javascript语法和习俗,只要半小时就能通过半学半猜完全掌握用法。拒绝其他模板引擎那种非人性化的语法和习俗。

  • 超高的性能:Beetl 远超过主流java模板引擎性能,如5-6倍于freemarker,2倍于传统jsp技术。而且消耗较低的CPU

  • 易于整合:Beetl能很容易的与各种web框架整合,如Spring MVC,JFinal,Struts,Nutz,Jodd,Servlet等。

  • 支持模板单独开发和测试,即在MVC架构中,即使没有M和C部分,也能开发和测试模板。

  • 扩展和个性化:Beetl支持自定义方法,格式化函数,虚拟属性,标签,和HTML标签. 同时Beetl也支持自定义占位符和控制语句起始符号也支持使用者完全可以打造适合自己的工具包.

 

关于性能

通过与主流模板引擎Freemarker,Velocity以及JSP对比,Beetl均远高于前面三个,这是因为宏观上,通过了优化的渲染引擎,IO的二进制输出,字节码属性访问增强,微观上,通过一维数组保存上下文,合并静态文本,通过重复使用字节数组来防止java频繁的创建和销毁数组,还使用模板缓存,运行时优化等方法。

性能测试来自TEB

关于插件:

插件针对模板应用特性做了优化,除了常规语言特性支持外,还支持静态文本折叠,模板文件快速打开(如第27行单击ccc.btl快速打开),模板文件原生插件和beetl插件切换等功能.

插件介绍和下载

独特功能

Beetl有些功能是发展了10多年的模板引擎所不具备的,这些功能非常利于模板的开发和维护,如下

  1. 自定义占位符和控制语句起始符号,这有利于减小模板语法对模板的倾入性,比如在html模板中,如果定义控制语句符号是,那么,大部分模板文件都能同过浏览器打开。有的使用者仅仅采用了单个符号@ 以及回车换号作为控制语句起始符号,这又能提高开发效率

  2. 可单独测试的模板。无需真正的控制层和模型层,Beetl的模板就可以单独开发和测试

  3. 同时支持较为松散的MVC和严格的MVC,如果在模板语言里嵌入计算表达式,复杂条件表达式,以及函数调用有干涉业务逻辑嫌疑,你可以禁止使用这些语法。

  4. 强大的安全输出,通过安全输出符号!,能在模板变量,变量属性引用,for循环,占位符输出,try-catch中等各个地方提供安全输出,保证渲染正常

  5. 模板变量:运行将模板的某一部分输出像js那样赋值个一个变量,稍后再处理。利用模板变量能完成非常复杂的页面布局(简单的布局可使用layout标签函数)

  6. 类型推测,能在运行的时候推测模板变量类型,从而优化性能,也可以通过注解的方法显示的说明模板变量属性(这是非必须的,但有助于IDE自动提示功能)

  7. 可插拔的设计,错误信息提示,模板引擎缓存机制,模板资源管理,本地调用的安全管理器,严格MVC限制,模板引擎本身都有默认的实现,但又完全可以自定义以适合特定需求

  8. 增强的语法,如#ajax局部渲染,for-elsefor, select-case,安全输出符号! 等,这些语法特别适合模板开发

  9. 性能超高,具有最快的模板解释引擎,同时,又有较低的CPU消耗。适合各类模板引用,如CMS系统,超高访问量的门户系统

Beetl在线体验和代码分享:http://ibeetl.com/beetlonline/

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(63)
发表了资讯
02/07 09:37

Beetl 3.10 发布,Java 模板引擎

本次发布增加了新的语法特性“泛型”,用于说明变量类型。使用var定义的变量,可以申明变量类型 <% var<int> list = [1,2,3]; var<String,String> map = callFun(); var<String,Map<String,User>> map = callFun2(); %> 申明变量类型的格式类似Java的泛型,此申明也类似java泛型一样不会影响实际运行,仅仅作为辅助解释类型用,相当于注释. Beetl语法中使用var关键字的地方,都可以使用泛型格式解释变量的类型,如for...

7
1
发表了资讯
2021/11/22 09:34

Beetl 3.9 发布,Java 模板引擎

修复了3.6版本以来开发模式下模板不自动更新的Bug 增加格式化函数支持LocalDateTime,来自社区的代码 增加SoftReferenceWriter,一定程度上增加Beetl性能 Beetl 是一款全功能,高性能优秀的国产模板引擎,各方面特性领先国外同类引擎技术,可以广泛用于动态页面生成,静态页面生成,代码生成,文本转换,脚本语言和规则引擎等,从 2011 年来一直维护,并得到国内公司用户的赞赏。 Maven <dependency> <groupId>com.ibeet...

5
2
发表了资讯
2021/10/28 10:12

Beetl 3.8.0 发布,Java 模板引擎

本次发布改善了 Function 功能,让 Beetl 在语法解析阶段能定制 Function 增加 LineAware 接口,实现此 Function 的函数,会在调用时候,在参数列表后追加一个所在行的参数,如 debug 函数,可以输出变量和调用时候所在的行 增加 ForceSafe 接口,实现此 Function 的函数,会在调用的时候,参数列表会增加一个安全输出符号,如 isEmpty 函数 isEmpty(user) 会变成 isEmpty(user!) 增加 ChangeInput 接口,更加通用的方式,可以自...

2
1
发表了资讯
2021/09/21 09:46

Beetl 3.7.0.RELEASE,Java 模板引擎

本次发布API有不兼容调整,如果扩展了Program或者ErrorHandler类,需要同步升级 Program类变得可序列化,方便把模板编译结果序列化后保存到第三方缓存里 ErrorHandler 处理模板异常的方法增加一个上下文参数 修复了代表模板错误的ErrorGrammarProgram类重复记录异常栈的Bug Beetl是一款全功能,高性能优秀的国产模板引擎,各方面特性领先国外同类引擎技术,可以广泛用于动态页面生成,静态页面生成,代码生成,文本转换,脚本语言...

1
3
发表了资讯
2021/08/30 22:41

Beetl 3.6.1.RELEASE,Java 模板引擎 Beetl

本次发布有不兼容发布,如果在之前对Beetl模板缓存有配置,需要按照新的方式配置模板缓存 增加了对模板缓存的设置 CACHE=org.beetl.core.impl.cache.DefaultBeetlCache 用户可以实现IBeetlCache,其他可选有 org.beetl.core.impl.cache.LRUBeetlCache, 可以设置一个最大容量,经常访问的模板保留,超过最大容量,不经常访问的模板自动删除,默认保留256个,如果需要配置个数,可以设置CACHE.SIZE=1024或者更大 org.beetl.core...

3
1
发表了资讯
2021/08/06 12:37

Beetl 3.5.0.RELEASE,Java 模板引擎 Beetl

本次发布增加了俩个实用功能 创建模板语法树的时候,可以较为方便的动态添加第一条和最后一条语句,比如最后可以添加一个调试语句,参考MyEngineTest.testEngine 可以根据模板id来动态判断定界符,比如代码生成框架,html结尾的模板可以用定界符『<!--:』 『-->』 ,而Java结尾的模板可以用定界符『//:』 和 『回车』,增强代码生成灵活性。参考MyEngineTest.testDelimeter Beetl是一款全功能,高性能优秀的国产模板引擎,各方面...

2
3
发表了资讯
2021/07/20 10:24

Beetl 3.4.0.RELEASE,Java 模板引擎 Beetl

使用了ANTLR 4.9.2版本,代替4.7.2 百度同学对Beetl代码可读性持续数月的的调整,在这个版本验证发布 代码升级到antlr4.9后,性能测试如下(测试代码:https://gitee.com/xiandafu/template-benchmark) Benchmark (outputType) Mode Cnt Score Error Units Beetl.benchmark 1 thrpt 5 84457.196 ± 1023.689 ops/s Freemarker.benchmark 1 thrpt 5 236...

7
5
发表于开发技能专区
2020/12/17 12:12

Beetl 3.3.1.RELEASE,Java 模板引擎 Beetl

本次发布增强了HTML标签,调整了HTML标签export的含义,允许覆盖模板前面export的变量 <#html:set value="${user.name}" export="name" /> <#html:set value="${user.age}" export="name" /> ${name} 如上html:set 定义了name变量,之前版本不允许再次定义,按照使用者的建议,这次版本发布允许再次定义 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.3.1.RELEASE<...

3
4
发表于数据库专区
2020/12/11 15:19

Beetl 3.3.0.RELEASE,Java 模板引擎 Beetl

引入百度小伙伴对代码风格进行的微调整。 删除核心类GroupTemplate的所有Deprecated方法,可能会导致不兼容,需要使用推荐的API <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.3.0.RELEASE</version> </dependency> Beetl是一款全功能,高性能优秀的国产模板引擎,可以广泛用于动态页面生成,静态页面生成,代码生成,文本转换,脚本语言和规则引擎等,从2011年来,一直维...

5
4
发表于开发技能专区
2020/11/06 10:26

Beetl 3.2.4.RELEASE,Java 模板引擎 Beetl

修复了3.2.1版本调增后,不兼容API的bug修复 升级到3后,脚本引擎执行不支持Java直接调用的Bug <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.2.4.RELEASE</version> </dependency> Beetl是一款全功能,高性能优秀的国产模板引擎,可以广泛用于动态页面生成,静态页面生成,代码生成,文本转换,脚本语言和规则引擎等,从2011年来,一直维护,并得到国内公司用户的...

0
2
发表于开发技能专区
2020/09/24 10:51

Beetl 3.2.1.RELEASE,Java 模板引擎 Beetl

* 模板记载器不在局限于String作为resourcId * 增强模板里Java方法直接调用在某些情况下报错提示信息 * 代码的略微调整,以增强可读性和性能 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.2.1.RELEASE</version> </dependency> Beetl是一款全功能,高性能优秀的国产模板引擎,可以广泛用于动态页面生成,静态页面生成,代码生成,文本转换,脚本语言和规则引擎等,...

4
4
发表于软件架构专区
2020/06/12 14:33

Beetl 3.1.8 版本发布,Java 模板引擎

本次发布改善了两个小功能 # GroupTemplate增加getTemplateProxy方法 可以得到可重复使用的Template # 改进模板初始化流程,避免高并发下可能会重复编译模板 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.1.8.RELEASE</version> </dependency> Beetl是一款全功能,高性能优秀的国产模板引擎,可以广泛用于动态页面生成,静态页面生成,代码生成,文本转换,脚本语...

8
5
发表于开发技能专区
2020/06/02 13:37

Beetl 3.1.7 版本发布,Java 模板引擎

修复HTML标签属性转化配置类不起作用的Bug 增强了FunctionPackage,提供了registerFunctionPackageAsRoot接口 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.1.7.RELEASE</version> </dependency> Beetl是一款全功能,高性能优秀的国产模板引擎,可以广泛用于动态页面生成,静态页面生成,代码生成,文本转换,脚本语言和规则引擎等,从2011年来,一直维护,并得到...

2
7
2020/03/31 10:17

Beetl 3.1.2 版本发布,Java 模板引擎

这次发布主要是用内置的ASM工具代替asm,以避免包冲突 内置asm5.2源码,避免与其他包的asm冲突 修复了在某些框架下动态生成类后加载报错的问题 提供了按照条件注册函数方式,因此可以内置includeJSP和cookies函数。 提供了重用Template类的方式。解决了Mybatis使用Beetl引擎的bug <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.1.2.RELEASE</version> </dependency...

17
8
发表于服务端专区
2020/03/18 11:30

Beetl 3.0.20 版本发布,Java 模板引擎

本次发布增加一个配置,可以通过配置文件配置虚拟属性,以VIRUTAl开头,而不需要调用api VIRTUAL.size=org.beetl.core.GroupTemplate$SizeVirtualAttributeEval 如上配置,beetl在遇到虚拟属性size的时候,会调用org.beetl.core.GroupTemplate$SizeVirtualAttributeEval 虚拟属性是指JavaBean不存在的属性,但可以通过Beetl动态添加,如Beetl的内置的虚拟属性`size`,可以返回集合,数组的长度 maven <dependency> <gro...

0
0
发表于软件架构专区
2020/02/25 12:32

Beetl 3.0.19 版本发布,Java 模板引擎

本次发布增加了includeFragment扩展,以及整合了Beetl爱好者提供的新扩展 StringUtil 增加了extendString系列辅助函数,用于格式化字符串 增加includeFragment扩展,可以允许包含模板的一部分内容,例子如下 includeFragment("/all.html","frag1"){} 或者 <#html:includeFragment file="/all.html" fragment="frag1" arg1="" arg2=""/> all.html内容如下,#fragment用于表示模板片段 <% #fragment frag1:{ %> 内容片段...

9
10
2020/02/09 15:46

Beetl 3.0.17 版本发布,Java 模板引擎

本次发布新增了一个html标签特性 html标签 $export变量实现一个全局变量 <#html:set value="" $export="collection"/> ..... @for(item in collection){ @} maven <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.0.17.RELEASE</version> </dependency> Beetl是一款全功能,高性能优秀的国产模板引擎,可以广泛用于动态页面生成,静态页面生成,代码生成,文本...

0
4
发表于服务端专区
2019/12/26 14:23

Beetl 3.0.16 版本发布,Java 模板引擎

本次发布做了微小改动,合并了一个最新版Struts2兼容的问题,感谢网友提供的PR struts2.5 兼容 增加一个CachedWriter来,可以在某些场景下提高IO性能 Maven <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.0.16.RELEASE</version> </dependency> Beetl作为一个有特色功能和包含丰富功能的国产老模板引擎(有9年的维护历史),在最新的性能评测中,虽然面临很多新的极...

14
5
发表于服务端专区
2019/11/25 10:47

Beetl 3.0.15 版本发布,Java 模板引擎

本次发布修复了两个Bug 俩对模板占位符顺序,比如“今天是星期{day},我的名字叫{{name}},性别{sex}” 导致解析不完全 访问自定义的Map报错 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.0.13.RELEASE</version> </dependency> Beetl 在线使用体验 http://ibeetl.com/beetlonline/ Beetl 模板(文本处理)引擎功能齐全,使用体验优秀,具备许多创新功能和实现。也是当今世...

9
7
发表于软件架构专区
2019/10/03 12:08

Beetl 3.0.13 版本发布,Java 模板引擎

本次发布修复了升级到 3.x 后不兼容 2.x 支持 2.x 访问 boolean 属性使用非 JavaBean 标准的 isXXX 方法 修复访问 Java.util.Date.getTime() 出错的 bug Maven <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.0.13.RELEASE</version> </dependency> Beetl 在线使用体验 http://ibeetl.com/beetlonline/ Beetl 模板(文本处理)引擎功能齐全,使用体验优秀,具备许多创新功...

11
7
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
63 评论
1K 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部