Skip to content

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: "张三" })
参数类型说明
methodstringHTTP 方法(GET/POST/PUT/DELETE)
pathstring接口路径
paramsmap请求参数
返回值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" })
参数类型说明
pathstring函数路径
paramsmap函数参数
返回值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"
参数类型说明
codestringJavaScript 代码
paramsmap脚本参数(通过 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
    }
`, {})
参数类型说明
codestringGo 代码(需定义 module 入口函数)
paramsmap脚本参数
返回值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 执行系统命令,请注意安全风险

版权所有.