SpringBoot系列: Pebble模板引擎语法介绍
本文基于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模板引擎语法介绍的更多相关文章
- SpringBoot系列: Pebble模板引擎
===============================Java 模板引擎选择===============================SpringBoot Starter项目向导中可选的J ...
- SpringBoot日记——Thymeleaf模板引擎篇
开发通常我们都会使用模板引擎,比如:JSP.Velocity.Freemarker.Thymeleaf等等很多,那么模板引擎是干嘛用的? 模板引擎,顾名思义,是一款模板,模板中可以动态的写入一些参数, ...
- Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
前言 由于在开发My Blog项目时使用了大量的技术整合,针对于部分框架的使用和整合的流程没有做详细的介绍和记录,导致有些朋友用起来有些吃力,因此打算在接下来的时间里做一些基础整合的介绍,当然,可能也 ...
- 【转载】Velocity模板引擎的介绍和基本的模板语言语法使用
原文地址http://www.itzhai.com/the-introduction-of-the-velocity-template-engine-template-language-syntax- ...
- springboot:Java模板引擎Thymeleaf介绍
Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎.类似JSP,Velocity,FreeMaker等,它也可以轻易的与Spring MVC等Web框架进行集成作为Web应用 ...
- Springboot与Thymeleaf模板引擎整合基础教程(附源码)
前言 由于在开发My Blog项目时使用了大量的技术整合,针对于部分框架的使用和整合的流程没有做详细的介绍和记录,导致有些朋友用起来有些吃力,因此打算在接下来的时间里做一些基础整合的介绍,当然,可能也 ...
- SpringBoot集成Thymeleaf模板引擎
简单介绍 目前在JavaEE领域有几中比较常用的模板引擎,分别是Jsp.Velocity.Freemarker.Thymeleaf,对Freemark语法不是特别熟悉,不过对于前端页面渲染效率来说,j ...
- SpringBoot:2.SpringBoot整合Thymeleaf模板引擎渲染web视图
在Web开发过程中,Spring Boot可以通过@RestController来返回json数据,那如何渲染Web页面?Spring Boot提供了多种默认渲染html的模板引擎,主要有以下几种: ...
- Velocity模板引擎语法
Velocity 模板引擎介绍 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java ...
随机推荐
- Elixir 分布式平台
概述 分布式平台的核心在于并发,容错. 而 Elixir 的优势正是在于对于并发和容错的处理. 分布式模型 CSP(Communicating Sequential Process) 模型 :: 多个 ...
- day18-网络编程基础(一)
勿骄勿燥,还是要定下心学习,还有有些没定下心 1.基础知识 2.tcp与udp协议 3.网络套接字 4.基于c/s结构的服务器客户端的实验 开始今日份总结 1.基础知识 现有的软件,绝大多数是基于C/ ...
- 好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM
好程序员web前端分享值得参考的css理论:OOCSS.SMACSS与BEM 最近在The Sass Way里看到了Modular CSS typography一文,发现文章在开头部分就提到了OOCS ...
- 【Topcoder 1879】Scheduling
题意:给一个\(dag\),每一个点有一个访问时间. 现在可以同时访问两个点,但当连向这个点的所有点都被访问完成后才可以访问这个点. 问最短访问时间. 思路:一眼贪心.可惜是错的. 第二眼暴搜.就这么 ...
- 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(为域名申请SSl证书)
3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(购买域名,域名绑定IP) 然后就是等着..... 假设可以了 咱呢是配置MQTT实现SSL安全加密通信,所以 ...
- 云端安装MQTT服务器
如果自己下载的3.1版本的MQTT, 安装步骤参考 https://developer.emqx.io/docs/emq/v3/cn/install.html 配置用户名和密码第一种是用http ht ...
- Bootstrap开发框架界面的调整处理
我在之前介绍了很多关于Boostrap的框架方面的文章,主要是介绍各种插件的使用居多,不过有时候觉得基于Metronic的Boostrap框架的界面效果不够紧凑,希望对它进行一定的调整,那么我们应该如 ...
- Asp.Net Core使用NLog+Mysql的几个小问题
项目中使用NLog记录日志,很好用,之前一直放在文本文件中,准备放到db中,方便查询. 项目使用了Mysql,所以日志也放到Mysql上,安装NLog不用说,接着你需要安装Mysql.Data安装包: ...
- 周末学习笔记——day01(函数,函数对象,嵌套调用,名称空间,作用域,闭包,装饰器)
一,复习 字符编码 文件头:py2—ASCII,py3—UTF-8 三种字符串:u' ' b ' ' r ' ' u' ' .endcode(' utf-8 ') b' '.deconde(' utf ...
- Insertion Sort 与 Merge Sort的性能比较(Java)
public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextI ...