FaaS - 知识学习
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'});