什么是模板引擎?常见的模板引擎有哪些?Thymeleaf的常用指令介绍。
1.模板引擎是什么?
模板引擎是以业务逻辑层和表现层分离为目的的,将规定格式的模板代码转换为业务数据的算法实现。
它可以是一个过程代码、一个类,甚至是一个类库。不同的模板引擎其功用也不尽相同,但其基本原理都差不多。
2.常见的模板引擎:
常见的模板引擎有:jsp、freemarker、velocity、themleaf
jsp
优点:
1.功能强大,可以写Java代码
2.支持jsp标签(jsp tag)
3.支持表达式语言(el表达式,jstl语法)
4.官方标准,用户群广泛,有丰富的第三方jsp标签库
5.性能良好。jsp编译成class文件执行,有很好的性能表现
缺点:
没有明显的缺点,由于可以编写java代码,如果使用不当容易破坏结构。
velocity:
较早出现的用于代替jsp的模板语言
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能良好,据说比jsp性能还要好些
3、使用表达式语言,据说jsp的表达式语言就是学velocity的
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多。
3、对jsp标签支持不够好
4、已经很久很久没有维护了。
freemarker
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能非常不错
3、对jsp标签支持良好
4、内置大量常用功能,使用非常方便
5、宏定义(类似jsp标签)非常方便
6、使用表达式语言
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多
Thymeleaf:
Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模版引擎
• Spring官方支持的服务的渲染模板中,并不包含jsp。而是Thymeleaf和 Freemarker等,而Thymeleaf与SpringMVC的视图技术,及SpringBoot的 自动化配置集成非常完美,几乎没有任何成本,你只用关注Thymeleaf的语法 即可。
动静结合:Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏 览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是 由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示 方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态 地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动 态显示。
开箱即用:它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、该jstl、改标签的困扰。同时开发人员也可以扩展 和创建自定义的方言。
多方言支持:Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的 可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。
与SpringBoot完美整合:SpringBoot提供了Thymeleaf的默认配置,并且 为Thymeleaf设置了视图解析器,我们可以像以前操作jsp一样来操作Thymeleaf。代 码几乎没有任何区别,就是在模板语法上有区别。
hymeleaf 模板引擎支持多种表达式:
变量表达式:${...}
选择变量表达式:*{...}
链接表达式:@{...}
国际化表达式:#{...}
片段引用表达式:~{...}
1.引入提示
在html页面中引入thymeleaf命名空间,即,此时在html模板文件中动态的属性使用th:命名空间修饰 。
<html lang="en" xmlns:th="http://www.thymeleaf.org">
2.变量表达式(获取变量值)
<div th:text="'你是否读过,'+${session.book}+'!!'">同EL表达式有些相似的效果,如果有数据,被替换完成前后端分离效果(美工代码)
</div>
代码分析:
1.可以看出获取变量值用$符号,对于javaBean的话使用变量名.属性名方式获取,这点和EL表达式一样
2.它通过标签中的th:text属性来填充该标签的一段内容,意思是$表达式只能写在th标签内部,不然不会生效,上面例子就是使用th:text标签的值替换div标签里面的值,至于div里面的原有的值只是为了给前端开发时做展示用的.这样的话很好的做到了前后端分离.意味着div标签中的内容会被表达式${session.book}的值所替代,无论模板中它的内容是什么,之所以在模板中“多此一举“地填充它的内容,完全是为了它能够作为原型在浏览器中直接显示出来。
3.访问spring-mvc中model的属性,语法格式为“${}”,如${user.id}可以获取model里的user对象的id属性
4.牛叉的循环<li th:each="book : ${books}" >
3.URL表达式(引入URL)
引用静态资源文件(CSS使用th:href,js使用使用th:src)
href链接URL(使用th:href)
代码分析
1.最终解析的href为: /seconddemo/ /seconddemo/usethymeleaf?name=Dear 相对路径,带一个参数 /seconddemo/usethymeleaf?name=Dear&alis=Dear 相对路径,带多个参数/seconddemo/usethymeleaf?name=Dear&alis=Dear 相对路径,带多个参数/seconddemo/usethymeleaf/Dear 相对路径,替换URL一个变量/seconddemo/usethymeleaf/Dear/Dear 相对路径,替换URL多个变量
2.URL最后的(name=${name})表示将括号内的内容作为URL参数处理,该语法避免使用字符串拼接,大大提高了可读性
3.@{/usethymeleaf}是Context相关的相对路径,在渲染时会自动添加上当前Web应用的Context名字,假设context名字为seconddemo,那么结果应该是/seconddemo/usethymeleaf,即URL中以”/“开头的路径(比如/usethymeleaf将会加上服务器地址和域名和应用cotextpath,形成完整的URL。
4.th:href属性修饰符:它将计算并替换使用href链接URL 值,并放入的href属性中。
5.th:href中可以直接使用静态地址
4.选择或星号表达式
<div th:object="${session.user}"><p>Name: <span th:text="*{firstName}">Sebastian</span>.</p><p>Surname: <span th:text="*{lastName}">Pepper</span>.</p><p>Nationality: <span th:text="*{nationality}">Saturn</span>.</p></div>//等价于
<div><p>Name: <span th:text="${session.user.firstName}">Sebastian</span>.</p><p>Surname: <span th:text="${session.user.lastName}">Pepper</span>.</p><p>Nationality: <span th:text="${session.user.nationality}">Saturn</span>.</p>
</div>
5.文字国际化表达式
j简单看一下就可以,文字国际化表达式允许我们从一个外部文件获取区域文字信息(.properties),用Key索引Value,还可以提供一组参数(可选).
#{main.title}
#{message.entrycreated(${entryId})} 可以在模板文件中找到这样的表达式代码:
<table><th th:text="#{header.address.city}"><th th:text="#{header.address.country}">
</table>
什么是模板引擎?常见的模板引擎有哪些?Thymeleaf的常用指令介绍。相关推荐
- 什么是模板引擎?常见的模板引擎有哪些?thymeleaf的常用指令介绍
一.模板引擎概念 模板引擎是为了解决用户界面(显示)与业务数据(内容)分离而产生的. 它可以生成特定格式的文档,常用的如格式如HTML.xml以及其他格式的文本格式.其工作模式如下: 举个例子,我想买 ...
- 简述模板引擎、常见模板引擎以及Thymeleaf常用指令
模板引擎概念: 是为了解决用户界面(显示)与业务数据(内容)分离而产生的. 它可以生成特定格式的文档,常用的如格式如HTML.xml以及其他格式的文本格式. 场景使用理解:举个栗子---[开会] 在上 ...
- 由浅入深:自己动手开发模板引擎——置换型模板引擎(三)
受到群里兄弟们的竭力邀请,老陈终于决定来分享一下.NET下的模板引擎开发技术.本系列文章将会带您由浅入深的全面认识模板引擎的概念.设计.分析和实战应用,一步一步的带您开发出完全属于自己的模板引擎.关于 ...
- 由浅入深:自己动手开发模板引擎——置换型模板引擎(二)
受到群里兄弟们的竭力邀请,老陈终于决定来分享一下.NET下的模板引擎开发技术.本系列文章将会带您由浅入深的全面认识模板引擎的概念.设计.分析和实战应用,一步一步的带您开发出完全属于自己的模板引擎.关于 ...
- Node.js(二)——pug模板引擎,nunjucks模板引擎,在koa中使用pug和nunjucks模板引擎
目录 1.知识点及课堂目标 2.模板引擎 3.pug模板引擎使用 3.1安装pug 3.2pug常用语法 3.2.1通过缩进关系,代替以往html的层级包含关系. 3.2.2html 元素属性/sty ...
- 由浅入深:自己动手开发模板引擎——解释型模板引擎
受到群里兄弟们的竭力邀请,老陈终于决定来分享一下.NET下的模板引擎开发技术.本系列文章将会带您由浅入深的全面认识模板引擎的概念.设计.分析和实战应用,一步一步的带您开发出完全属于自己的模板引擎.关于 ...
- 由浅入深:自己动手开发模板引擎——置换型模板引擎(四)
受到群里兄弟们的竭力邀请,老陈终于决定来分享一下.NET下的模板引擎开发技术.本系列文章将会带您由浅入深的全面认识模板引擎的概念.设计.分析和实战应用,一步一步的带您开发出完全属于自己的模板引擎.关于 ...
- 由浅入深:自己动手开发模板引擎——置换型模板引擎(一)
受到群里兄弟们的竭力邀请,老陈终于决定来分享一下.NET下的模板引擎开发技术.本系列文章将会带您由浅入深的全面认识模板引擎的概念.设计.分析和实战应用,一步一步的带您开发出完全属于自己的模板引擎.关于 ...
- 由浅入深:自己动手开发模板引擎——解释型模板引擎(二)
受到群里兄弟们的竭力邀请,老陈终于决定来分享一下.NET下的模板引擎开发技术.本系列文章将会带您由浅入深的全面认识模板引擎的概念.设计.分析和实战应用,一步一步的带您开发出完全属于自己的模板引擎.关于 ...
最新文章
- java设计模式:prototype模式
- 批量修改历史commit的用户名user.name邮箱user.email
- 实验三——vlan间路由
- 阿里云安全送您六道平安符,恭贺新春!
- 数据结构--图(Graph)详解(四)
- java web 项目打成war包部署到服务器上
- 2022年认证杯SPSSPRO杯数学建模B题(第一阶段)唐宋诗的定量分析与比较研究求解全过程文档及程序
- Swagger自动生成接口文档
- 计算机怎么显示正确,电脑显示器怎么正确设置
- ets交易软件测试简历,ETS工具使用指南
- dest在C语言什么作用,目前最全面的dest答疑问题及相关回答
- storage ( initial 64K minextents 1 maxextents unlimited );
- 清华AI圈 | 李骏:驰骋在智能汽车科技创新的广阔征途中
- 数据科学导论实验:基于Twitter的网络结构和社会群体演化
- matlab中size函数使用
- 英语语法2-一般过去时
- 万顿思电商:为什么拼多多退店不成功?
- 零基础CSS入门教程(8)–id选择器
- 编辑grub.cfg修复linux,Ubuntu如何修改grub.cfg
- 吉林大学计算机 王恩,【十佳研究生】王恩:越努力,越幸运
热门文章
- 有哪些学生党必备的 App?学生党必备软件推荐,简单实用!
- 软件工程第六版全书总结笔记
- 计算机科学创新大赛,全国青少年科技创新大赛
- 亚马逊云科技帮助Gemsouls在云上快速实现技术验证与部署
- 截屏快捷键电脑,有什么常用的教程吗
- 定义一个学生信息结构体,包含姓名,学号,语文成绩、数学成绩,和英语成绩,定义结构体数组存放不同学生的信息,可以在终端录入学生的信息,可以实现对于学生成绩的排序,排序可以按照语文、数学或者英语的任意一个
- 心田花开:小学五年级语文上册《小桥流水人家》课件解析
- 实测腾讯电脑管家纯净版:PC体验变革究竟需要解决哪些问题
- 集成学习——Boosting(AdaBoost,Gradient Boosting)
- [深度学习]动手学深度学习笔记-14