模板引擎

引入

最早开发的时候,展示页面我们都是使用HTML完成我们的代码编写;但是我们的显示页面一定是需要动态变化的,之后就引入了Jsp技术,用来进行数据的显示及交互,但是Jsp是以war包进行部署,但是之后想用jar包的方式打包,这种方式就会很麻烦,所以就有了模板引擎技术 ,模板引擎有很多,比如jsp,freemarker,thymeleaf等,我们用thymeleaf来举例

参考地址

官网地址:https://www.thymeleaf.org/

github地址:https://github.com/thymeleaf/thymeleaf

中文网站:https://raledong.gitbooks.io/using-thymeleaf/content/

使用

先引入依赖,我用SpringBoot的starter

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

在springboot中有专门的thymeleaf配置类:ThymeleafProperties

@ConfigurationProperties(prefix = "spring.thymeleaf")
public class ThymeleafProperties {

   private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8;

   public static final String DEFAULT_PREFIX = "classpath:/templates/";

   public static final String DEFAULT_SUFFIX = ".html";

   /**
    * Whether to check that the template exists before rendering it.
    */
   private boolean checkTemplate = true;

   ..................................
@Controller
public class RequestController {
    @GetMapping("/request")
    public String request(Model model){
        model.addAttribute("msg","name");
        return "show";
    }
}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1 th:text="${msg}"></h1>
</body>
</html>

标准表达式语法

简单表达式

表达式名字 语法 用途
变量取值 ${...} 获取请求域、session域、对象等值
选择变量 *{...} 获取上下文对象值
消息表达式 #{...} 获取国际化等值
链接URL @{...} 生成链接
片段表达式 ~{...} 同jsp:include 作用,引入公共页面片段

常量

  • 文本常量 : 'one text', 'Another one!',…
  • 数字常量 : 0, 34, 3.0, 12.3,…
  • 布尔常量 : true, false
  • 空常量 : null
  • 常符号 : one, sometext, main,…

文本操作

  • 字符串连接 : +
  • 常量替换 : |The name is ${name}|

算数操作

  • 二元运算符:+, -, *, /, %

布尔操作

  • 布尔操作符 : and, or
  • 布尔取反(一元运算符): !, not

比较运算

  • 比较符号: >, <, >=, <= (gt, lt, ge, le)
  • 相等符号: ==, != (eq, ne)

条件操作符

  • If-then: (if) ? (then)
  • If-then-else: (if) ? (then) : (else)
  • 默认值 Default: (value) ?: (defaultvalue)

特殊符号

  • 无操作符 : _

th的常用属性值

th:text/ th:utext :设置当前元素的文本内容,两者的区别在于前者不会转义html标签,后者会。优先级不高:order=7

th:value/ th:src/ th:href:设置当前元素的value值,优先级不高:order=6

th:each:遍历循环元素,和th:text或th:value一起使用。注意该属性修饰的标签位置,详细往后看。优先级很高:order=2

th:if:条件判断,类似的还有th:unlessth:switchth:case。优先级较高:order=3

th:insert/ th:include/ th:replace:代码块引入,三者的区别较大,常用于公共代码块提取的场景。优先级最高:order=1

th:fragment:定义代码块,方便被th:insert引用。优先级最低:order=8

th:object:声明变量,一般和*{}一起配合使用,达到偷懒的效果。优先级一般:order=4

th:attr/ th:attrappend/ th:attrprepend:修改任意属性优先级一般:order=5

所有h5兼容的标签写法:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#setting-value-to-specific-attributes

关于属性的优先级

thymeleaf内置方法

此外thymeleaf有很多内置方法,与Java的API类似!

  • strings:字符串格式化方法,常用的Java方法它都有。比如:equals,length,trim,toUpperCase,indexOf等

  • numbers:数值格式化方法,常用的方法有:formatDecimal等

  • bools:布尔方法,常用的方法有:isTrue,isFalse等

  • arrays:数组方法,常用的方法有:toArray,length,isEmpty,contains,containsAll等

  • lists,sets:集合方法,常用的方法有:toList,size,isEmpty,contains,containsAll,sort等

  • maps:对象方法,常用的方法有:size,isEmpty,containsKey,containsValue等

  • dates:日期方法,常用的方法有:format,year,month,hour,createNow等

(0)

相关推荐

  • .NET 中安全高效跨平台的模板引擎 Fluid 使用文档

    今天 以下文章来源于码农很忙 ,作者码农很忙 码农很忙代码改变世界. Liquid 是一门开源的模板语言,由 Shopify 创造并用 Ruby 实现.它是 Shopify 主题的主要构成部分,并且被 ...

  • 如何选择 Web 前端模板引擎?

    WEB前端开发社区 昨天 Web 模板就在那里 模板引擎负责组装数据,以另外一种形式或外观展现数据.浏览器中的页面是 Web 模板引擎最终的展现. 无论你是否直接使用模板引擎,Web 模板一直都在,不 ...

  • 使用 .NET Core模板引擎创建自定义的模板和项目

    WEB前端开发社区 昨天本文是我们 .NET教育系列的一部分,该教育系列探讨了 .NET 技术的好处,以及它是如何不仅可以帮助传统的 .NET 开发人员,还可以帮助所有想要为市场提供可靠.高效且经济的 ...

  • 浅谈Web中前后端模板引擎的使用

    WEB前端开发社区 3月12日 单纯的后端模板引擎(后端 MVC)以及前端模板引擎方式都有一定的局限性,Node 的出现让我们有了第三种选择,让 Node 作为中间层.具体如何操作?简单地说就是让一门 ...

  • 第21天:Web开发 Jinja2模板引擎

    在之前的文章中,简单介绍了Python Web开发框架Flask,知道了如何写个Hello World,但是距离用Flask开发真正的项目,还有段距离,现在我们目标更靠近一些 -- 学习下Jinja2 ...

  • PHP核心之模板引擎Smarty

    Smarty Smarty简介 概念 为了分工合作,模板页面中最好不要出现PHP的代码 需要将表现和内容相分离 官方Smarty 概念 Smarty是用PHP编写的优秀的模板引擎 Smarty可以实现 ...

  • JavaScript模板引擎 art-template.js 的使用(script 标签模板使用)

    art-template是款性能卓越的 js 模板引擎 https://aui.github.io/art-template/ 中文文档地址https://aui.github.io/art-temp ...

  • 5分钟上手Egg.js+nunjucks模板引擎快速开发SEO友好的官网项目

    在日常的项目中,有时候还是不可避免的会维护一些jq官网项目等.面对此类需求,很多还是以前的老套路,前端写页面交给后端去套数据.很烦有木有--而改动之后还得交给后端再次修改,时间和沟通都是个麻烦.同时开 ...

  • 时尚渐变职业生涯规划模板

    时尚渐变职业生涯规划模板