Thymeleaf
Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用。
Thymeleaf的主要目标是提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。
相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。
Thymeleaf的可扩展性非常棒:可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑。
-
thymeleaf优点:
1、thymeleaf由于使用了标签属性做为语法,模版页面直接用浏览器渲染,浏览器可以直接打开模板文件,使得前端和后端可以并行开发
2、thymeleaf适合做服务器端渲染,通过服务器端模版渲染,客户端收到的是在服务器端根据模版渲染后的html信息
3、thymeleaf可以支持前段浏览器渲染
4、Thymeleaf可以作为模板引擎框架
5、 springboot官方推荐方案 -
缺点:
1、模板必须符合xml规范。js脚本必须加入/<![CDATA[/标识,否则一个&符号就会导致后台模板合成抛异常
2、错误信息不友好
Freemarker
FreeMarker是用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。
目前企业中主要用Freemarker做静态页面或是页面展示
-
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能不错
3、内置大量常用功能,使用非常方便
4、支持表达式语言
5、支持宏定义(类似jsp标签)
6、类似于jsp,学习成本低,符合以前使用jsp的习惯 -
缺点:
1、不是官方标准
2、使用</>这样的语法,就无法直接使浏览器渲染出原本页面的样子
比较
- 从写代码的角度看,freemarker更习惯于我们的思维。
- 从前后分离开发的角度看thymeleaf更合适,值的绑定都是基于html的dom元素属性的,适合前后联调。