阅读更多

7顶
0踩

企业架构

原创新闻 Java 模板引擎 Beetl 2.0 发布

2014-05-04 15:00 by 见习记者 javamonkey 评论(15) 有9095人浏览
Beetl目前版本是2.0,大小650K,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,开发和维护模板有很好的体验。是新一代的模板引擎。总得来说,它的特性如下:

  • 功能完备:同主流的java模板引擎相比,Beetl具有绝大多数功能。适用于各种应用场景,从对响应速度有很高要求的大网站到功能繁多的CMS管理系统都适合。Beetl本身还具有很多独特功能来完成模板编写和维护,这是其他模板引擎所不具有的。
  • 非常简单:类似Javascript语法和习俗,只要半小时就能通过半学半猜完全掌握用法。拒绝其他模板引擎那种非人性化的语法和习俗。
  • 超高的性能:Beetl 远超过主流java模板引擎性能,而且消耗较低的CPU
  • 易于整合:Beetl能很容易的与各种web框架整合,如Spring MVC,JFinal,Struts,Nutz,Jodd,Servlet等。
  • 支持模板单独开发和测试,即在MVC架构中,即使没有M和C部分,也能开发和测试模板。
  • 扩展和个性化:Beetl支持自定义方法,格式化函数,虚拟属性,标签,和HTML标签. 同时Beetl也支持自定义占位符和控制语句起始符号也支持使用者完全可以打造适合自己的工具包
关于性能

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



仅仅测试了按照字符输出以保证引擎测试公平性,如果开启字节输出支持,将快于DirectOut

独特功能

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

  • 自定义占位符和控制语句起始符号,这有利于减小模板语法对模板的倾入性,比如在html模板中,如果定义控制语句符号是<!--:和 -->,那么,大部分模板文件都能同过浏览器打开。有的使用者仅仅采用了单个符号@ 以及回车换号作为控制语句起始符号,这又能提高开发效率
  • 可单独测试的模板。无需真正的控制层和模型层,Beetl的模板就可以单独开发和测试
  • 同时支持较为松散的MVC和严格的MVC,如果在模板语言里嵌入计算表达式,复杂条件表达式,以及函数调用有干涉业务逻辑嫌疑,你可以禁止使用这些语法。
  • 强大的安全输出,通过安全输出符号!,能在模板变量,变量属性引用,for循环,占位符输出,try-catch中等各个地方提供安全输出,保证渲染正常
  • 模板变量:运行将模板的某一部分输出像js那样赋值个一个变量,稍后再处理。利用模板变量能完成非常复杂的页面布局(简单的布局可使用layout标签函数)
  • 类型推测,能在运行的时候推测模板变量类型,从而优化性能,也可以通过注解的方法显示的说明模板变量属性(这是非必须的,但有助于IDE自动提示功能)
  • 可插拔的设计,错误信息提示,模板引擎缓存机制,模板资源管理,本地调用的安全管理器,严格MVC限制,模板引擎本身都有默认的实现,但又完全可以自定义以适合特定需求
  • 增强的语法,如for-elsefor, select-case,安全输出符号! 等,这些语法特别适合模板开发
  • 性能超高,具有最快的模板解释引擎,同时,又有较低的CPU消耗。适合各类模板引用,如CMS系统,超高访问量的门户系统
Beetl在线体验和代码分享http://ibeetl.com:8080/beetlonline/

源码下载http://sourceforge.net/projects/beetl/
  • 大小: 12.9 KB
来自: ibeetl.com
7
0
评论 共 15 条 请登录后发表评论
15 楼 javamonkey 2014-06-25 08:19
smilerain 写道
我也测试过,高并发多线程下,完全不是楼主测试的结果。


把测试场景(方法),测试结果详细说说。做性能测试很耗费时间,可能得1-3天,你都花了这么长时间,我建议你不必就仅仅评论一句,而不是把你的测试成果分享出来。我也好分析一下到底怎么不是我的测试结果
14 楼 smilerain 2014-06-23 01:00
我也测试过,高并发多线程下,完全不是楼主测试的结果。
13 楼 javamonkey 2014-05-28 14:20
Dark-Mraz 写道
作者辛苦维护几年的成果,是值得肯定和赞赏的。
尤其在性能上下了那么大工夫,感谢作者做出的贡献。
希望楼主能多收集意见持续优化改进,看好你,加油。


辛苦不算,是个乐趣。
Beetl能成现在这个样子,除了刚开始的几个原始想法(js风格,模板低侵入性,二进制输出支持,容易与Java类交互),其他基本是都是使用者提出的想法
12 楼 Dark-Mraz 2014-05-24 01:38
作者辛苦维护几年的成果,是值得肯定和赞赏的。
尤其在性能上下了那么大工夫,感谢作者做出的贡献。
希望楼主能多收集意见持续优化改进,看好你,加油。
11 楼 jakejone 2014-05-14 11:42
我还以为是前端模版引擎。。。。

是我失误了。作者加油
10 楼 javamonkey 2014-05-14 11:25
jakejone 写道

一个web 程序,请求到服务器段的时候,会由 jsp -> HTML

jsp页面里面的 jstl 表达式会在服务器端被解析掉

例如 ${name} 会被 存储在 request / session 中的 name 变量替换

那么 ${} 就没了,如果${name}  中的变量名 name 不存在,jstl 也会把${name}替换成 空字符串

结果就是: ${}占位符 不会出现在前端页面中,轮不到你的前端框架去解析它了。

PS:我暂时没打算用作者你写的 beetl2 ,但是会支持下







Beetl 是java模板引擎,跟freemaker,velocity,jsp,jstl是一样的用途
9 楼 jakejone 2014-05-14 11:14

一个web 程序,请求到服务器段的时候,会由 jsp -> HTML

jsp页面里面的 jstl 表达式会在服务器端被解析掉

例如 ${name} 会被 存储在 request / session 中的 name 变量替换

那么 ${} 就没了,如果${name}  中的变量名 name 不存在,jstl 也会把${name}替换成 空字符串

结果就是: ${}占位符 不会出现在前端页面中,轮不到你的前端框架去解析它了。

PS:我暂时没打算用作者你写的 beetl2 ,但是会支持下





8 楼 javamonkey 2014-05-14 10:43
jakejone 写道
javamonkey 写道
jakejone 写道
竟然使用 ${}  作为占位符号

作者使用过java 吗


用过,freemaker,jstl不都是这么用的么,那应该用什么作为站位符号?

另外,Beetl支持自定义站位符号,${} 只是默认的形式


既然知道jstl 是这么用, 那么在后端 ${} 就会被解析掉了,

如果还要自定义占位符,那就不人性化了


能解释清楚点么?
7 楼 jakejone 2014-05-14 09:28
javamonkey 写道
jakejone 写道
竟然使用 ${}  作为占位符号

作者使用过java 吗


用过,freemaker,jstl不都是这么用的么,那应该用什么作为站位符号?

另外,Beetl支持自定义站位符号,${} 只是默认的形式


既然知道jstl 是这么用, 那么在后端 ${} 就会被解析掉了,

如果还要自定义占位符,那就不人性化了
6 楼 javamonkey 2014-05-14 08:39
jakejone 写道
竟然使用 ${}  作为占位符号

作者使用过java 吗


用过,freemaker,jstl不都是这么用的么,那应该用什么作为站位符号?

另外,Beetl支持自定义站位符号,${} 只是默认的形式
5 楼 jakejone 2014-05-09 09:39
竟然使用 ${}  作为占位符号

作者使用过java 吗
4 楼 javamonkey 2014-05-05 20:35
zhongmin2012 写道
请教下,模板底层解析标签是基于什么机制?

你是问beetl是如何支持html 标签的?

Beetl会在语法分析的时候将html 标签转为 标签函数调用,此标签函数会寻找同名的的模板文件。如:
<#header>
会转化为
htmltag("header"){}
然后此标签函数会寻找header.tag,然后渲染此文件。如下代码

https://github.com/javamonkey/beetl2.0/blob/master/beetl-core/src/main/java/org/beetl/ext/tag/HTMLTagSupportWrapper.java
3 楼 zhongmin2012 2014-05-05 19:28
请教下,模板底层解析标签是基于什么机制?
2 楼 javamonkey 2014-05-05 14:18
297014031 写道
有人用过嘛?

都开发好和维护好几年了,有大把的人用过,这个是今天刚刚收到的用beetl做的网站
http://www.garmall.com/
1 楼 297014031 2014-05-05 13:26
有人用过嘛?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • ESPEasy V2.0.0

    Esp8266固件,不用写一行代码就可以搭建智能化设备,比如智能插座

  • STM32 USB相关知识扫盲

    STM32 USB相关知识扫盲 1、基础知识 STM32基础型(F1系列)所带的USB是全速。 2、电气属性 USB的通信都是由主机发起的,这一点与IIC协议是类似的。 2.1 数据线 USB使用差分传输模式,有两条数据线,分别是: USB数据正信号线,USB Data Positive,即USB-DP线,简写为D+ USB数据负信号线,USB Data Minus, 即USB-DM线,简写为D- 剩下的就是电源线(5V-Vbus)和地线(GND)。 2.2 USB主机是如何识别设备是高速设备/全速

  • Nokia N900 通过flasher刷机教程

    首先,到官方的http://tablets-dev.nokia.com/nokia_N900.php上下载刷机软件以及.bin文件. 打开后,按照提示输入IMEI码(通过*#06#可查看),就会进入如下页面 点击第一行Command line flasher binaries are availablehere下载刷机工具flasher,然后安装。 下来我们选择相...

  • beetl模板使用场景_Java 模板引擎 Beetl 2.0 发布

    Java开源模板引擎VelocityVelocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以...

  • java模板beetl引擎,Beetl java模板引擎

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

  • beetl html模板,Beetl模板引擎之自定义html标签

    开篇唠叨一下个人感言,之前做的项目有使用到 jsp 自定义标签,jsp自定义标签感觉麻烦,现在想找一个简单好用的模板引擎看看自定义标签怎么写,所以百度到了Beetl,逛了一下官网,感觉写法也挺简单的,然后尝试...

  • Java -- springboot 配置 beetl模板引擎

    基于 SpringBoot 下配置 beetl 模板引擎,配置结构化页面框架,提供工具类方法的直接访问

  • Beetl 3.0.0.M1 版本发布,Java 模板引擎

    Beetl是一款全功能,性能优秀的国产模板引擎,可以广泛用于动态页面生成,静态页面生成,代码生成,文本转换,脚本和规则引擎等,从2011年来,一直维护,并得到国内用户的肯定。 本次...

  • 新一代java模板引擎典范 Beetl

    Beetl目前版本是2.0,大小650K,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,开发和维护模板有很好的体验。是新一代的模板引擎。总得来说,它的特性如下: 功能完备:同主流的java模板引擎相比,...

  • Spring Boot 2 精髓学习笔记(五)---Beetl 模板引擎(1)

    本节介绍MVC 中的视图技术之模板引擎Beetl ,用于渲染模板。 一、Beetl模板引擎 Beetl是2010 年开发井维护至今的一个模板引擎,具有如下特点: 功能完备。作为主流模板引擎,适用于各种应用场景,比如对响应速度有...

  • Spring Boot 2.0 读书笔记_05:Beetl

    写在开头,Beetl是由《Spring Boot 2精髓》作者所开发并维护的后端模板引擎,主要用于渲染视图模板。 关于模板引擎,博主了解过的主要是JSP 和 FreeMarker,视图渲染技术的了解并不多。 这里谈一下自己对于Web开发的...

  • Spring Boot入门样例-061-beetl模板引擎

    Spring Boot入门样例-061-beetl模板引擎 已经可以将数据库中数据读取出来,该在前端显示漂亮的界面。本demo演示如何使用beetl模板引擎渲染出一个简单的登录界面。 前言 本Spring Boot入门样例准备工作参考: ...

  • Beetl模板引擎之自定义html标签嵌套子标签

    经过自定义html标签的使用...对于html标签(参考上一节),Beetl还 支持将标签实现类(java代码)里的对象作为临时变量,被标签体引用。此时需要实现GeneralVarTagBinding (此类是Tag的子类) 该类提供另外3个个方法 -

  • Java开源模板引擎

    Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员...

  • Beetl2.7.13 中文文档

    Beetl目前版本是2.7.13,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点。使得开发和维护模板有很好的体验。是新一代的模板引擎。总得来说,它的特性如下: - 功能...

  • Beetl页面模板文档

    Beetl2.7 中文文档Beetl作者:李家智 xiandafu@126.com

  • beetl官方文档

    Beetl目前版本是2.7.3,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点。使得开发和维护模板有很好的体验。是新一代的模板引擎。总得来说,它的特性如下: 功能完备:作为...

  • java beetl 视频_01.Beetl介绍以及集成SpringBoot2.0 ---《Beetl视频课程》

    作者:GK目的:引导阅读官方文档目标:实现一个自己的博客一、Beetl介绍Beetl目前版本是2.9.3,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点。使得开发和维护模板有很好...

  • 果壳处理器研究小组(Topic基于RISCV64果核处理器的卷积神经网络加速器研究)详细文档+全部资料+优秀项目+源码.zip

    【资源说明】 果壳处理器研究小组(Topic基于RISCV64果核处理器的卷积神经网络加速器研究)详细文档+全部资料+优秀项目+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

Global site tag (gtag.js) - Google Analytics