Appearance
语法参考
SSS-RUN脚本引擎支持 JavaScript(Goja)和 Go(Yaegi)两种语言。
JavaScript 语法
脚本基于 ES5 标准(Goja 引擎),以下为常用语法模式。
变量声明
javascript
var name = "张三"
var age = 25
var list = [1, 2, 3]
var obj = { key: "value" }条件判断
javascript
if (age > 18) {
// 成年
} else if (age > 12) {
// 青少年
} else {
// 儿童
}循环
javascript
// for 循环
for (var i = 0; i < 10; i++) {
console.log(i)
}
// 数组遍历
var list = [1, 2, 3]
for (var i = 0; i < list.length; i++) {
console.log(list[i])
}
// forEach
list.forEach(function(item) {
console.log(item)
})函数定义
javascript
function add(a, b) {
return a + b
}
var result = add(1, 2)对象操作
javascript
var user = { name: "张三", age: 25 }
// 读取属性
var name = user.name
var name2 = user["name"]
// 设置属性
user.email = "zhangsan@example.com"字符串操作
javascript
var str = "Hello World"
str.length // 11
str.indexOf("World") // 6
str.substring(0, 5) // "Hello"
str.toUpperCase() // "HELLO WORLD"
str.split(" ") // ["Hello", "World"]
str.replace("World", "SSS-RUN") // "Hello SSS-RUN"JSON 操作
javascript
var obj = { name: "张三", age: 25 }
var json = JSON.stringify(obj) // 转为 JSON 字符串
var parsed = JSON.parse(json) // 解析 JSON 字符串模块引入
javascript
var db = require("db")
var http = require("http")
var log = require("log")
var redis = require("redis")
// 引入函数
var myFunc = require("@myFunction")脚本返回值
脚本最后一行或 return 语句的值将作为接口响应返回:
javascript
var users = db.Select("SELECT * FROM users")
return usersGo 脚本语法
Go 脚本基于 Yaegi 解释器,需定义 module 入口函数。
入口函数
go
func module(req map[string]any) (any, error) {
// req 为传入参数
return result, nil
}导入包
go
import (
"fmt"
"time"
"strings"
)使用 addons 扩展包
将第三方 Go 包放入 addons 目录,即可在脚本中导入使用:
go
import (
"github.com/your-package/xxx"
)
func module(req map[string]any) (any, error) {
result := xxx.DoSomething()
return result, nil
}完整示例
go
import (
"fmt"
"time"
)
func module(req map[string]any) (any, error) {
name := "World"
if v, ok := req["name"].(string); ok {
name = v
}
now := time.Now().Format("2006-01-02 15:04:05")
message := fmt.Sprintf("Hello, %s! Current time: %s", name, now)
return map[string]any{
"message": message,
"time": now,
}, nil
}注意事项
- JavaScript 引擎为 Goja,仅支持 ES5 语法,不支持 ES6+(如 let/const/箭头函数/Promise/async-await)
- Go 脚本中
import必须在func module之前声明 - Go 脚本的
req参数类型为map[string]any - Go 脚本返回
(any, error),第二个返回值为错误信息