Beetl页面模板文档

阅读: 评论:0

Beetl页⾯模板⽂档
什么是Beetl
Beetl⽬前版本是2.7.23,相对于其他java模板引擎,具有功能齐全,语法直观,性能超⾼,以及编写的模板容易维护等特点。使得开发和维护模板有很好的体验。是新⼀代的模板引擎。总得来说,它的特性如下:
1. 功能完备:
作为主流模板引擎,Beetl具有相当多的功能和其他模板引擎不具备的功能。适⽤于各种应⽤场景,从对响应速度有很⾼要求的⼤⽹站到功能繁多的CMS管理系统都适合。Beetl本⾝还具有很多独特功能来完成模板编写和维护,这是其他模板引擎所不具有的。
2. ⾮常简单:
类似Javascript语法和习俗,只要半⼩时就能通过半学半猜完全掌握⽤法。拒绝其他模板引擎那种⾮⼈性化的语法和习俗。同时也能⽀持html 标签,使得开发CMS系统⽐较容易
超⾼的性能:Beetl 远超过主流java模板引擎性能(引擎性能5-6倍与freemaker,2倍于JSP。参考附录),⽽且消耗较低的CPU。3. 易于整合:
Beetl能很容易的与各种web框架整合,如Spring MVC,JFinal,Struts,Nutz,Jodd,Servlet等。
⽀持模板单独开发和测试,即在MVC架构中,即使没有M和C部分,也能开发和测试模板。
扩展和个性化:Beetl⽀持⾃定义⽅法,格式化函数,虚拟属性,标签,和HTML标签. 同时Beetl也⽀持⾃定义占位符和控制语句起始符号也⽀持使⽤者完全可以打造适合⾃⼰的⼯具包。
可以扩展为脚本引擎,规则引擎,能定制引擎从⽽实现⾼级功能。
关于性能:
通过与主流模板引擎Freemarker,Vecloity以及JSP对⽐,Beetl6倍于Freemarker,2倍于JSP。这是因为宏观上,通过了优化的渲染引擎,IO的⼆进制输出,字节码属性访问增强,微观上,通过⼀维数组保存上下⽂Context,静态⽂本合并处理,通过重复使⽤字节数组来防⽌java频繁的创建和销毁数组,还使⽤模板缓存,运⾏时优化等⽅法。详情参考附录
独特功能
Beetl有些功能是发展了10多年的模板引擎所不具备的,这些功能⾮常利于模板的开发和维护,如下
⾃定义占位符和控制语句起始符号,这有利于减⼩模板语法对模板的倾⼊性,⽐如在html模板中,如果定义控制语句符号是,那么,⼤部分模板⽂件都能通过浏览器打开。有的使⽤者仅仅采⽤了单个符号@ (或者单个符号“~”)以及回车换号作为控制语句起始符号,这⼜能提⾼开发效率
可单独测试的模板。⽆需真正的控制层和模型层,Beetl的模板就可以单独开发和测试
同时⽀持较为松散的MVC和严格的MVC,如果在模板语⾔⾥嵌⼊计算表达式,复杂条件表达式,以及函数调⽤有⼲涉业务逻辑嫌疑,你可以禁⽌使⽤这些语法。
强⼤的安全输出,通过安全输出符号!,能在模板变量,变量属性引⽤,for循环,占位符输出,try-catch中等各个地⽅提供安全输出,保证渲染正常。
模板变量:运⾏将模板的某⼀部分输出像js那样赋值给⼀个变量,稍后再处理。利⽤模板变量能完成⾮常复杂的页⾯布局(简单的布局可使⽤include,layout标签函数)
类型推测,能在运⾏的时候推测模板变量类型,从⽽优化性能,也可以通过注解的⽅法显⽰的说明模板变量属性(这是⾮必须的,但有助于IDE⾃动提⽰功能)
可插拔的设计,错误信息提⽰,模板引擎缓存机制,模板资源管理,本地调⽤的安全管理器,严格MVC限制,模板引擎本⾝都有默认的实现,但⼜完全可以⾃定义以适合特定需求
增强的语法,如for-elsefor, select-case,安全输出符号!,省略的三元表达式 等,这些语法特别适合模板开发
局部渲染技术,结合现在js的ajax技术。
性能超⾼,具有最快的模板解释引擎,同时,⼜有较低的CPU消耗。5-6倍于国内使⽤的Freemaker。适合各类模板应⽤,如代码⽣成⼯具,CMS系统,普通⽹站,超⾼访问量的门户系统,和富客户端JS框架整合的后台管理应⽤
⼩⽩如何开始
需要通读基本⽤法,⼤部分都是讲解语法,⽽语法跟js很接近,所以可以快速预览,但Beetl是针对模板设计, 所以像安全输出,标签和html标签,全局变量,临时变量和共享变量,布局技术,以及直接调⽤java代码等还需要认真读⼀遍。
如果从事web开发,还需要阅读web集成⾥的第⼀节“web提供的全局变量”,如果web⾥还使⽤ajax技术,可以阅读“整合ajax的局部渲染技术”。
包含有spring,jfinal,jodd,struts 等demo可以作为参考学习⽤ 任何问题,都可以在ibeetl 社区上提问。⽬前答复率是100%,提问需要详细说明⾃⼰的期望,出错信息,附上代码或者图⽚
联系作者
作者:闲.⼤赋 (李家智)等(参考附录查看代码贡献者)
QQ技术交流:219324263
邮件:xiandafu@126
Beetl社区:bbs.ibeetl
源码主页:
在线体验和代码分享:
基本⽤法批量抓鸡
1. 安装
如果使⽤maven,请使⽤如下坐标
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>2.7.23</version>
</dependency>
如果⾮maven⼯程,直接下载当铺网
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内置了6种,分别是
StringTemplateResourceLoader:字符串模板加载器,⽤于加载字符串模板,如本例所⽰
FileResourceLoader:⽂件模板加载器,需要⼀个根⽬录作为参数构造,传⼊getTemplate⽅法的String是模板⽂件相对于Root⽬录的相对路径
ClasspathResourceLoader:⽂件模板加载器,模板⽂件位于Classpath⾥
WebAppResourceLoader:⽤于webapp集成,假定模板根⽬录就是WebRoot⽬录,参考web集成章
MapResourceLoader : 可以动态存⼊模板
CompositeResourceLoader 混合使⽤多种加载⽅式
代码第5⾏将变量name传⼊模板⾥,其值是“Beetl”。 代码第6⾏是渲染模板,得到输出,template提
供了多种获得渲染输出的⽅法,如下
关于如何使⽤模板资源加载器,请参考下⼀节
如何对模板进⾏配置,请参考下⼀节
如果不想写代码直接体验Beetl,可以使⽤
3. 模板基础配置
Beetl提供不但功能齐全,⽽且还有很多独特功能,通过简单的配置⽂件,就可以定义众多的功能,默认情况下,Configuration类总是会先加载默认的配置⽂件(位于/org/beetl/core/beetl-default.properties,作为新⼿,通常只需要关注3,4,5,6⾏定界符的配置,以及12⾏模板字符集的配置就可以了,其他配置会在后⾯章节陆续提到,同时,对于Spring等框架,有些配置将会被这些框架的配置覆盖,需要参考后⾯章节)下,其内容⽚断如下:
#默认配置:
##- 配置引擎实现类,默认即可.
ENGINE=ngine.FastRuntimeEngine
##- 指定了占位符号,默认是${ },也可以指定为其他占位符。
DELIMITER_PLACEHOLDER_START=${
DELIMITER_PLACEHOLDER_END=}
##- 指定了语句的定界符号,默认是<% %>,也可以指定为其他定界符号
DELIMITER_STATEMENT_START=<%
DELIMITER_STATEMENT_END=%>
##- 指定IO输出模式,默认是FALSE,即通常的字符输出,在考虑⾼性能情况下,可以设置成true。详细请参考⾼级⽤法
DIRECT_BYTE_OUTPUT = FALSE
##- 指定了⽀持HTML标签,且符号为#,默认配置下,模板引擎识别<#tag ></#tag>这样的类似html标签,并能调⽤相应的标签函数或者模板⽂件。你也可以指定别的    HTML_TAG_SUPPORT = true
HTML_TAG_FLAG = #
##- 指定如果标签属性有var,则认为是需要绑定变量给模板的标签函数
HTML_TAG_BINDING_ATTRIBUTE = var
##- 指定允许本地Class直接调⽤
NATIVE_CALL = TRUE
##- 指定模板字符集是UTF-8
TEMPLATE_CHARSET = UTF-8
##- 指定异常的解析类,默认是ConsoleErrorHandler,他将在render发⽣异常的时候在后台打印出错误信息(System.out)。
ERROR_HANDLER = ConsoleErrorHandler
##- 指定了本地Class调⽤的安全策略
NATIVE_SECUARTY_MANAGER= DefaultNativeSecurityManager
##- 配置了是否进⾏严格MVC,通常情况下,此处设置为false.
MVC_STRICT = FALSE
#资源配置,resource后的属性只限于特定ResourceLoader
##- 指定了默认使⽤的模板资源加载器,注意,在beetl与其他MVC框架集成的时候,模板加载器不⼀定根据这个配置,⽐如spring,他的RESOURCE_LOADER以s    RESOURCE_LOADER=esource.ClasspathResourceLoader
#classpath 根路径
##- 配置了模板资源加载器的⼀些属性,如设置根路径为/,即Classpath的顶级路径,并且总是检测模板是否更改
<= /
#是否检测⽂件变化,开发⽤true合适,但线上要改为false
RESOURCE.autoCheck= true
#⾃定义脚本⽅法⽂件的Root⽬录和后缀
##- 配置了⾃定义的⽅法所在的⽬录以及⽂件名后缀。beetl既⽀持通过java类定义⽅法,也⽀持通过模板⽂件来定义⽅法
RESOURCE.functionRoot = functions
RESOURCE.functionSuffix = html
#⾃定义标签⽂件Root⽬录和后缀
##- 配置了⾃定义的html标签所在的⽬录以及⽂件名后缀。beetl既⽀持通过java类定义标签,也⽀持通过模板⽂件来定义标签
RESOURCE.tagRoot = htmltag
RESOURCE.tagSuffix = tag
>  扩展 >>####
# 内置的⽅法
##- 注册了⼀个date⽅法,其实现类是fn.DateFunction
FN.date = fn.DateFunction
#......
#内置的功能包
##- 注册了⼀个⽅法包strutil,其实现类fn.StringUtil,此类的每个public⽅法都将注册为beetl的⽅法
FNP.strutil = fn.StringUtil
#......
#内置的默认格式化函数
节能转轮除湿机##- 注册了⼀个⽇期格式化函数
FTC.java.util.Date = format.DateFormat
#.....
# 标签类
##- 注册了⼀个include标签函数
TAG.include= ag.IncludeTag
这配置⽂件整体说明了Beetl提供的功能
模板开发者可以创建⼀个beetl.properties的配置⽂件,此时,该配置⽂件将覆盖默认的配置⽂件属性,⽐如,你的定界符考虑是<!--:和 --> ,则在beetl.properties加⼊⼀⾏即可,并将此配置⽂件放⼊Classpath根⽬录下即可。 Configuration.defaultConfiguration()总是先加载系统默认的,然后再加载Beetl.properties的配置属性,如果有重复,⽤后者代替前者的配置
h5n6#⾃定义配置设备防尘罩
DELIMITER_STATEMENT_START=<!--:
DELIMITER_STATEMENT_END=-->
2.4.0 新功能:beetl ⽀持通过模板本⽣来完成函数,即模板函数,或者通过模板来实现HTML标签(⽽不⽤写java代码),可以
beetl.properties为这种应⽤设置的不同的语句定界符来跟常规模板做区分,如下:
FUNCTION_TAG_LIMITER=<% ; %>分号分割开,如果配置⽂件没有FUNCTION_TAG_LIMITER=,则模板函数,html标签使⽤同DELIMITER_STATEMENT_START,DELIMITER_STATEMENT_END
4. 模板资源加载器
资源加载器是根据String值获取Resource实例的⼯场类,同时资源加载器还要负责响应模板引擎询问模板是否变化的调⽤。对于新⼿来说,⽆需考虑模板资源加载器如何实现,只需要根据⾃⼰场景选择系统提供的三类模板资源加载器即可
1. 字符串模板加载器
在创建GroupTemplate过程中,如果传⼊的是StringTemplateResourceLoader,则允许通过调⽤gt.getTemplate(String template)来获取模板实例对象,如2.1所⽰
1. ⽂件资源模板加载器
更通常情况下,模板资源是以⽂件形式管理的,集中放在某⼀个⽂件⽬录下(如webapp的模板根⽬录就可能是WEB-INF/template⾥),因此,可以使⽤FileResourceLoader来加载模板实例,如下代码:
/**
* 第1⾏代码指定了模板根⽬录,即位于项⽬⼯程下的template⽬录
野战光缆* 第2⾏构造了⼀个资源加载器,并指定字符集为UTF-8 (也可不指定,因为配置⽂件默认就是UTF-8);
* 第5⾏通过模板的相对路径/来加载模板
*/
String root = Property("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("/");
String str = t.render();
System.out.println(str);
1. Classpat模板加载器
还有种常情况下,模板资源是打包到jar⽂件或者同Class放在⼀起,因此,可以使⽤ClasspathResourceLoader来加载模板实例,如下代码:

本文发布于:2023-07-27 08:35:54,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/194274.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模板   引擎   加载   配置   资源   输出   变量
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图