新一代 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/

的码云指数为
超过 的项目
加载中

评论(54)

J
Jomchen

引用来自“Jomchen”的评论

官网打不开,这是要玩完的节奏么。。。

引用来自“redblueme”的评论

何出此言呢
原来是公司对地址过滤没弄好所以访问不了,我还以为beetl官网被黑了呢,,,惊了一跳。
科技范麒麟才子
科技范麒麟才子

引用来自“Jomchen”的评论

官网打不开,这是要玩完的节奏么。。。
可以打开啊
redblueme
redblueme

引用来自“Jomchen”的评论

官网打不开,这是要玩完的节奏么。。。
何出此言呢
J
Jomchen
官网打不开,这是要玩完的节奏么。。。
啊_伟
啊_伟
能否开发些像springmvc的标签一样的标签库
看-野生程序猿
看-野生程序猿
这语法我也是醉了 。。。
l
lblin
${strutil.replace ("Hello\.asd",".","loooo")} ,第一个参数也是正则敏感的,这一段运行报错
马丁的早晨
马丁的早晨
2017投票没有 #Beetl##BeetlSQL#,拒绝投票
马丁的早晨
马丁的早晨
2017投票没有 #Beetl##BeetlSQL#,拒绝投票
yuanqy
yuanqy
#JFinal##Beetl# 都是我心目中的好作品,没必要为舆论动干戈。

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

本次修复一个2.9.2 以来的严重Bug,标签体的输出长度超过4096会导致重复输出,强烈建议2.9以上版本升级到最新版本 #379 自从2.9.2 版本的bug,标签体内容在长度过长情况下重复输出,NoLockSt...

前天 00:22

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

本次发布修复了2.9.0 带来的Bug,果然发布版本为“0”的都会有问题,Beetl也逃不出这个发布规律 :) #371 修复了定界结束符为回车换行报错的Bug Maven <dependency>     <groupId>com.ib...

2018/09/12 08:39

Beetl 2.9.0 发布,修改 HTML 标签的渲染机制

本次发布主要修改了HTML 标签的渲染机制,HTMLTagSupportWrapper2 采用延迟渲染 # 368 tagBody 改为按照需要渲染 #367 俩处错误提示不明显的地方 在2.9.0版本,HTML 标签内部渲染是使用tagBo...

2018/09/09 20:45

Java 模板引擎 Beetl 2.8.5 发布,增加根对象支持

本次发布增加了一个小功能,模板可以输出静态文件 # 361 增加一个printFile,直接输出静态内容 Maven <dependency>     <groupId>com.ibeetl</groupId>     <artifactId>beetl</ar...

2018/06/27 14:31

Java 模板引擎 Beetl 2.7.27 发布,修复 Bug

Java 模板引擎 Beetl 2.7.27 已发布,本次更新修复了 2.7.26 带来的一个 Bug,建议升级。 2.7.26 关于单行注释出现特定字符导致单行注释无效 增加了 enableStrict 接口,通过 api 调用方式配...

2018/03/02 10:42

Java 模板引擎 Beetl 2.7.26 发布,Bug 修复

本次发布修订了几个因为错误提示不明显的bug #333 安全输出不仅仅可用于变量引用,也可以用于方法调用表达式里 ${user.wife.name!'单身'} ${dict.query("org_type").name!'空'} #332 错误提...

2018/01/08 08:53

Beetl 2.7.23 发布,Java 模板引擎

Beetl 2.7.23 发布,这次发布修复俩个功能 #324 Spring Boot集成重启可能导致的模板渲染错误 #322 CompositeResourceLoader 加载资源中出现的错误提示功能错误 <dependency>     <grou...

2017/10/27 08:56

Beetl 2.7.22 发布,Java 模板引擎

Beetl 2.7.22 发布,这次发布增强了俩个功能 #320 html 标签 允许用"-"符号,转化为其后首字母大写. <#myTag data-ip="${ip}">... myTag实现(java或者beetl实现 使用dataIp引用此属性 #316...

2017/08/14 08:59

Beetl 2.7.16 发布,Java 模板引擎  

更新内容: #310 前后端分离核心类WebSimulate 指定模拟的模板页面某些情况下查询不到的bug修复 #309 Template 和 GroupTemplate 增加了语法校验API,适合CMS,规则引擎等应用领域发布前校验...

2017/06/07 08:52

Beetl 2.7.14 发布,Java 模板引擎

本次发布主要增强了MVC 分离开发: Beetl 很早就支持分离开发模式。前端人员可以独立开发模板和测试模板,这次主要是提供了专门的WebSimulate类来支持MVC分离开发和REST模拟服务。 比如,对于...

2017/05/09 21:16

没有更多内容

加载失败,请刷新页面

1
回答
beetlsql

@闲大赋 你好,想跟你请教个问题:beetl有没有直接处理存储过程结果集的方法

2018/12/19 10:29
3
回答
beetl 遍历map 不能取出key value

@闲大赋 你好,想跟你请教个问题: @for(extMap in item.extOne){ @println("key:"+extMap); @} ...

2018/12/10 18:15
5
回答
求beetl的视频教程
闲大赋 的回答 2015/11/18 17:14
最佳答案
据我所知,beetl没有人录制视频,如果想体验,用 http://ibeetl.com:8080/beetlonline/ 就可以了。
4
回答
spring 3.1 集成 beetl 2.2 报错!

spring 3.1 集成 beetl 2.2 启动报错:NoUniqueBeanDefinitionException java.lang.NoClas...

2016/03/28 15:45
2
回答
Beetl获取url参数怎么获取?

Beetl获取url参数怎么获取?

2018/08/13 13:54
10
回答
spring boot 集成beetl模板路径找不到的问题!

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

2016/04/05 20:10
2
回答
关于beetl的ajax渲染技术疑问

你好,初次尝试beetl,但是有一些疑问. beetl提供了ajax局部代码渲染功能,我想问下用这个和自己直接用jq的dom函数操作有什么区别?优势何在?...

2018/07/09 13:41
120
回答
高手问答第 178 期 —— Beetl 作者带来的分布式架构分享
博文视点 的回答 2017/11/30 16:42
最佳答案
高手问答第 178 期 —— 高手问答第 178 期 —— Beetl 作者带来的分布式架构分享 @Flylinran @德古拉-大猫 @赤脚小子 @Rober萝卜 @ChrisYuan 恭喜以上五位网友或获得《Spring Boot 2精髓:从构建小系统到架构分布式大系统》图书一本 请私信 ...
3
回答
spring boot 使用redis做缓存,使用redisTemplate,报ClassCastException异常怎么解决

spring boot 使用redis做缓存,使用redisTemplate,从缓存中取到的数据,同样的类,会报ClassCastException异常,...

2018/01/31 11:36
4
回答
beetl与spring boot同样的类报ClassCastException怎么解决呢

看到官网提示用最新版本,不会有这个问题 <dependency> <groupId>com.ibeetl</gro...

2018/01/30 14:35

没有更多内容

加载失败,请刷新页面

如何帮助beetl发展

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

2015/04/01 14:04
278
1
01.Beetl介绍以及集成SpringBoot2.0 ---《Beetl视频课程》

本期视频介绍了beetl; 内容简介:介绍beetl;springboot 集成 beetl; 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK 目的:引导阅读官方文档...

2018/11/17 00:48
207
0
Beetl-Spring扩展

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

2014/07/04 23:49
3.8K
0
05.Beetl标签函数以及定界符、占位符介绍---《Beetl视频课程》

本期视频实现了博客的详情页面; 内容简介:使用了标签函数layout完成详情功能 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK 标签函数 layout...

2018/12/11 11:51
27
0
Beetl开源过程中那些事

介绍Beetl开源中的一些事情,可以让有志从事开源开发的人的借鉴成功和失败的经验

2014/08/26 10:18
5.6K
40
beetl模板引擎的好玩的地方

陈述了beetl作为模板引擎,不但在性能功能上卓越,而且特别好玩。

2014/02/14 12:32
721
3
模板引擎Beet的6大创新点

模板引擎是个古老技术,然而,并不代表古老的技术里产生不了创新,随着Web技术变迁,以及开发人员审美的变化,技术创新还是能在古老的模板技术中实现,本文介绍了Beetl作为一个现代模板引擎的...

2015/08/02 21:28
1K
5
第五章:视图技术之-Beetl模板引擎

1、特性介绍 功能完备:作为主流模板引擎,Beetl具有相当多的功能和其他模板引擎不具备的功能。适用于各种应用场景,从对响应速度有很高要求的大网站到功能繁多的CMS管理系统都适合。Beetl本...

2018/05/19 21:13
141
0
剖析 “‘最好的模板引擎’Beetl剖析及与Tiny模板引擎对比”

http://blog.csdn.net/cndes/art ... 88771 这有一篇文章,说是剖析beetl模板引擎,并与同为国内的tiny模板引擎做对比(以下简称“剖析beetl”),其剖析过程公正,但结论却不正确(文中暗示的...

2016/07/14 10:00
719
16

没有更多内容

加载失败,请刷新页面

返回顶部
顶部