第五章:视图技术之-Beetl模板引擎

1、特性介绍

  • 功能完备:作为主流模板引擎,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也支持自定义占位符和控制语句起始符号也支持使用者完全可以打造适合自己的工具包。
  • 可以扩展为脚本引擎,规则引擎,能定制引擎从而实现高级功能。

2、安装Beetl

<dependency>
   <groupId>com.ibeetl</groupId>
   <artifactId>beetl-framework-starter</artifactId>
   <version>1.1.49.RELEASE</version>
</dependency>

在Spring Boot中,beetl-framework-starter将自动配置以btl结尾的所有视图,将自动使用Beetl渲染相应的resources/templates目录下的视图文件

3、模板基础配置

Beetl提供不但功能齐全,而且还有很多独特功能,通过简单的配置文件,就可以定义众多的功能,默认情况下,Configuration类总是会先加载默认的配置文件(位于/org/beetl/core/beetl-default.properties,作为新手,通常只需要关注3,4,5,6行定界符的配置,以及12行模板字符集的配置就可以了,其他配置会在后面章节陆续提到,同时,对于Spring等框架,有些配置将会被这些框架的配置覆盖,需要参考后面章节)下,其内容片断如下:

#默认配置
ENGINE=org.beetl.core.engine.DefaultTemplateEngine
DELIMITER_PLACEHOLDER_START=${
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= /
#是否检测文件变化,开发用true合适,但线上要改为false
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

4、设置定界符号和占位符

Beetl支持自定义定界符号和占位符号,默认使用<% %>作为定界符号,使用${}作为占位符号,也可以配置自己喜爱的占位符,常用的有:

@ 和回车符作为定界符号;

<??>类似PHP符号;

<!--#--> 使用HTML注释符号作为定界符号,加了一个#符号以区别正常的HTML注释

可以通过配置文件来设置定界符号,需要在resources目录下创建一个beetl.properties文件,设置内容如下:

DELIMITER_PLACEHOLDER_START=${
DELIMITER_PLACEHOLDER_END=}
DELIMITER_STATEMENT_START=<%
DELIMITER_STATEMENT_END=%>

后续讲解,将采用“@” 和“回车换行”作为定界符号,占位符使用传统的“${”和"}"。

5、配置Beetl

Beetl 为了提高渲染性能,会在渲染模板后,缓存模板的语法解析结果,Beetl每次渲染钱都会检测模板文件是否更新,如果已经更新,则重新解析模板。

由于检测模板是否更新会有一个I/O操作,因此线上系统可以取消检测,需要在application.properties中添加以下配置:

beetl-beetlsql.dev=false   

Beetl默认配置时自动检测模板是否变化,但有的IDE并不会讲resource/templates目录下的文件变化同步到Maven工程的target目录下,所以即使文件发生变化,Beetl也检测不到,若出现状况,一个通用的办法是讲resource目录设置为src目录,这样resource目录下的任何文件有变更都会同步到target目录下 

载Spring Boot应用中,所有以btl结尾的模板都会交给Beetl模板引擎渲染,如果你喜欢一html结尾,需要在application.properties中添加以下配置项:

beetl.suffix=html

6、groupTemplate

猜你喜欢

转载自my.oschina.net/zupengliu/blog/1815404