Solon v2.7.6

FaaS - 知识学习

</> markdown

v2.6.3 后支持

1、添加 Java 对象

其中 ctx 请求或调用时自动添加的。另外 luffy 提供了几个关键的工具对象。

@SolonMain
public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args, app->{
            //app.sharedAdd("XFun", JtFun.g); //这是内置的
            //app.sharedAdd("XUtil", JtUtil.g); //这是内置的
            
            //添加基础共享变量(或类型名字别变) //(函数里就可以使用这些对象或类型)
            app.sharedAdd("LocalDate", LocalDate.class);
            app.sharedAdd("LocalTime", LocalTime.class);
            app.sharedAdd("LocalDateTime", LocalDateTime.class);
            
            //添加数据库操作对象
            app.sharedAdd("db", DbUtils.getDbContext()); 
        
            //让 Luffy 的处理,接管所有 http 请求
            app.all("**", new LuffyHandler());
            
            //
            // 下面这个是可选,或者自己构建一个基于数据库的资源加载器(或别的)
            //
            
            //添加外部文件夹资源加载器(映射 jar 文件边上的 luffy 目录)
            app.context().wrapAndPut(JtFunctionLoader.class, new JtFunctionLoaderFile("./luffy/"));
        });
    }
}

应用示例

return XUtil.guid();

2、跨函数文件互调

  • 直接调用函数文件
var rst1 = callX('/_demo/call_fun.js');
var rst2 = callX('/_demo/call_fun.js', {p:1}); //带参数,函数内通过 ctx.attr("p") 获取

return rst1 + rst2;
//::/_demo/call_fun.js
let p = ctx.attr("p");
if(p){
    return p;
}else{
    return 1;
}
  • 导入函数类
//:: /demo/test_clz.js //申明函数类
this.num = 1;

this.test = function(){
    return "require";
}
//:: /demo/test.js(要求为同语言函数)
var textClz = requireX("/demo/test_clz.js");
return textClz.test();
  • 返回模板和视图(mvc)
return modelAndView("/demo/view.ftl", {user: 'solon'});