本文基于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. SpringBoot系列: Pebble模板引擎

    ===============================Java 模板引擎选择===============================SpringBoot Starter项目向导中可选的J ...

  2. SpringBoot日记——Thymeleaf模板引擎篇

    开发通常我们都会使用模板引擎,比如:JSP.Velocity.Freemarker.Thymeleaf等等很多,那么模板引擎是干嘛用的? 模板引擎,顾名思义,是一款模板,模板中可以动态的写入一些参数, ...

  3. Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)

    前言 由于在开发My Blog项目时使用了大量的技术整合,针对于部分框架的使用和整合的流程没有做详细的介绍和记录,导致有些朋友用起来有些吃力,因此打算在接下来的时间里做一些基础整合的介绍,当然,可能也 ...

  4. 【转载】Velocity模板引擎的介绍和基本的模板语言语法使用

    原文地址http://www.itzhai.com/the-introduction-of-the-velocity-template-engine-template-language-syntax- ...

  5. springboot:Java模板引擎Thymeleaf介绍

    Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎.类似JSP,Velocity,FreeMaker等,它也可以轻易的与Spring MVC等Web框架进行集成作为Web应用 ...

  6. Springboot与Thymeleaf模板引擎整合基础教程(附源码)

    前言 由于在开发My Blog项目时使用了大量的技术整合,针对于部分框架的使用和整合的流程没有做详细的介绍和记录,导致有些朋友用起来有些吃力,因此打算在接下来的时间里做一些基础整合的介绍,当然,可能也 ...

  7. SpringBoot集成Thymeleaf模板引擎

    简单介绍 目前在JavaEE领域有几中比较常用的模板引擎,分别是Jsp.Velocity.Freemarker.Thymeleaf,对Freemark语法不是特别熟悉,不过对于前端页面渲染效率来说,j ...

  8. SpringBoot:2.SpringBoot整合Thymeleaf模板引擎渲染web视图

    在Web开发过程中,Spring Boot可以通过@RestController来返回json数据,那如何渲染Web页面?Spring Boot提供了多种默认渲染html的模板引擎,主要有以下几种: ...

  9. Velocity模板引擎语法

    Velocity 模板引擎介绍 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java ...

随机推荐

  1. webstorm 的 .后缀名-tab快捷键

    if (key) {}//key.if tab if (!key) {}//key.else tab if (key != null) {}//key.notnull tab if (typeof k ...

  2. docker容器日志收集方案(方案三 filebeat+journald本地日志收集)

    其实方案三和方案二日志采集套路一样,但是还是有点差别. 差别就在于日志格式如下: ​ 为了方便对比吧日志贴上来 Nov 16 10:51:58 localhost 939fe968a91d[4721] ...

  3. iOS Password AutoFill开发指南

    转载请标明来源:https://www.cnblogs.com/zhanggui/p/9431950.html 引言 在<iPhone User Guide for iOS 11.4>这本 ...

  4. 网络编程_tcp与dup协议简单应用

    老师的博客:http://www.cnblogs.com/Eva-J/articles/8066842.html 计算机网络基础 :http://www.cnblogs.com/Eva-J/artic ...

  5. 【English】20190320

    valid有效的 [ˈvælɪd]  solitary独立的 [ˈsɑ:ləteri] data definition not valid unless solitary qualifying有资格的 ...

  6. SQL学习 DECODE

    from 百度百科: DECODE有什么用途呢? 先构造一个例子,假设我们想给这些职员加工资,其标准是:工资在8000元以下的加20%:工资在8000元或以上的加15%,通常的做法是,先选出记录中的工 ...

  7. CF1012A Photo of The Sky

    CF1012A Photo of The Sky 有 \(n\) 个打乱的点的 \(x,\ y\) 轴坐标,现在告诉你这 \(2\times n\) 个值,问最小的矩形面积能覆盖住n个点且矩形长和宽分 ...

  8. Educational Codeforces Round 62 (Rated for Div. 2) Solution

    最近省队前联考被杭二成七南外什么的吊锤得布星,拿一场Div. 2恢复信心 然后Div.2 Rk3.Div. 1+Div. 2 Rk9,rating大涨200引起舒适 现在的Div. 2都怎么了,最难题 ...

  9. 乡下人重拾MVC——创建视图

    1. 创建视图都不勾选:代表不使用任何模版,页面的代码即为运行后显示的内容 2.  创建分部视图 代表统会自动把View文件夹下名为“_ViewStart.cshtml”的内容添加到新建的html最上 ...

  10. [Alpha阶段]第一次Scrum Meeting

    Scrum Meeting博客目录 [Alpha阶段]第一次Scrum Meeting 基本信息 名称 时间 地点 时长 第一次Scrum Meeting 19/04/01 大运村寝室6楼 40min ...