模板引擎的思考
一、什么是模板引擎?
模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的文档
(模板文件和数据通过模板引擎生成一个HTML代码)。
二、为什么要使用模板引擎?
这里分为两个方面解释:
第一个方面,以Java为例,那个时候前后端分离的思想还未到现在如此普及,后端开发人员一般都要身兼数职,一般除了写后端代码之外,还得写前端代码,为了提高开发人员的效率,通常在后端项目会引入模板引擎,最常见的就是jsp、freemarker等。
第二个方面,代码生成器,例如若衣、人人开源、Jeesite4、Jeecg等开源项目均带有代码生成器,代码生成器的原理就是基于模板引擎,将公共的东西转换为模板,减去人工手动复制和编写的成本,提高研发效率,一般来说,这种方式适用于另类的前后端分离(后端代码+前端代码仍然在一块,只不过后端做专注于业务数据处理,前端仅仅是渲染)。
三、模板引擎的优缺点有哪些?
Java中常用的模板引擎分别为JSP、FreeMarker、Velocity、Thymeleaf等。
1.JSP
(1)优点
- 功能强大可编写Java代码;
- 支持JSP标签;
- 支持表达式语言;
- 官方标准,用户群广,丰富的第三方jsp标签库;
- 性能良好。jsp编译成class文件执行,有很好的性能表现。
(2)缺点
一旦使用不当会很容易破坏MVC结构。
2.FreeMarker
(1)优点
- 不能编写Java代码,可实现严格的MVC模式;
- 对JSP标签支持良好;
- 内置大量常用功能;
- 宏定义(类似jsp标签)非常方便;
- 使用表达式语言。
(2)缺点
- 非官方标准;
- 用户群体和第三方标签库没有jsp多。
3.Velocity
(1)优点
- 不能编写Java代码,可实现严格的MVC模式;
- 性能良好;
- 使用表达式语言。
(2)缺点
- 非官方标准;
- 用户群体和第三方标签库没有jsp多;
- 对jsp标签支持不友好。
4.Thymeleaf
(1)优点
- 静态html嵌入标签属性,浏览器可以直接打开模板文件,便于前后端联调;
- springboot官方推荐方案。
(2)缺点
- 模板必须符合xml规范。
上面的四种模板引擎我均使用过,在创业公司做的第一个智能酒店管理系统就是采用jsp作为模板引擎,对我在创业公司经历感兴趣的朋友或者打算创业以及已经创业的朋友都可以读读这篇文章:
一位北漂在创业公司的两年
至于freemarker以及volocity、thymeleaf均在我个人博客系统中实践过。
四、模板引擎的应用场景有哪些?
- 代码生成器(源代码生成);
- Web应用开发。
五、总结
无论技术怎么演变,新的诞生,旧的逐渐消亡,但其本质还是不变。
如Java中的Jsp、Vecotiy、Freemarker、Thymeleaf和前端三大流行框架中的Vue.js、React.js、Angular.js,它们最终的本质均为HTML-DOM(超文本标记语言-文档对象模型)。