写点什么

Beetl 使用记录

作者:Geek_163f36
  • 2022 年 8 月 08 日
  • 本文字数:1081 字

    阅读完需:约 4 分钟

Beetl使用记录

Beetl 是模版引擎,可以作为 web 页面渲染使用,也可以作为单纯的模版使用。


3.0源码在 gitee 上。公司项目中有使用到,这里记录下。


其语法有点类似于 JSP+JS 的混合体,目前大部分项目都使用前后端分离,模板引擎已经很少在 web 项目中作为 htlm 模板引擎使用,不过 beetl 也可以单独作为模板引擎使用,类似代码模板,sql 模板等.

POM

<dependency>  <groupId>com.ibeetl</groupId>  <artifactId>beetl</artifactId>  <version>${version}</version></dependency>
复制代码

基础语法


其它配置参考默认配置文件,其中都可以自己习惯修改关键字(位于/org/beetl/core/beetl-default.properties)


逻辑控制


  • 条件判断 :除常规 if-else,switch-case 外,增加了 switch-case 增强语法,省略 break 关键字,多个条件使用,隔开

  • 循环:常规 for(exp;exp;exp),while,for-in 都支持

  • for-in:中额外增加了内置变量

  • 变量名 LP.index 当前的索引,从 1 开始

  • 变量名 LP.even 索引是否是偶数

  • 变量名 LP.odd 索引是否是奇数

  • 变量名 LP.first 是否是第一个

  • 变量名 LP.last 是否是最后一个

  • 变量名 LP.dataIndex 索引,从 0 开始

  • 变量名 P.size 集合的长度

  • elsefor:表示未进入 for 循环的处理


    <%  var list = [];  for(item in list){    }elsefor{    print("未有记录");  }  %>
复制代码


解析字符串模版

        StringTemplateResourceLoader resourceLoader = new StringTemplateResourceLoader();        Configuration cfg = Configuration.defaultConfiguration();        GroupTemplate gt = new GroupTemplate(resourceLoader, cfg);        String templateStr = "${json(_root)}";        Template template = gt.getTemplate(templateStr);        Map<String,Object> map = new HashMap<>();        map.put("a",123);        map.put("b","ada");        template.binding("_root",map);        System.out.println(template.render());
复制代码


说明:


  • tempStr:字符串模板

  • _root:根变量,使用根变量则属性访问可省略前缀

  • json():内置函数,可将变量转换为 json 字符串,可作为代码执行后的输出存储


内置方法在 org.beetl.ext.fn 包中.存在两种情况


  1. 实现 Function 接口,这类方法参照配置文件中配置简写即可访问,配置文件中以 FN.作为前缀的配置

  2. 独立的工具类:strutil 字符串工具类,配置文件中以 FNP.作为前缀的配置,访问时通过 strutil.方法名访问.


常用内置函数:



调用 JAVA 原生方法 :


使用在逻辑代码/取值表达式中使用 @开始则表示使用 java 语法


${@com.xxxx.constants.Order.getMaxNum()}<%var max = @com.xxxx.constants.Order.MAX_NUM;%>
复制代码

参考资料

https://www.kancloud.cn/xiandafu/beetl3_guide/2138946

用户头像

Geek_163f36

关注

还未添加个人签名 2020.06.10 加入

还未添加个人简介

评论

发布
暂无评论
Beetl使用记录_Geek_163f36_InfoQ写作社区