Enjoy 模版引擎
简介
tio-boot
内置 Enjoy 模版引擎,使用 Enjoy 模版引擎可以非常方便地返回网页内容。Enjoy 是 JFinal 提供的高效模板引擎,支持中文表达式、变量名、方法名及模板函数名,适合中文开发环境。
目录
模型引擎的基础使用
添加依赖
在 pom.xml
中添加 Enjoy 模版引擎的依赖:
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>enjoy</artifactId>
<version>5.1.3</version>
</dependency>
配置 Enjoy 引擎
创建一个配置类 EnjoyEngineConfig
来设置 Enjoy 引擎的基本参数。
import com.jfinal.template.Engine;
public class EnjoyEngineConfig {
private final String RESOURCE_BASE_PATH = "/enjoy-templates/";
public void config() {
Engine engine = Engine.use();
engine.setBaseTemplatePath(RESOURCE_BASE_PATH);
engine.setToClassPathSourceFactory();
// 支持模板热加载,绝大多数生产环境下也建议配置成 true,除非是极端高性能的场景
engine.setDevMode(true);
// 配置极速模式,性能提升 13%
Engine.setFastMode(true);
// JFinal 4.9.02 新增配置:支持中文表达式、中文变量名、中文方法名、中文模板函数名
Engine.setChineseExpression(true);
}
}
创建模板文件
在 src/main/resources/enjoy-templates/
目录下创建模板文件 simple_prompt.txt
:
Hello, #(name)!
Welcome to the Enjoy 模版引擎示例.
渲染模板
创建一个简单的测试类 EnjoyEngineConfigTest
,用于验证模板渲染是否正确。
package com.litongjava.ai.db.assistant.config;
import java.util.HashMap;
import java.util.Map;
import org.junit.BeforeClass;
import org.junit.Test;
import com.jfinal.template.Engine;
import com.jfinal.template.Template;
public class EnjoyEngineConfigTest {
@BeforeClass
public static void beforeClass() {
new EnjoyEngineConfig().config();
}
@Test
public void testSimpleTemplateRendering() {
Engine engine = Engine.use();
Template template = engine.getTemplate("simple_prompt.txt");
Map<String, Object> values = new HashMap<>();
values.put("name", "张三");
String renderedOutput = template.renderToString(values);
System.out.println(renderedOutput);
}
}
运行测试
执行上述测试类,将输出渲染后的内容:
Hello, 张三!
Welcome to the Enjoy 模版引擎示例.
通过这个基础示例,您可以了解如何配置 Enjoy 模版引擎并渲染简单的模板。接下来,可以根据项目需求扩展模板的复杂性和功能。
tio-boot 整合模版引擎
tio-boot
提供了与 Enjoy 模版引擎的无缝集成,使得在 Web 应用中渲染模板变得更加便捷。
配置 Enjoy 引擎
创建配置类 EnjoyEngineConfig
,并使用 @Configuration
和 @Bean
注解进行配置。
package com.litongjava.ai.chat.config;
import com.jfinal.template.Engine;
import com.litongjava.jfinal.aop.annotation.Bean;
import com.litongjava.jfinal.aop.annotation.Configuration;
@Configuration
public class EnjoyEngineConfig {
private final String RESOURCE_BASE_PATH = "/enjoy-templates/";
@Bean
public Engine engine() {
Engine engine = Engine.use();
engine.setBaseTemplatePath(RESOURCE_BASE_PATH);
engine.setToClassPathSourceFactory();
// 支持模板热加载,绝大多数生产环境下也建议配置成 true,除非是极端高性能的场景
engine.setDevMode(true);
// 配置极速模式,性能提升 13%
Engine.setFastMode(true);
// JFinal 4.9.02 新增配置:支持中文表达式、中文变量名、中文方法名、中文模板函数名
Engine.setChineseExpression(true);
return engine;
}
}
在 Controller 中使用 Enjoy 引擎
创建控制器 TemplatesController
,通过 Enjoy 引擎获取网页模板并返回。
package com.litongjava.ai.chat.AController;
import com.jfinal.template.Engine;
import com.jfinal.template.Template;
import com.litongjava.jfinal.aop.Aop;
import com.litongjava.tio.http.common.HttpRequest;
import com.litongjava.tio.http.common.HttpResponse;
import com.litongjava.annotation.RequestPath;
import com.litongjava.tio.http.server.util.Resps;
@AController
@RequestPath()
public class TemplatesController {
private Engine engine = Aop.get(Engine.class);
@RequestPath("/404")
public Template notFound(HttpRequest request) {
String fileName = "/404.html";
Template template = engine.getTemplate(fileName);
return template;
}
@RequestPath("/chat")
public HttpResponse chat(HttpRequest request) {
String fileName = "/chat.html";
return renderHtml(request, fileName);
}
private HttpResponse renderHtml(HttpRequest request, String fileName) {
Template template = engine.getTemplate(fileName);
String content = template.renderToString();
HttpResponse html = Resps.html(request, content);
return html;
}
}
代码解释
上述代码包含两个主要部分:
EnjoyEngineConfig
类:- 使用
@Configuration
注解标记,表示这是一个配置类。 engine
方法创建并配置Engine
实例,设置基础模板路径、类路径源工厂、开发模式、极速模式和支持中文表达式等选项。
- 使用
TemplatesController
类:- 使用
@AController
和@RequestPath
注解,标识为处理 HTTP 请求的控制器。 notFound
方法处理/404
请求,返回/404.html
模板。chat
方法处理/chat
请求,返回/chat.html
模板。renderHtml
方法辅助渲染模板并生成 HTTP 响应。
- 使用
通过这种配置和使用方式,tio-boot
可以高效地集成 Enjoy 模版引擎,简化网页内容的返回流程。