v2.6.3 后支持

### 1、Luffy 的函数执行器

插件会通过后缀名，自动匹配不同的执行器（使用其它 js 执行器时，需要排除掉默认的）。另外，不同的持行器，会有不同的环境要求。这个需要注意：

| 执行器 | 函数后缀名 | 描述 | 备注 |
| -------- | -------- | -------- | -------- |
| luffy.executor.s.javascript     | `.js`     | javascript 代码执行器（支持 jdk8[es5.1], jdk11[es6]）     | 默认集成 |
| luffy.executor.s.graaljs     | `.js`     | javascript 代码执行器     |   |
| luffy.executor.s.nashorn     | `.js`     | javascript 代码执行器（支持 jdk17, jdk21）     |   |
| luffy.executor.s.python     | `.py`     | python 代码执行器     |   |
| luffy.executor.s.ruby     | `.rb`     | ruby 代码执行器     |   |
| luffy.executor.s.groovy     | `.groovy`     | groovy 代码执行器     |   |
| luffy.executor.s.lua     | `.lua`     | lua 代码执行器     |   |
| | | |   |
| luffy.executor.m.freemarker     | `.ftl`     | freemarker 模板执行器     |   |
| luffy.executor.m.velocity     | `.vm`     | velocity 模板执行器     |   |
| luffy.executor.m.thymeleaf     | `.thy`     | thymeleaf 模板执行器     |   |
| luffy.executor.m.beetl     | `.btl`     | beetl 模板执行器     |   |
| luffy.executor.m.enjoy     | `.enj`     | enjoy 模板执行器     |   |


添加执行器依赖，示例：

```xml
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>luffy.executor.m.freemarker</artifactId>
    <version>${luffy.version}</version>
</dependency>
```

添加函数文件（注意，函数后缀名	）：`src/main/resources/luffy/hello.ftl`

```html
<#assign name=ctx.param('name','world') />
<!doctype html>
<html>
<body>
    Hello ${name!}!
</body>
</html>
```

运行后，浏览器打开：`http://localhost:8080/hello.ftl?name=solon`

```
输出："Hello solon!"
```



### 2、Solon Luffy 的函数加载器

函数加载器，是 Solon 适配时定制的接口。

| 加载器 | 描述 | 备注 |
| -------- | -------- | -------- |
| JtFunctionLoader     | 函数加载器接口     | 用于定制     |
|      |      |      |
| JtFunctionLoaderClasspath     | 资源目录的函数加载器     | 默认自带（可以去掉）     |
| JtFunctionLoaderDebug     | 资源目录的函数加载器 -  debug 模式     |       |
| JtFunctionLoaderFile     | 外部文件的函数加载器     |       |
|      |      |      |
| JtFunctionLoaderManager     | 函数加载管理器     |       |






