模板引擎是什么
模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的html文档。从字面上理解模板引擎,最重要的就是模板二字,这个意思就是做好一个模板后套入对应位置的数据,最终以html的格式展示出来。
简单来说,它可以根据程序员指定的模板结构和数据,自动生成一个完整的HTML页面。
使用模板引擎的好处
- 减少了字符串的拼接操作
- 使代码结构更清晰
- 使代码更易于阅读与维护
常见的模板引擎有哪些?
(thymleaf、jsp、velocity、freemarker)
Thymeleaf
Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模版引擎 • Spring官方支持的服务的渲染模板中,并不包含jsp。而是Thymeleaf和 Freemarker等,而Thymeleaf与SpringMVC的视图技术,及SpringBoot的 自动化配置集成非常完美,几乎没有任何成本,你只用关注Thymeleaf的语法 即可
特性:1.动静结合:在有网络和无网络的环境下皆可运行。即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持html原型,然后在html标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html时会忽略未定义的标签属性,所以thymeleaf的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
2.开箱即用:它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、OGNL 表达式效果,避免每天套模板、该jstl、 改标签的困扰。同时开发人员也可以扩展和创建自定义的方言
- 多方言支持:Thymeleaf提供spring标准方言和一个与SpringMVC完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。
4.与SpringBoot完美整合:SpringBoot提供了Thymeleaf的默认配置,并且 为Thymeleaf设置了视图解析器,我们可以像以前操作jsp一样来操作Thymeleaf。代 码几乎没有任何区别,就是在模板语法上有区别。
(目前主流的模板引擎之一,Spring Boot推荐)
优点:语法简洁,功能强大。
缺点:性能差。
**Jsp **
优点:
- 功能强大,可以写java代码
- 支持jsp标签(jsp tag)
- 支持表达式语言(el表达式,jstl语法)
- 官方标准,用户群广,丰富的第三方jsp标签库
- 性能良好。jsp编译成class文件执行,有很好的性能表现
缺点:
- 前后端耦合比较高:比如说前端的html页面还要手动修改成jsp页面,大大加重了工作量,而且动态和静态资源也是耦合性太高。
- JSP页面的效率没有HTML高,因为JSP是同步加载。而且JSP需要tomcat,但又不支持nginx等。
Velocity
特性: Velocity是一个基于Java的模板引擎。它允许任何人使用简单但功能强大的模板语言来引用Java代码中定义的对象。
优点:使用了模板缓冲,在模板缓冲机制的作用下,模板不再是每次出现请求的时候从磁盘读取,而是以最理想的方式在内存中保存和解析。在开发期间, 模板缓冲通常处于禁用状态,因为这时请求数量较少,而且要求对页面的修改立即产生效果。开发完毕之后,模板一 般不再改变,此时就可以启用模板缓冲功能。因此Velocity执行速度明显优于JSP。
缺点:
- 不是官方标准
- 用户群体和第三方标签库没有jsp多
- 对jsp标签支持不够好
- 已经很久很久没有维护了
FreeMarker
特性:在所有采用网页静态化手段的网站中,FreeMarker便用的比例大大的超过了其他的一些技术。HTML静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可以使用FreeMarker将HTML静态化。比如一些网站的公用设置信息,这些信息基本都是可以通过后台 来管理并存储在数据库中,这些信息其实会大量的被前台程序调用,每次调用都会 去查询一次数据库,但是这些信息的更新频率又会很小,因此也可以考虑将这部分内容进行后台更新的时候进行静态化,这样就避免了大量的数据库访问请求,提高了网站的性能。
(目前主流的模板引擎之一)
优点:
- 不能编写java代码,可以实现严格的mvc分离
- 性能非常不错
- 对jsp标签支持良好
- 内置大量常用功能,使用非常方便
- 宏定义(类似jsp标签)非常方便
- 使用表达式语言
缺点:
- 不是官方标准
- 用户群体和第三方标签库没有jsp多
Thymeleaf 在页面的使用 – 常用的指令
Thymeleaf 标准⽅⾔还⽀持以下固定值布尔属性
版权归原作者 星星慢 所有, 如有侵权,请联系我们删除。