文档章节

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

 刘祖鹏
发布于 2018/05/19 21:13
字数 1190
阅读 344
收藏 3

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

© 著作权归作者所有

粉丝 9
博文 57
码字总数 82911
作品 0
通州
高级程序员
私信 提问
转:关于beetl集成struts2 +convention插件无法识别beetl模板的处理方案

转自 jplus 文章 今天第一次接触这个模板引擎,感觉非常不错,平时都是使用spring mvc开发,目前教带学生做一个小项目,使用struts+guice+mybatis,于是想试试这个模板引擎开开实际使用情况。...

闲大赋
2014/12/18
163
0
Beetl 1.1 发布,国产的模板语言

十几年来,企业应用、互联网应用后端技术发生了很多变革,从分布式到Without EJB,从Database到Nosql,公司成本得到了很大降低。然而,对于架构师来说,同样重要的前端技术,仍然没有变化,无...

鉴客
2012/03/05
1K
5
NutzWk 3.2.4 发布,新增微信模板消息等

NutzWk 3.2.4 发布了,NutzWk 是基于国产JAVA开源框架 Nutz 开发的一套集成Shiro权限控制、Ehcache缓存、Beetl模板引擎、Quartz、Redis、二维码、pdf等技术的开源企业级开发框架。 源码地址:...

Wizzer
2016/08/11
1K
6
Beetl 2.1.0 发布,java模板引擎

Beetl 2.1.0 发布,此版本更新内容如下: 功能增强: 1 通过配置SimpleCrossFilter允许通过浏览器直接访问模板而不需要事先准备好Controller和Model 2 Spring 集成增强,允许注册被spring管理...

闲大赋
2014/10/23
2.1K
21
还在用AJAX+Json,改用AJAX+Beetl吧

浏览器通过AJAX,服务器返回json数据,无刷新的更新视图的这种模式在WEB开发中我已经用了很长时间了,记得最早是08年的时候用的,当时传递JSON数据让我眼前一亮。这种方式是只需要采用工具包...

闲大赋
2015/03/10
2.9K
14

没有更多内容

加载失败,请刷新页面

加载更多

一套完整的软件开发流程是怎样的?

做什么事都需要一个流程,软件开发也不例外。 那么,一个软件从无到有到底是怎么开发的?一个软件产品的结果为什么是这样?为什么开发的速度不能再快一点。为什么程序员大多秃顶?他们有那么...

我想造火箭
23分钟前
4
0
漂亮思维导图怎样绘制?教你快速套用思维导图模板绘制d

用MindMaster软件绘制思维导图,会更加高效和美观!因为MindMaster是一款专业的思维导图软件,零基础经验的朋友花费5分钟时间就能掌握它的相关画法。以下是电脑软件思维导图画法的简单步骤。...

工具分享
26分钟前
4
0
linux 软链接与 硬链接的区别

软链接与硬链接的区别 1. 硬链接不会创建inode,即使用的inode都是一样的。软链接会创建新的inode。 2. 硬链接的访问属性和源文件一模一样,没有l的标识。软链接的访问属性写明了是l,且访问...

突突突酱
27分钟前
2
0
新特性解读 | MySQL 8.0.18 有权限控制的复制

原文:Replication with restricted privileges https://mysqlhighavailability.com/replication-with-restricted-privileges/ 作者:Pedro Figueiredo 翻译:管长龙 背景 MySQL 8.0.18 以前......

爱可生
35分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部