本文基于Pebble官方文档, 对pebble的语法做一些介绍.

===============================
Pebble 官方资料
===============================
主页: https://pebbletemplates.io/
github wiki: https://github.com/PebbleTemplates/pebble/wiki

===============================
Pebble 基本语法
===============================表达式使用 {{  }} 括起来{{expression}}

注释使用 {#  #} 括起来{# This is a comment #}

控制类语句使用 {%  %} 括起来

循环控制, 和python类似, for循环中支持else.

{% for article in articles %}<h3>{{ article.title }}</h3><p>{{ article.content }}</p>
{% else %}<p>no article yet</p>
{% endfor %}

If 控制

{% if category == "news" %}{{ news }}
{% elseif category == "sports" %}{{ sports }}
{% else %}<p>Please select a category</p>
{% endif %}

变量赋值

{% set header = "Test Page" %}
{{ header }}

===============================
表达式
===============================
简单表达式
{{variable}}
{{obj.property}}

简单函数表达式
{{max(var1, var2) }}

Literals 表达式包括:
    字符串: 使用单引号或双引号括起来.
    true/false: 布尔值
算术表达式, 加减乘除等等
null 或 none : 等同于 Java 的 null
列表集合表达式: [1,2,3] 或 ["one","two"]
map集合表达式: {"a":1,"b":2}
两个集合包含操作符为:  contains
元素是否集合用:  in
逻辑操作符有:  and , or , not
比较符号有:  > , < 等等
相等符号为:  is

===============================
function
===============================
max()
min()
range(0, 3)
range(0, 6, 2)
0..3 相当于 range(0, 3)

===============================
test 断言
===============================
test 是 pebble 一个非常有特点的概念, 和 is 操作符配合使用, 用来判断表达式是否为真.
is even , 判断是否为偶数
is odd, 判断是否奇数
is null, 判断是否为null
is empty, 判断是否为 empty, 包括的情形有: 对象为null,或字符串变量为"", 或空列表, 或空map等.
is map, 判断表达式是否为map
is iterable, 判断表达式是否可iterable.

===============================
filter
===============================
相比于 function 和 test, filter更经常使用到, 内置的filter有很多, 比如 upper/lower/default 等等,
{{ name || default('no value')}}

slice(fromIndex, toIndex) 的取值效果是[fromIndex, toIndex)
{{ 'Mitchell' | slice(1,3) }}

数字格式化
{{ 3.141592653 | numberformat("#.##") }}

日期格式化
{{ user.birthday | date("yyyy-MM-dd") }}

===============================
表达式的大小写
===============================
顶级variable变量, 其名称大小写敏感, 比如:
{{namE}} 和 {{name}} 是不同的.

属性级的名称, 大小写不敏感, 比如:
{{book.author}} 和 {{book.authoR}} 是效果一样.

对于 {{book.author}} 这样的占位符, Pebble 会智能地匹配下面的方案或屬性:
     book.get("author")
     book.getAuthor()
     book.isAuthor()
     book.hasAuthor()
     book.author()
     book.author

===============================
一些特别的tag
===============================
extends tag 用来扩展一个模板
{% extends "base" %}

include 用来将一个模板合并当当前文档中
{% include "advertisement" %}

import 用来将指定模板中的macro引入
{% import "form_util" %}

set 用来定义一个变量
{% set header = "Test Page" %}
{{ header }}

autoescape 用来打开或关闭自动转移, 甚至还可以设定使用何种转义的引擎

{% autoescape false %}{{ danger }} {# will not be escaped #}
{% endautoescape %}

verbatim tag 告诉 pebble 不要按照pebble的语法解析tag内的内容, 该功能非常适合和一些 js 前段框架搭配使用.

{% verbatim %}{% for user in users %}{{ user.name }}{% endfor %}}
{% endverbatim %}

macro tag 可以定义一些代码片段, 然后复用这些macro:

{% macro input(type="text", name, value) %}<input type="{{ type }}" name="{{ name }}" value="{{ value }}" />
{% endmacro %{{ input(name="country") }}
{# will output: <input type="text" name="country" value="" /> #}{% import "form_util" %}
{{ input("text", "country", "Canada") }}

===============================
pebble的扩展性
===============================
pebble 不仅仅使用简单, 而且扩展性非常好, 可以使用java代码编写自己的 filter/function/test, 甚至可以扩展操作符.

选Java后端模板引擎强烈推荐pebble.

SpringBoot系列: Pebble模板引擎语法介绍相关推荐

  1. Java模板引擎 FreeMarker介绍1

    Java模板引擎 FreeMarker介绍 摘要: FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写,FreeMarker被设计用来生成HTML Web页面( ...

  2. tal php x 1,PHP中TAL模板引擎语法的解析(代码)

    这篇文章给大家介绍的内容是关于php TAL模板引擎语法,内容很详细,有需要的朋友可以参考一下,希望可以帮助到大家. PHP 数据 本文档的使用到的数据($talData)//定义talData变量 ...

  3. Helm模板常用语法介绍与简单应用场景

    Helm模板常用语法介绍与简单应用场景 文章目录 Helm模板常用语法介绍与简单应用场景 什么是Helm _help.tpl子模版 应用场景 预定义对象 关于变量 关键字及应用 函数 流程与控制 什么 ...

  4. <12>springboot集成thymeleaf模板引擎

    创建一个springboot工程,导入以下依赖 <dependencies><!--springboot框架web组件依赖--><dependency><gr ...

  5. SpringBoot整合Thymeleaf模板引擎以及静态资源的访问

    SpringBoot整合Thymeleaf模板引擎静态资源访问的配置 Thymeleaf是一个现代服务器端Java模板引擎,适用于Web和独立环境,能够处理HTML,XML,JavaScript,CS ...

  6. velocity(vm)模板引擎学习介绍及语法

    velocity模板引擎学习 velocity与freemaker.jstl并称为java web开发三大标签技术,而且velocity在codeplex上还有.net的移植版本NVelocity,( ...

  7. 玩转springboot:thymeleaf模板引擎入门程序

    一.前言 常用的模板引擎有:JSP.Velocity.Freemarker.Thymeleaf 但是,Springboot默认是不支持JSP的,默认使用thymeleaf模板引擎.而且,语法更简单,功 ...

  8. SpringBoot笔记之模板引擎

    模板引擎 1. SpringBoot Web开发总览 1.1 Web开发静态资源处理 1.2 首页处理 2. Thymeleaf模板引擎 2.1 模板引擎 2.2 引入Thymeleaf 2.3 Th ...

  9. 九、SpringBoot集成Thymeleaf模板引擎

    Thymeleaf咋读!??? 呵呵,是不是一脸懵逼...哥用我的大学四级英文知识告诉你吧:[θaimlif]. 啥玩意?不会音标?...那你就这样叫它吧:"赛母李府",大部分中国 ...

  10. 六十四、SpringBoot中的模板引擎Thymeleaf

    @Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 文章目录 使用Sprin ...

最新文章

  1. html超链接button
  2. VS2005+SQL2005 ASP.NET2.0数据库连接
  3. [技巧]如何获得某个callstack所在线程的线程号?
  4. 64位十六进制转浮点数
  5. mysql死锁解决办法
  6. python 值传递还是引用传递_python函数是值传递还是引用传递
  7. CF 459A 459B 459C 459D 459E
  8. redis的zset的底层实现_Redis(三)--- Redis的五大数据类型的底层实现
  9. kafka集群为什么需要三个节点_大白话带你认识 Kafka
  10. LeetCode 201. 数字范围按位与
  11. python爬取小说项目概述_Python实战项目网络爬虫 之 爬取小说吧小说正文
  12. 开源一款超实用的 Dubbo 测试工具,已用半年,感觉很有feel~
  13. 使用Flask-SocketIO完成服务端和客户端的双向通信
  14. p2p 源码 linux,我们打算开发一个WiFi功能的P2P文件共享系统在Linux平台…
  15. SQL Server IF Exists 判断数据库对象是否存在的用法
  16. 面试大厂被怼!这都搞不定,你只能做“搬运工”!
  17. oracle语句_ORACLE 常用语句实例:CTE MERGE 结合
  18. 解决Rational Rose找不到suite objects.dll文件的问题
  19. 偶尔文艺-关于想要转录MIDI从YAMAHA到MAC
  20. phpstud使用教程_phpstudy使用方法详细图文教程

热门文章

  1. 第5讲:VUE3工程中实现页面加载中效果和页面切换动画效果。
  2. startActivity报错exposed beyond app through Intent.getData()
  3. centos开机启动项管理
  4. CANape |Option Driver Assistance功能详解
  5. 油猴脚本(Tampermonkey)的简介
  6. keil4 c语言标准,求助!关于KEIL4和C语言
  7. Oracle P6 -SQLServer数据库乱码案例分享
  8. Vivado18.3的安装 安装教程
  9. python爬公众号文章_python爬取指定微信公众号文章
  10. win10,secoclient总是报错:与对方建立连接超时,配置错误或网络故障