没有合适的资源?快使用搜索试试~ 我知道了~
Beetl目前版本是2.2.1,大小689K。相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板 容易维护等特点。使得开发和维护模板有很好的体验。是新一代的模板引擎。
资源推荐
资源详情
资源评论
知行合一
Beetl2.2
使用说明书
20150406 1
Beetl2.2
使用说明书
20150406
李家智
<xiandafu@126.com>
1.
什么是
Beetl
Beetl
目前版本是
2.2.1,
大小689K。相对于其他
java
模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板
容易维护等特点。使得开发和维护模板有很好的体验。是新一代的模板引擎。总得来说,它的特性如下:
•
功能完备:同主流的
java
模板引擎相比,Beetl具有绝大多数功能。适用于
*
各种应用场景*,从对响应速度有很
高要求的大网站到功能繁多的
CMS
管理系统都适合。Beetl本身还具有很多独特功能来完成模板编写和维护,这
是其他模板引擎所不具有的。
•
非常简单:类似
Javascript
语法和习俗,只要半小时就能通过半学半猜完全掌握用法。拒绝其他模板引擎那种非
人性化的语法和习俗。同时也能支持
html
标签,使得开发
CMS
系统比较容易
•
超高的性能:
Beetl
远超过主流
java
模板引擎性能(引擎性能
5-6
倍与freemaker,2倍于JSP。参考附录),而且消
耗较低的
CPU
•
易于整合:
Beetl
能很容易的与各种
web
框架整合,如
Spring
MVC,JFinal,Struts,Nutz,Jodd,Servlet等。
•
支持模板单独开发和测试,即在
MVC
架构中,即使没有
M
和
C
部分,也能开发和测试模板。
•
扩展和个性化:
Beetl
支持自定义方法,格式化函数,虚拟属性,标签,和
HTML
标签.
同时
Beetl
也支持自定义占
位符和控制语句起始符号也支持使用者完全可以打造适合自己的工具包.
关于性能
通过与主流模板引擎Freemaker,Vecloity以及
JSP
对比,Beetl均远高于前面三个,这是因为宏观上,通过
了优化的渲染引擎,IO的二进制输出,字节码属性访问增强,微观上,通过一维数组保存上下文
Context,
静
态文本合并处理,通过重复使用字节数组来防止
java
频繁的创建和销毁数组,还使用模板缓存,运行时优化
等方法。详情参考附录
Beetl2.2
使用说明书
20150406
知行合一
Beetl2.2
使用说明书
20150406 2
独特功能
Beetl
有些功能是发展了
10
多年的模板引擎所不具备的,这些功能非常利于模板的开发和维护,如下
1.
自定义占位符和控制语句起始符号,这有利于减小模板语法对模板的倾入性,比如在
html
模板中,如果
定义控制语句符号是
<!--:
和
-->,
那么,大部分模板文件都能同过浏览器打开。有的使用者仅仅采用了单个
符号
@
以及回车换号作为控制语句起始符号,这又能提高开发效率
2.
可单独测试的模板。无需真正的控制层和模型层,Beetl的模板就可以单独开发和测试
3.
同时支持较为松散的
MVC
和严格的MVC,如果在模板语言里嵌入计算表达式,复杂条件表达式,以及函数
调用有干涉业务逻辑嫌疑,你可以禁止使用这些语法。
4.
强大的安全输出,通过安全输出符号!,能在模板变量,变量属性引用,for循环,占位符输出,try-
catch
中等各个地方提供安全输出,保证渲染正常
5.
模板变量:运行将模板的某一部分输出像
js
那样赋值个一个变量,稍后再处理。利用模板变量能完成非常
复杂的页面布局(简单的布局可使用
layout
标签函数)
6.
类型推测,能在运行的时候推测模板变量类型,从而优化性能,也可以通过注解的方法显示的说明模板变
量属性(这是非必须的,但有助于
IDE
自动提示功能)
7.
可插拔的设计,错误信息提示,模板引擎缓存机制,模板资源管理,本地调用的安全管理器,严格
MVC
限
制,模板引擎本身都有默认的实现,但又完全可以自定义以适合特定需求
8.
增强的语法,如
for-elsefor, select-
case,安全输出符号!
等,这些语法特别适合模板开发
9.
局部渲染技术,结合现在
js
的
ajax
技术。
10.
性能超高,具有最快的模板解释引擎,同时,又有较低的
CPU
消耗。5-6倍于国内使用的Freemaker。适合
各类模板应用,如代码生成工具,CMS系统,普通网站,超高访问量的门户系统,和富客户端
JS
框架整合
的后台管理应用
新手如何开始
需要通读基本用法,大部分都是讲解语法,而语法跟
js
很接近,所以可以快速预览,但
Beetl
是针对模板设
计,
所以像安全输出,标签和
html
标签,全局变量,临时变量和共享变量,布局技术,以及直接调用
java
代
码等还需要认真读一遍。
如果从事
web
开发,还需要阅读
web
集成里的第一节“web提供的全局变量”,如果
web
里还使用
ajax
技术,
可以阅读“整合
ajax
的局部渲染技术”
联系作者
作者:闲.大赋
(李家智)
QQ
群:
219324263
邮件:
xiandafu@126.com [mailto:xiandafu@126.com]
Beetl
主页:
ibeetl.com
源码主页:
https://github.com/javamonkey/beetl2.0
在线体验和代码分享
http://ibeetl.com:8080/beetlonline/
如果有任何疑问或者提交bug,可以直接联系我
Beetl2.2
使用说明书
20150406
知行合一
Beetl2.2
使用说明书
20150406 3
资助
Beetl
•
官网有捐助账号,支付宝的,如果有大额,请直接先联系我。
•
官网有百度联盟的广告,如果你有兴趣,点击广告,我会有
5
毛钱。
2.
基本用法
从
GroupTemplate
开始
StringTemplateResourceLoader resourceLoader = new StringTemplateResourceLoader();
Configuration cfg = Configuration.defaultConfiguration();
GroupTemplate gt = new GroupTemplate(resourceLoader, cfg);
Template t = gt.getTemplate("hello,${name}");
t.binding("name", "beetl");
String str = t.render();
System.out.println(str);
Beetl
的核心是GroupTemplate,创建
GroupTemplate
需要俩个参数,一个是模板资源加载器,一个是配置类,模板
资源加载器
Beetl
内置了
4
种,分别是
•
StringTemplateResourceLoader:字符串模板加载器,用于加载字符串模板,如本例所示
•
FileResourceLoader:文件模板加载器,需要一个根目录作为参数构造,,传入
getTemplate
方法的
String
是模
板文件相对于
Root
目录的相对路径
•
ClasspathResourceLoader:文件模板加载器,模板文件位于
Classpath
里
•
WebAppResourceLoader:用于
webapp
集成,假定模板根目录就是
WebRoot
目录
代码第
5
行将变量
name
传入模板里,其值是“Beetl”。
代码第
6
行是渲染模板,得到输出,template提供了多种
获得渲染输出的方法,如下
• tempalte.render()
返回渲染结果,如本例所示
• template.renderTo(Writer)
渲染结果输出到
Writer
里
• template.renderTo(OutputStream )
渲染结果输出到
OutputStream
里
1.
关于如何使用模板资源加载器,请参考下一节
2.
如何对模板进行配置,请参考下一节
模板基础配置
Beetl
提供不但功能齐全,而且还有很多独特功能,通过简单的配置文件,就可以定义众多的功能,默认情况
下,Configuration类总是会先加载默认的配置文件(位于/
org/beetl/core/beetl-
default.properties,作为新
手,通常只需要关注
3,4,5,6
行定界符的配置,以及
11
行模板字符集的配置就可以了,其他配置会在后面章节陆续
提到)下,其内容片断如下:
#
默认配置
ENGINE=org.beetl.core.engine.FastRuntimeEngine
DELIMITER_PLACEHOLDER_START=${
Beetl2.2
使用说明书
20150406
知行合一
Beetl2.2
使用说明书
20150406 4
DELIMITER_PLACEHOLDER_END=}
DELIMITER_STATEMENT_START=<%
DELIMITER_STATEMENT_END=%>
DIRECT_BYTE_OUTPUT = FALSE
HTML_TAG_SUPPORT = true
HTML_TAG_FLAG = #
HTML_TAG_BINDING_ATTRIBUTE = var
NATIVE_CALL = TRUE
TEMPLATE_CHARSET = UTF-8
ERROR_HANDLER = org.beetl.core.ConsoleErrorHandler
NATIVE_SECUARTY_MANAGER= org.beetl.core.DefaultNativeSecurityManager
MVC_STRICT = FALSE
\#
资源配置,resource后的属性只限于特定
ResourceLoader
RESOURCE_LOADER=org.beetl.core.resource.ClasspathResourceLoader
#classpath
根路径
RESOURCE.root= /
#
是否检测文件变化
RESOURCE.autoCheck= true
#
自定义脚本方法文件的
Root
目录和后缀
RESOURCE.functionRoot = functions
RESOURCE.functionSuffix = html
#
自定义标签文件
Root
目录和后缀
RESOURCE.tagRoot = htmltag
RESOURCE.tagSuffix = tag
#####
扩展
##############
##
内置的方法
FN.date = org.beetl.ext.fn.DateFunction
......
##
内置的功能包
FNP.strutil = org.beetl.ext.fn.StringUtil
......
##
内置的默认格式化函数
FTC.java.util.Date = org.beetl.ext.format.DateFormat
.....
##
标签类
TAG.include= org.beetl.ext.tag.IncludeTag
第
2
行配置引擎实现类,默认即可.
第
3,4
行指定了占位符号,默认是
${ }.
也可以指定为其他占位符。
第
4,5
行指定了语句的定界符号,默认是
<% %>,
也可以指定为其他定界符号
第
6
行指定
IO
输出模式,默认是
FALSE,
即通常的字符输出,在考虑高性能情况下,可以设置成true。详细请参考高
级用法
第
8,9
行指定了支持
HTML
标签,且符号为#(只能用一个符号标示),默认配置下,模板引擎识别
<#tag ></#tag>
这样的类似
html
标签,并能调用相应的标签函数或者模板文件。
第
10
行
指定如果标签属性有var,则认为是需要绑定变量给模板的标签函数
第
11
行指定允许本地
Class
直接调用
第
12
行指定模板字符集是
UTF-8
第
13
行指定异常的解析类,默认是ConsoleErrorHandler,他将在
render
发生异常的时候在后台打印出错误信息
(System.out)。
Beetl2.2
使用说明书
20150406
知行合一
Beetl2.2
使用说明书
20150406 5
第
14
行指定了本地
Class
调用的安全策略
第
15
行配置了是否进行严格MVC,通常情况下,此处设置为
false.
第
18
行指定了默认使用的模板资源加载器
第
20
到
22
行配置了模板资源加载器的一些属性,如设置根路径为/,即
Classpath
的顶级路径,并且总是检测模板是
否更改
第
23
行配置了自定义的方法所在的目录以及文件名后缀。beetl既支持通过
java
类定义方法,也支持通过模板文件
来定义方法
第
26
行配置了自定义的
html
标签所在的目录以及文件名后缀。beetl既支持通过
java
类定义标签,也支持通过模板
文件来定义标签
第
31
行注册了一个
date
方法,其实现类是
org.beetl.ext.fn.DateFunction
第
34
行注册了一个方法包strutil,其实现类org.beetl.ext.fn.StringUtil,此类的每个
public
方法都将注册为
beetl
的方法
第
37
行注册了一个日期格式化函数
第
40
行注册了一个
include
标签函数
模板开发者可以创建一个
beetl.properties
的配置文件,此时,该配置文件将覆盖默认的配置文件属性,比如,你的
定界符考虑是
<!--:
和
-
→
,
则在
beetl.properties
加入一行即可,并将此配置文件放入
Classpath
根目录下即
可。
Configuration.defaultConfiguration()
总是先加载系统默认的,然后再加载
Beetl.properties
的配置属性,如果
有重复,用后者代替前者的配置
#
自定义配置
DELIMITER_STATEMENT_START=<!--:
DELIMITER_STATEMENT_END=-->
模板资源加载器
资源加载器是根据
String
值获取
Resource
实例的工场类,同时资源加载器还要负责响应模板引擎询问模板是否变化
的调用。对于新手来说,无需考虑模板资源加载器如何实现,只需要根据自己场景选择系统提供的三类模板资源加
载器即可
字符串模板加载器
在创建
GroupTemplate
过程中,如果传入的是StringTemplateResourceLoader,则允许通过调用
gt.getTemplate(String template)
来获取模板实例对象,如
2.1
所示
文件资源模板加载器
更通常情况下,模板资源是以文件形式管理的,集中放在某一个文件目录下(如
webapp
的模板根目录就可能是
WEB-INF/template
里),因此,可以使用
FileResourceLoader
来加载模板实例,如下代码:
String root = System.getProperty("user.dir")+File.separator+"template";
FileResourceLoader resourceLoader = new FileResourceLoader(root,"utf-8");
Configuration cfg = Configuration.defaultConfiguration();
GroupTemplate gt = new GroupTemplate(resourceLoader, cfg);
Template t = gt.getTemplate("/s01/hello.txt");
String str = t.render();
System.out.println(str);
剩余61页未读,继续阅读
资源评论
sinat_21425033
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功