Appearance
sss — 动态脚本
sss 模块提供了动态脚本执行、接口调用、函数调用、系统命令执行等功能。
使用方式
sss 为内置全局对象,无需 require,脚本中直接使用:
javascript
var result = sss.Call("GET", "/api/users/list", {})API 列表
Call — 调用 API 接口
javascript
var result = sss.Call("GET", "/api/users/list", {})
var result = sss.Call("POST", "/api/users/create", { name: "张三" })| 参数 | 类型 | 说明 |
|---|---|---|
| method | string | HTTP 方法(GET/POST/PUT/DELETE) |
| path | string | 接口路径 |
| params | map | 请求参数 |
| 返回值 | any | 接口返回数据 |
Api — 调用 API 接口(别名)
与 Call 用法相同。
javascript
var result = sss.Api("GET", "/api/users/list", {})Invoke — 调用函数
javascript
var result = sss.Invoke("/tools/formatDate", { date: "2024-01-01" })| 参数 | 类型 | 说明 |
|---|---|---|
| path | string | 函数路径 |
| params | map | 函数参数 |
| 返回值 | any | 函数返回值 |
Func — 调用函数(别名)
与 Invoke 用法相同。
javascript
var result = sss.Func("/tools/formatDate", { date: "2024-01-01" })Script — 执行 JavaScript 脚本
javascript
var result = sss.Script(`
return "Hello " + param["name"]
`, { name: "World" })
// 返回: "Hello World"| 参数 | 类型 | 说明 |
|---|---|---|
| code | string | JavaScript 代码 |
| params | map | 脚本参数(通过 param 访问) |
| 返回值 | any | 脚本返回值 |
Go — 执行 Go 脚本
javascript
var result = sss.Go(`
import (
"time"
)
func module(req map[string]any) (any, error) {
return "hello " + time.Now().Format("2006-01-02 15:04:05"), nil
}
`, {})| 参数 | 类型 | 说明 |
|---|---|---|
| code | string | Go 代码(需定义 module 入口函数) |
| params | map | 脚本参数 |
| 返回值 | any | 脚本返回值 |
Cmd — 执行系统命令
javascript
var result = sss.Cmd("ls", "-la")CmdRet — 执行命令并返回输出
javascript
var output = sss.CmdRet("echo", "Hello World")完整示例
javascript
// 调用其他接口
var users = sss.Call("GET", "/api/users/list", { page: 1 })
// 调用函数处理数据
var formatted = sss.Invoke("/tools/formatDate", {
date: "2024-01-01",
layout: "2006年01月02日"
})
// 动态执行脚本
var result = sss.Script(`
var db = require("db")
var users = db.Select("SELECT * FROM users WHERE age > ?", param["minAge"])
return users.length
`, { minAge: 18 })
// 执行 Go 脚本
var goResult = sss.Go(`
import "fmt"
func module(req map[string]any) (any, error) {
name := "World"
if v, ok := req["name"].(string); ok {
name = v
}
return fmt.Sprintf("Hello, %s!", name), nil
}
`, { name: "SSS-RUN" })注意事项
Call和Api调用的是SSS-RUN内部注册的接口Invoke和Func调用的是SSS-RUN中定义的函数- Go 脚本必须定义
module(req map[string]any) (any, error)入口函数 - Go 脚本可使用
addons目录下的第三方包 Cmd和CmdRet执行系统命令,请注意安全风险