Beetl 3中文文档
About 1508 wordsAbout 5 min
2025-02-9
Beetl作者:李家智(闲大赋) <xiandafu@126.com>
什么是Beetl
Beetl( 发音同Beetle ) 目前版本是3.19,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点。使得开发和维护模板有很好的体验。同时,Beetl具备引擎可定制性,可以打造自己的模板引擎。总得来说,它的特性如下:
功能完备:作为主流模板引擎,Beetl具有相当多的功能和其他模板引擎不具备的功能。适用于各种应用场景,从对响应速度有很高要求的大网站到功能繁多的CMS管理系统都适合。Beetl本身还具有很多独特功能来完成模板编写和维护,这是其他模板引擎所不具有的。
非常简单:类似Javascript语法和习俗,只要半小时就能通过半学半猜完全掌握用法。拒绝其他模板引擎那种非人性化的语法和习俗。同时也能支持html 标签,使得开发CMS系统比较容易
超高的性能:Beetl 远超过主流java模板引擎性能(引擎性能5-6倍于FreeMarker,2倍于JSP。参考附录),而且消耗较低的CPU。
易于整合:Beetl能很容易的与各种web框架整合,如Spring MVC,SpringBoot,ACT.JFinal,Struts,Nutz,Jodd,Servlet等。
扩展和个性化:Beetl支持自定义方法,格式化函数,虚拟属性,标签,和HTML标签. 同时Beetl也支持自定义占位符和控制语句起始符号也支持使用者完全可以打造适合自己的工具包。
模板引擎可以个性化定制,比如定制语法特性,定制语法实现。
Beetl 与其他模板引擎不同之处在于他内核是脚本引擎,因此直接支持脚本计算,可以实现
- 脚本引擎/规则引擎
- 表达式引擎
- 支持在线调试功能
小白如何开始
- 访问在线模板引擎 http://ibeetl.com/beetlonline/
- 如果把Beetl当着脚本引擎,访问 http://ibeetl.com/beetlonline/script.html
- 需要通读基本用法,大部分都是讲解语法,而语法跟js很接近,所以可以快速预览,但Beetl是针对模板设计, 所以像安全输出,标签和html标签,全局变量,临时变量和共享变量,布局技术,以及直接调用java代码等还需要认真读一遍。
- 如果从事web开发,还需要阅读web集成里的第一节“web提供的全局变量”,如果web里还使用ajax技术,可以阅读“整合ajax的局部渲染技术”。
- 有任何问题,推荐在 https://gitee.com/xiandafu/beetl/issues 提问,我每天都会关注,这里的issues能激励我继续维护Beetl
资深如何开始
访问在线模板引擎 http://ibeetl.com/beetlonline/
如果把Beetl当着脚本引擎,访问 http://ibeetl.com/beetlonline/script.html
阅读和调试源码,以及相关单元测试运行和调试
模板性能
作为模板引擎的性能 ,Score越大越好 https://gitee.com/xiandafu/beetl/tree/master/template-benchmark
Benchmark Mode Cnt Score Error Units
Beetl.benchmark thrpt 10 163259.294 ± 881.253 ops/s
Enjoy.benchmark thrpt 10 146012.967 ± 2158.580 ops/s
Freemarker.benchmark thrpt 10 45228.490 ± 185.590 ops/s
Handlebars.benchmark thrpt 10 42875.302 ± 189.893 ops/s
Rocker.benchmark thrpt 10 95740.184 ± 513.397 ops/s
Thymeleaf.benchmark thrpt 10 12981.396 ± 130.663 ops/s
Velocity.benchmark thrpt 10 14120.852 ± 291.371 ops/s
表达式性能
作为脚本语言,表达式语言的性能 ,Score越大越好 https://gitee.com/xiandafu/beetl/tree/master/express-benchmark
Benchmark Mode Cnt Score Error Units
Aviator.forExpresss thrpt 5 501300.085 ± 42824.080 ops/s
Aviator.ifExpresss thrpt 5 3787821.461 ± 126020.429 ops/s
Aviator.simpleExpress thrpt 5 3936340.996 ± 73374.389 ops/s
Beetl.forExpresss thrpt 5 1338770.299 ± 52497.190 ops/s
Beetl.ifExpresss thrpt 5 4296662.629 ± 144833.816 ops/s
Beetl.reflect thrpt 5 91948.475 ± 24820.670 ops/s
Beetl.simpleExpress thrpt 5 3637048.580 ± 208029.652 ops/s
Groovy.forExpresss thrpt 5 252549.783 ± 4250.116 ops/s
Groovy.ifExpresss thrpt 5 274622.265 ± 4591.017 ops/s
Groovy.simpleExpress thrpt 5 265044.153 ± 11326.922 ops/s
Jexl3.forExpresss thrpt 5 786773.898 ± 10419.682 ops/s
Jexl3.ifExpresss thrpt 5 4202306.490 ± 30129.805 ops/s
Jexl3.simpleExpress thrpt 5 3372108.774 ± 215486.204 ops/s
JfireEL.ifExpresss thrpt 5 32117578.964 ± 527020.236 ops/s
JfireEL.simpleExpress thrpt 5 24189543.412 ± 368783.395 ops/s
Liquor.forExpresss thrpt 5 133415280.514 ± 7403665.267 ops/s
Liquor.ifExpresss thrpt 5 142671515.534 ± 2569369.295 ops/s
Liquor.simpleExpress thrpt 5 131626067.420 ± 1391417.428 ops/s
Magic.forExpresss thrpt 5 78293.797 ± 5757.270 ops/s
Magic.ifExpresss thrpt 5 8289531.268 ± 108521.742 ops/s
Magic.simpleExpress thrpt 5 5483078.794 ± 102774.920 ops/s
Mvel.forExpresss thrpt 5 19791.976 ± 913.688 ops/s
Mvel.ifExpresss thrpt 5 212241.434 ± 4588.556 ops/s
Mvel.simpleExpress thrpt 5 289372.025 ± 5343.856 ops/s
Spel.ifExpresss thrpt 5 17001870.991 ± 1104612.166 ops/s
Spel.simpleExpress thrpt 5 16854500.373 ± 1020142.253 ops/s
WastEl.forExpresss thrpt 5 539086848.932 ± 16033762.932 ops/s
WastEl.ifExpresss thrpt 5 553963092.029 ± 8708085.274 ops/s
WastEl.simpleExpress thrpt 5 493929991.021 ± 7826211.390 ops/s
联系作者
- 作者:闲.大赋 (李家智)等(参考附录查看代码贡献者)
- 源码主页:https://gitee.com/xiandafu/beetl
- 最佳联系方式: https://gitee.com/xiandafu/beetl/issues
- 邮件:xiandafu@126.com
- QQ技术交流群:219324263 636321496 ,作者在群里,但平时不常用
第三方提供的免费视频
以一个博客项目,实战使用
项目git地址:https://gitee.com/gavink/beetl-blog
视频地址:下载下来会更清晰,视频比较长,可使用倍速看
百度网盘下载: https://pan.baidu.com/s/1LyxAxlKpVXgVjwSXIbzBuA 提取码: 68im
在线播放地址:bilibili (可以调节清晰度): https://www.bilibili.com/video/av36278644/?p=9
博客目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598
Beetl与Vue,React框架的冲突
模板是一种设计模式,只要这种设计模式存在,就有Beetl的用武之地。Beetl可以用于
动态页面生成,网站,后台管理系统等
静态内容生成,比如互联网世界的大部分静态网页的生成
短信,微信,邮件内容等生成
二进制文档生成,比如PDF,Word (需要通过模板生成中间文本格式,如markdown,xml,然后通过工具转成二进制)
Vue,React等JS框架符合现在前后端分离,但不代表所有项目,所有需求都是这样。除非你只定位自己是搞前后端分离的
一个项目,既可以用上Beetl,也可以用上Vue,比如Beetl+Vue,或者使用Beetl 完成项目中的其他需求,比如适合动态业务的脚本引擎,或者静态内容生成。
Beetl核心是脚本引擎,因此不像其他JAVA模板引擎,只能提供模板功能,Beetl还可以提供脚本,规则引擎,可以访问
http://ibeetl.com/beetlonline/script.html 了解Beetl的脚本和Debug功能