模板引擎

简介

  • 相对html+js的传统设计,现在很多网站都采用div&css+标签化+模块化的设计。模板引擎一定的语义,将数据填充到模板中,产生最终的的HTML页面。模板引擎主要分两种:客户端引擎和服务端引擎。
  • 客户端渲染:模板和数据分别传送到客户端,在客户端由JavaScript模板引擎渲染出最终的HTML视图。将模板渲染放置在客户端做,可以降低服务端的压力,并且如果前端内容分别来自多个后台系统,而这些后台的架构各不相同(Java、.Net、Ruby等),则服务器端渲染需要采用不同的技术,模板资源无法共享。
  • 服务端渲染:引擎在服务器端将模板和数据合成,返回最终的html页面,相对于客户端渲染,数据存储更加安全。主要有freemarker、velocity、thymeleaf等。
  • 原理:将显示与数据分离,其本质是将模板文件和数据通过模板引擎生成最终的HTML代码。

ZWPF0M5W_CR_NEUY6H46__W

  • 模板引擎以简单为主,其主要目的是为了让程序开发和美工设计人员分工明确;在代码生成过程中减少大量机械重复工作,大大提高开发效率,良好的设计使得代码重用,后期维护都降低成本。一个好的模板引擎的使用要考虑的方面无外乎:功能是否强大,使用是否简单,整合性、扩展性与灵活性,性能。

JSP、freemarker、velocity、thymeleaf性能对比

JSP

优点:

  • 功能强大,可以写java代码
  • 支持jsp标签(jsp tag)
  • 支持表达式语言(el)
  • 官方标准,用户群广,丰富的第三方jsp标签库
  • 性能良好。jsp编译成class文件执行,有很好的性能表现

缺点:

  • 由于可以编写java代码,如果使用不当,容易破坏MVC结构

freemarker

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或Http。它不仅可以用作表现层的实现技术,而且还可以用于生成XML、JSP或Java等。

目前企业中,主要使用FreeMarker做静态页面或是页面展示.

优点:

  • 不能编写java代码,可以实现严格的mvc分离 
  • 性能非常不错
  • 对jsp标签支持良好
  • 内置大量常用功能,使用非常方便
  • 宏定义(类似jsp标签)非常方便
  • 使用表达式语言

缺点:

  • 不是官方标准
  • 用户群体和第三方标签库没有jsp多

选择使用freemarker的原因:

  • 性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。
  • 宏定义比jsp tag方便
  • 内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便
  • 支持jsp标签
  • 可以实现严格的MVC分离

velocity

优点:

  • 不能编写java代码,可以实现严格的MVC分离
  • 性能良好,据说比jsp性能还要好些
  • 使用表达式语言,据说jsp的表达式语言就是学velocity的

缺点:

  • 不是官方标准
  • 用户群体和第三方标签库没有jsp多
  • 对jsp标签支持不够好

thymeleaf

Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用。

Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。Thymeleaf的可扩展性也非常棒。你可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑。这意味着Thymeleaf还可以作为模板引擎框架。

优点:

  • 静态html嵌入标签属性,浏览器可以直接打开模板文件,便于前后端联调
  • springboot官方推荐方案

缺点:

  • 模板必须符合xml规范
  • js脚本必须加入/

转载于:https://www.cnblogs.com/HNewa/p/10449240.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值