Enjoy
项目作者:
Aifei
入驻时间:
2023-08-11
开源许可证:
Apache
项目描述
Enjoy 是基于 Java 语言的极度轻量级模板引擎。仅 227 KB 并且不依赖任何第三方。极简设计仅 if、for、switch、set、define、include、render 七个核心指令,令学习成本低到极致。 Enjoy coding and enjoy life项目介绍
Enjoy
Enjoy 是基于 Java 语言的极轻量极魔板引擎。极轻量级仅 228 KB 并且不依赖任何第三方。极简设计仅 if、for、switch、set、define、include、render 七个核心指令,让学习成本低到极致。独创 DKFF(Dynamic Key Feature Forward) 词法分析算法与 DLRD (Double Layer Recursive Descent)语法分析算法,避免使用 javacc、antlr、jflex 生成器,令代码量少到极致。
Maven 坐标
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>enjoy</artifactId>
<version>5.1.1</version>
</dependency>
Enjoy 主要特点
- 消灭传统模板引擎中大量繁杂概念,仅七个核心指令,学习成本极低
- 独创 DKFF 词法分析算法与 DLRD 语法分析算法,避免使用 javacc、antlr
- 与 java 打通式设计,在模板中与 java 交互极为方便
- 贴近 java 使用直觉,为 java 开发者量身打造
- 功能强大,极为简单覆盖掉 freemarker、velocity 的核心功能
- 扩展性强,支持多种扩展方式,且是唯一支持指令级扩展的模板引擎
- 回归模板引擎渲染 View 数据的本质,采用指令式设计,避免 view 层表达复杂逻辑
- 体积小,仅 228 KB,且不依赖于任何第三方
简单示例:
1. 与 Spring boot 整合
@Configuration
public class SpringBootConfig {
@Bean(name = "jfinalViewResolver")
public JFinalViewResolver getJFinalViewResolver() {
// 创建用于整合 spring boot 的 ViewResolver 扩展对象
JFinalViewResolver jfr = new JFinalViewResolver();
// 对 spring boot 进行配置
jfr.setSuffix(".html");
jfr.setContentType("text/html;charset=UTF-8");
jfr.setOrder(0);
// 获取 engine 对象,对 enjoy 模板引擎进行配置,配置方式与前面章节完全一样
Engine engine = JFinalViewResolver.engine;
// 热加载配置能对后续配置产生影响,需要放在最前面
engine.setDevMode(true);
// 使用 ClassPathSourceFactory 从 class path 与 jar 包中加载模板文件
engine.setToClassPathSourceFactory();
// 在使用 ClassPathSourceFactory 时要使用 setBaseTemplatePath
// 代替 jfr.setPrefix("/view/")
engine.setBaseTemplatePath("/view/");
// 添加模板函数
engine.addSharedFunction("/common/_layout.html");
engine.addSharedFunction("/common/_paginate.html");
// 更多配置与前面章节完全一样
// engine.addDirective(...)
// engine.addSharedMethod(...);
return jfr;
}
}
2. 与 Spring MVC 整合
<bean id="viewResolver" class="com.jfinal.template.ext.spring.JFinalViewResolver">
<!-- 是否热加载模板文件 -->
<property name="devMode" value="true" />
<!-- 配置shared function,多文件用逗号分隔 -->
<property name="sharedFunction" value="/view/_layout.html, /view/_paginate.html" />
<!-- 是否支持以 #(session.value) 的方式访问 session -->
<property name="sessionInView" value="true" />
<property name="prefix" value="/view/" />
<property name="suffix" value=".html" />
<property name="order" value="1" />
<property name="contentType" value="text/html; charset=utf-8" />
</bean>
3.详细使用方法见官方文档
read me 正在补充,详细使用文档见官网:https://www.jfinal.com/doc/6-1
JFinal Enjoy 官方文档:https://www.jfinal.com/doc/6-1