Velocity模版引擎
官网:https://velocity.apache.org/index.html
Velocity 是一个基于Java的模版引擎。它允许web 页面设计者引用JAVA代码预定义的方法。Web 设计者可以根据MVC模式和JAVA程序员并行工作,这意味着Web设计者可以单独专注于设计良好的站点,而程序员则可单独专注于编写底层代码。Velocity 将Java 代码从web页面中分离出来,使站点在长时间运行后仍然具有很好的可维护性,并提供了一个除JSP和PHP之外的可行的被选方案。
Velocity可用来从模板产生web 页面,SQL, PostScript以及其他输出。他也可用于一个独立的程序以产生源代码和报告,或者作为其它系统的一个集成组件。这个项目完成后,Velocity将为Turbine web 应用程序框架提供模板服务。Velocity+Turbine 方案提供的模板服务将允许web 应用按真正的mvc模式进行开发。
https://juejin.cn/post/7258847745526513724
https://blog.csdn.net/chang_mao/article/details/135955608
基本使用
导入相关依赖:
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.apache.velocity.tools</groupId>
<artifactId>velocity-tools-generic</artifactId>
<version>3.1</version>
</dependency>
编写模版:
生成代码:
public class Test {
public static void main(String[] args) throws IOException {
//设置velocity资源加载器
Properties prop = new Properties();
prop.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
Velocity.init(prop);
//创建Velocity容器
VelocityContext context = new VelocityContext();
context.put("cxk", "zhangsan");
//加载模板
Template tpl = Velocity.getTemplate("vms/test.java.vm", "UTF-8");
FileWriter fw = new FileWriter("/Users/houyunfei/code/my-github-project/codegenie/codegenie-backend/src/main/resources/vms/test.java");
//合并数据到模板
tpl.merge(context, fw);
//释放资源
fw.close();
}
}
基本语法:
-
注释:
## 注释内容
-
变量引用:
${name}
,如果不存在,会展示原样,如果不想展示,可以使用${!name}
-
方法引用:
${变量名.方法}
,例如${str.split(" ")}
-
指令:
-
定义变量:
#set($变量=值)
-
判断:
#if(判断条件)
.........
#elseif(判断条件)
.........
#else
.........
#end -
循环:内置属性:
$foreach.index
#foreach($item in $items)
..........
[#break]
#end -
引入资源(不被解析):
#include(resource)
-
引入资源(解析):
#parse(resource)
-
定义重用模块:
#define($模块名称)
模块内容
#end -
动态计算:
#evalute("计算语句")
-
宏指令:
#macro(宏名 [$arg]?)
.....
#end
调用:
#宏名([$arg]?)
-