模版引擎对比说明
在Java里面常用的模版引擎有很多, 例如: jsp
、Freemarker
、Thymeleaf
等
我们来对比一下各个模版引擎.
- JSP(后端渲染,消耗性能)
Java Server Pages
动态网页技术,由应用服务器中的JSP
引擎来编译和执行,再将生成的整个页面返回给客户端,可以写java
代码,持表达式语言(el
、jstl
),内建函数,但是占用JVM
内存。 是javaweb
官方推荐, 但springboot
不推荐
附上官方文档说明
- Freemarker
FreeMarker Template Language(FTL)
文件一般保存为xxx.ftl
严格依赖MVC
模式,不依赖Servlet
容器(不占用JVM内存),内建函数 - Thymeleaf (主推)
轻量级的模板引擎(负责逻辑业务的不推荐,解析DOM
或者XML
会占用多的内存)
可以直接在浏览器中打开且正确显示模板页面,直接是html
结尾,直接编辑
整合Freemarker
- 增加依赖 pom.xml
<!-- 引入freemarker模板引擎的依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
- 配置Freemarker application.properties
# 是否开启thymeleaf缓存,本地为false,生产建议为true spring.freemarker.cache=false spring.freemarker.charset=UTF-8 spring.freemarker.allow-request-override=false spring.freemarker.check-template-location=true #类型 spring.freemarker.content-type=text/html spring.freemarker.expose-request-attributes=true spring.freemarker.expose-session-attributes=true #文件后缀 spring.freemarker.suffix=.ftl #路径 spring.freemarker.template-loader-path=classpath:/templates/
- 编写路由 AopppController.java
@RequestMapping("/fm/index") public String fmIndex(ModelMap modelMap) { Map<String, String> map = new HashMap<>(); map.put("name", "aoppp"); map.put("desc", "描述"); // 添加属性 给模版 modelMap.addAttribute("user", map); return "fm/index"; }
- 编写模版 templates/fm/index.ftl
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <h1>dhsajdhkjks</h1> <span>name ===</span><span> ${user.name} </span> <span>desc ===</span><span> ${user.desc} </span> </body> </html>
- 效果