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

一、特性介绍

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

二、安装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目录下的视图文件html

三、模板基础配置

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

#默认配置
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

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

Beetl支持自定义定界符号和占位符号,默认使用<% %>做为定界符号,使用${}做为占位符号,也能够配置本身喜好的占位符,经常使用的有:web

@ 和回车符做为定界符号;sql

<??>相似PHP符号;缓存

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

能够经过配置文件来设置定界符号,须要在resources目录下建立一个beetl.properties文件,设置内容以下:app

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

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

五、配置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

六、groupTemplate

相关文章
相关标签/搜索