forked from javamonkey/beetl2.0
-
Notifications
You must be signed in to change notification settings - Fork 0
/
asciidoc-beetl.txt
50 lines (39 loc) · 3.89 KB
/
asciidoc-beetl.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
= Beetl2.0使用说明书 =
== 什么是Beetl ==
Beetl目前版本是2.0,大小600K,相对于其他java模板引擎,具有功能齐全,性能超高,及其编写的模板容易维护等特点。而且,由于类似javascript语法和习俗,具有很低的学习曲线。是新一代的模板引擎。总得来说,它的特性如下:
- 功能完备:同主流的java模板引擎相比,Beetl具有绝大多数功能。Beetl本身也具有很多独特功能来完成模板编写和维护,这是其他模板引擎所不具有的。
- 非常简单:类似Javascript语法和习俗,只要半小时就能通过办学半猜完全掌握用法。拒绝其他模板引擎那种非人性化的语法和习俗
- 超高的性能:多家性能评测比较,Beetl 远超过主流java模板引擎性能,切消耗较低的CPU
- 易于整合:Beetl能很容易的与各种web框架整合,如Spring MVC,JFinal,Struts,Nutz等。
- 支持模板单独开发和测试,即在MVC架构中,即使没有M和C部分,也能开发和测试模板。
- 扩展和个性化:Beetl支持自定义方法,格式化函数,虚拟属性,标签,和HTML标签. 同时Beetl也支持自定义占位符和控制语句起始符号也支持使用者完全可以打造适合自己的扩展包.
.关于性能
**********************************************************************
通过与主流模板引擎Freemaker,Vecloity以及JSP对比,Beetl均远高于前面三个(是freemaker4-6倍)主要通过了优化的渲染引擎,IO的二进制输出,以及ASM的属性调用等手段达到
可以参考性能测试如下
1. Beetl性能测试包(包含10种场景性能测试以及基准的书籍渲染模板)
2. rythm 性能测试 (书籍模板场景)
3. bsl性能测试 (书籍模板场景)
**********************************************************************
.独特功能
**********************************************************************
Beetl有些功能是发展了10多年的模板引擎所不具备的,这些功能非常利于模板的开发和维护,如下
1. 自定义占位符和控制语句起始符号,这有利于减小模板语法对模板的倾入性,比如在html模板中,如果定义控制语句符号是`<!--:和 -->`,那么,大部分模板文件都能同过浏览器打开。有的使用者仅仅采用了单个符号@ 以及回车换号作为控制语句起始符号,这又能提高开发效率
2. 可单独测试的模板。无需真正的控制层和模型层,Beetl的模板就可以单独开发和*测试*
3. 同时支持较为松散的MVC和严格的MVC,如果在模板语言里嵌入计算表达式,复杂条件表达式,以及函数调用有干涉业务逻辑嫌疑,你可以禁止使用这些语法。
4. 强大的安全输出,通过安全输出符号!,能在模板变量,变量属性引用,for循环,占位符输出,try-catch中等各个地方提供安全输出,保证渲染正常
5. 模板片段输出,可以将零碎的模板集成在一起,通过path#section,这样的方式仅仅输出模板的某一部分
6. 模板变量:运行将模板的某一部分输出像js那样赋值个一个变量,稍后再处理。利用模板变量能完成非常复杂的页面布局(简单的布局可使用layout标签函数)
7. 类型推测,能在运行的时候推测模板变量类型,从而优化性能,也可以通过注解的方法显示的说明模板变量属性(这是非必须的,但有助于IDE自动提示功能)
8. 可插拔的设计,错误信息提示,模板引擎缓存机制,模板资源管理,本地调用的安全管理器都有默认的实现,但又完全可以自定义以适合特定需求
**********************************************************************
== 资料 ==
*这回事资料* 看看
[source,javascript]
----------------------------
var a = 1 ;
for(u in users){ // <1>
}
----------------------------
<1> just test
hello