模板引擎
前端交给后端开发人员的页面,是html页面。在过去,我们会将其转变为JSP页面,其好处是我们可以将后端处理好的数据在JSP页面上进行展示,交互。
JSP已经过时了,它的代码耦合度太高了,已经不适应当今开发的需求了。SpringBoot默认不支持JSP
SpringBoot推荐使用模板引擎
常用的模板引擎有freemarker
、Thymeleaf
等,其本质思想是类似的
模板引擎的作用就是写一个页面模板,其中一些数据是动态的,通过一些表达式来设置。而这些数据来自后端服务器的处理结果。将页面模板和数据交给模板引擎,模板引擎就会解析表达式,将数据填充到指定位置,最终将包含数据的页面输出出来。
不同的模板引擎,其语法存在一定差异。
Java Web开发经历的几个阶段
JSP
jsp就是页面端的servlet,jsp文件糅合了三种元素:Java代码、动态的数据、HTML代码结构。从抽象层次来看,Java代码部分不仅用来组织数据,还被用来控制HTML页面结构。这样在层次划分上属于比较含糊不清的。
模板引擎
在这个阶段就出现了freemarker、velocity这样的严格数据模型与业务代码分离的模板引擎。实现了严格的MVC分离,模板引擎的另外一个好处就是:宏定义或者说是组件模板,比jsp标签好用,极大的减少了重复页面组件元素的开发。另外,相对于jsp而言,模板引擎的开发效率会更高。我们都知道,JSP在第一次执行的时候需要转换成Servlet类,开发阶段进行功能调适时,需要频繁的修改JSP,每次修改都要编译和转换,那么试想一天中我们浪费在程序编译的时间有多少。但是java模板引擎,仍然是使用的服务器端的渲染技术,也就是没有办法将html页面和后台服务层面全面解耦,这就要求前端工程师和后端工程师在同一个项目结构下工作,而且前端工程师及其依赖于后端的业务数据,页面无法脱离于后端请求数据在浏览器独立运行。
前端工程化
随着VUE、angularjs、reactjs的大行其道,开始实现真正的前后端分离技术。前端的工程师负责页面的美化与结构,后端工程师可以专注于业务的实现。在ajax和nodejs出现之后,可以说为前端的发展带来了革命性的变化,前端可以做自己的工程化实践。这些新的前端技术通常是“所见即所得”,写完的代码可以直接在浏览器上查看,将前端后端的串行化工作模式转变为并行工作的模式。前端专注于布局、美化,后端专注于业务。专业的人越来越专业,工作效率也更高。
Java模板引擎选型
Thymeleaf
- 优点
- 使用静态html嵌入标签属性,浏览器可以直接打开模板文件,便于前后端联调。也就是贴近于“所见即所得”。
- 缺点
- Thymeleaf使用标签属性去放数据,也导致它的语法违反了自然人对于html的理解。
- Thymeleaf的性能一直为人所诟病。
Freemarker
Thymeleaf代码
<tr th:each="item : ${users}"><td th:text="${item.userId}"></td><td th:text="${item.username}"></td><td th:text="${item.password}"></td><td th:text="${item.email}"></td><td th:text="${item.mobile}"></td></tr>Freemarker代码
<#list users as item><tr><td>${item.userId}</td><td>${item.username}</td><td>${item.password}</td><td>${item.email}</td><td>${item.mobile}</td></tr></#list>
去学前端框架
个人觉得模板引擎还是Freemarker语法友好一些,而大神推荐干脆去学Vue、angular、react前端三剑客