Solon

solon.luffy

v2.7.1 </> markdown
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon.luffy</artifactId>
</dependency>

1、描述

函数计算扩展插件。一个文件,即为一个函数。它是 Solon 与函数算计引擎 Luffy 的结合(做低代码,它是良配)。目前,可选的执行器有:

执行器函数后缀名描述备注
luffy.executor.s.javascript.jsjavascript 代码执行器(支持 jdk8, jdk11)默认集成
luffy.executor.s.graaljs.jsjavascript 代码执行器
luffy.executor.s.nashorn.jsjavascript 代码执行器(支持 jdk17, jdk21)
luffy.executor.s.python.pypython 代码执行器
luffy.executor.s.ruby.rbruby 代码执行器
luffy.executor.s.groovy.groovygroovy 代码执行器
luffy.executor.s.lua.lualua 代码执行器
luffy.executor.m.freemarker.ftlfreemarker 模板执行器
luffy.executor.m.velocity.vmvelocity 模板执行器
luffy.executor.m.thymeleaf.thythymeleaf 模板执行器
luffy.executor.m.beetl.btlbeetl 模板执行器
luffy.executor.m.enjoy.enjenjoy 模板执行器

插件会通过后缀名,自动匹配不同的执行器。(使用其它 js 执行器时,需要排除掉默认的)

2、应用示例

  • 添加启动类
@SolonMain
public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args, app->{
            //让 Luffy 的处理,接管所有 http 请求
            app.all("**", new LuffyHandler());
            
            //添加外部文件夹资源加载器(可以自己定义,比如实现数据库里的文件加载器)
            app.context().wrapAndPut(JtFunctionLoader.class, new JtFunctionLoaderFile("./luffy/"));
        });
    }
}
  • 添加资源文件 /luffy/hello.js (你好,世界!)
let name = ctx.param("name");

if(!name){
    name = "world";
}

return `Hello ${name}!`;

资源文件是默认支持的。也可以把文件放在外部目录 "./luffy"(即 jar 边上的目录),随时更新,随时生效(一般,生产会放这里。或者定制数据库的加载器)。