新一代 Java 模板引擎典范 Beetl

BSD
Java 查看源码»
跨平台
2012-03-05
闲大赋

Beetl目前版本是2.9,大小720K,相对于其他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/

的码云指数为
超过 的项目
加载中
此软件有 56 条评论,请先登录后再查看。

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

本次发布改善了两个小功能 # GroupTemplate增加getTemplateProxy方法 可以得到可重复使用的Template # 改进模板初始化流程,避免高并发下可能会重复编译模板 <dependency> <groupId>c...

06/12 14:33

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

修复HTML标签属性转化配置类不起作用的Bug 增强了FunctionPackage,提供了registerFunctionPackageAsRoot接口 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</...

06/02 13:37

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

这次发布主要是用内置的ASM工具代替asm,以避免包冲突 内置asm5.2源码,避免与其他包的asm冲突 修复了在某些框架下动态生成类后加载报错的问题 提供了按照条件注册函数方式,因此可以内置inc...

03/31 10:17

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

本次发布增加一个配置,可以通过配置文件配置虚拟属性,以VIRUTAl开头,而不需要调用api VIRTUAL.size=org.beetl.core.GroupTemplate$SizeVirtualAttributeEval 如上配置,beetl在遇到虚拟属...

03/18 11:30

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

本次发布增加了includeFragment扩展,以及整合了Beetl爱好者提供的新扩展 StringUtil 增加了extendString系列辅助函数,用于格式化字符串 增加includeFragment扩展,可以允许包含模板的一部分...

02/25 12:32

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

本次发布新增了一个html标签特性 html标签 $export变量实现一个全局变量 <#html:set value="" $export="collection"/> ..... @for(item in collection){ @} maven <dependency> ...

02/09 15:46

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

本次发布做了微小改动,合并了一个最新版Struts2兼容的问题,感谢网友提供的PR struts2.5 兼容 增加一个CachedWriter来,可以在某些场景下提高IO性能 Maven <dependency> <groupId>c...

2019/12/26 14:22

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

本次发布修复了两个Bug 俩对模板占位符顺序,比如“今天是星期{day},我的名字叫{{name}},性别{sex}” 导致解析不完全 访问自定义的Map报错 <dependency> <groupId>com.ibeetl</groupId...

2019/11/25 10:47

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

本次发布修复了升级到 3.x 后不兼容 2.x 支持 2.x 访问 boolean 属性使用非 JavaBean 标准的 isXXX 方法 修复访问 Java.util.Date.getTime() 出错的 bug Maven <dependency> <groupId>c...

2019/10/03 12:08

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

本次发布增加按照社区要求增加了一些类似JSTL的标签函数,内置如下html标签 TAG.html.include= org.beetl.ext.tag.html.IncludeResourceHtmlTag TAG.html.layout= org.beetl.ext.tag.html...

2019/08/16 16:05

没有更多内容

加载失败,请刷新页面

2
回答
freemarker 项目转beetl map 遍历问题

@闲大赋 你好,想跟你请教个问题: 您好,之前的项目freemarker 的,现在想改成beetl , 这是之前的代码: <select name="se...

04/24 18:23
6
回答
beetl和js数据传递。

@闲.大赋 你好,想跟你请教个问题:怎么把beetl和js绑定啊,就是beetl从后台取得数据怎么让js得到。

2014/12/17 09:58
2
回答
Beetl双层循环,子循环内可以使用父循环的变量来取值么
bage兔斯基 的回答 2019/12/13 10:16
最佳答案
定界符内不能使用占位符号,除了通过 ”.” 号来访问对象的的属性还可以用 [] 来引用属性,在你这里就是 ${item[header]}
10
回答
什么项目什么时候比较适合用VUE和react。感觉现在都是为了用而用?我怎么感觉企业内部应用,后台管理的,没必要用VUE啊。
沈珈右 的回答 2019/07/01 09:06
最佳答案
前后端分离是项目历史迭代的产物,就像分布式、大数据,是否使用要看项目团队现状。在开发人员不足或人员水平参差不齐的情况下,内部系统搞前后端分离,多半是为了吹给领导看(用了啥啥新技术)。原本一个开发可以搞定的功能,多了层接口联调,增加沟通成本不说,功能设计和后期测试反馈时,还会出现推诿互相甩锅,导...
1
回答
BEETL

@闲大赋 你好,想跟你请教个问题: 这个是不是类似于jsp,根本上使用servlet生成输出页面?

2019/09/08 22:30
7
回答
VUE.js 掺杂 各种模版引擎 时候的使用场景
火眼金睛容嬷嬷 的回答 2017/04/04 10:59
最佳答案
如果你之前的view模板都是在服务器渲染的,那么完全用vue.js的话,工作量很大了,基本上所有服务器的模板都得用vue.js重写一下,因为这两者是同类的东西,虽然实现方式不同,但起到的作用是一样的。如果只是想利用vue.js的页面的数据绑定的,那么你那种“不正经”的使用方式也是可以的。毕竟,...
12
回答
spring boot 集成beetl模板路径找不到的问题!

@闲大赋 你好,想跟你请教个问题: 在eclipse中,可以正常找到路径。将工程生成jar包后运行就找不到模板路径了。主要代码如下: public sta...

2016/04/05 20:10
8
回答
Weblogic下Jfinal 集成Beetl:占位符不解析

@闲.大赋 你好,想跟你请教个问题: 如上图,Weblogic下面,JFinal集成Beetl,占位符没有解析。没有发现Error Log;Tomcat下...

2015/05/29 23:51
3
回答
springboot2使用beetl模板,使用maven标准目录结构而不用springboot的目录结构出现的一个问题

@闲大赋 看看能不能艾特下大大 这个是maven风格的目录结构 打成war包的目录会是这样 打包出来的 static目录在项目一级目录下,页面文件夹在WE...

2019/02/22 17:06
3
回答
关于beetl的循环语句

@闲.大赋 你好,想跟你请教个问题: 关于循环遍历与页面输出,和freemark的写法做了对比一起贴出来如下(本人学习能力有限,如果代码有误烦请指教),发...

2015/02/12 01:15

没有更多内容

加载失败,请刷新页面

beetl使用

Beetl使用说明

2016/05/26 13:46
80
0
Beetl 免费视频

来自 https://my.oschina.net/gking?q=Beetl ,Beetl终于有人录制视频了 项目git地址:https://gitee.com/gavink/beetl-blog 视频地址:下载下来会更清晰,视频比较长,可使用倍速看 百度网盘...

2018/12/12 21:23
924
0
beetl 和 shrio 结合

shrio 提供有jsp 标签,供在jsp 里使用,如果想在beetl中使用,有俩种方法, 一是beetl支持集成jsp页面,所以你可以在在jsp里使用shrio标签 另外,beetl 使用自定义函数写了shiro tag功能,你...

2013/07/08 11:10
1.2W
11
beetl 使用量稳步增长

记得去年,freemaker 下载量还是beetl的3倍,现在,只有2倍了。值得祝贺。 这周beetl使用量是102 个下载,freemaker 国内下载量是226.

2015/09/16 10:49
292
0
Beetl SpringBoot集成

在Spring Boot中配置Beetl,总是出现问题找不到路径的问题, 在Spring Boot中以下面这种方式配置路径: WebAppResourceLoader webAppResourceLoader = new WebAppResourceLoader(patternReso...

2015/11/24 11:12
8.6K
3
好专业的beetl代码

无意中看到 @渔泯小镇 写的beetl翻页代码,这是一个典型的显示逻辑较为复杂的场景,很考验模板语言 写的非常专业, http://www.oschina.net/code/snippet_204433_21360 <% 002 var pageNumb...

2013/08/17 01:29
2.3K
3
beetl的使用感受

beetl 的用法,跟layui的laytpl的模版语言差不多。写的很舒服。没有thymeleaf那么麻烦。例如 <% for(loadDischargItem in loadDischargItemList){ %> <tr> ...

2018/12/14 11:28
28
0
模板引擎-beetl

前段时间项目需要用到模板技术,本想使用FreeMarker发现有些过时的样子,就搜到了个Beetl,简单一用...

2014/12/09 16:17
3.5K
0
如何帮助beetl发展

Beetl在国内Java Web项目里已经经常被使用,或者是重要的选项,为了帮助Beetl更好的发展,建议如下: 熟练Beetl的开发者: 1 已经使用过Beetl的可以发布一些个人博客介绍Beetl,或者Beetl使用...

2015/04/01 14:04
320
2
Beetl-Spring扩展

Beetl内置的Spring集成只能满足基本需求,看看@逝水fox如何以Spring的方式集成beetl

2014/07/04 23:49
8.4K
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部