嵌入式 JavaScript 引擎(quickjs-ng)。类型名必须写 JS类(不要写 JS)。
适合:签名算法、数据变换、厂商给的 JS 片段。
没有 浏览器 DOM / fetch / 本地文件 API。
1. 快速开始
JS类 eng
如果 (eng.执行(R"js(
function add(a, b) { return a + b; }
var modern_nullish = "ok";
)js") == 假) {
输出(eng.取错误())
返回()
}
文本 sum = eng.调用("add", "[1,2]") ' 参数必须是 JSON 数组文本
输出(sum) ' 3
输出(eng.取全局("modern_nullish")) ' ok
从文件加载:
eng.加载("sign.js") ' UTF-8
2. 常用方法
| 方法 | 说明 |
|---|---|
执行(脚本) |
执行一段 JS;失败返回假 |
加载(路径) |
读 UTF-8 .js 再执行 |
置全局(名, 值文本) |
写入全局属性(值为 JS 表达式/JSON 文本,以实现为准) |
取全局(名) |
读全局属性为文本 |
调用(函数名, [参数JSON数组]) |
调用全局函数;第二参如 "[1,2]"、"[\"hello\",1]" |
取错误 |
最近错误 |
重置 |
清空引擎状态 |
3. 写法要点
- 复杂脚本推荐原始字符串:
R"js( ... )js",避免转义地狱。 调用的第二参必须是 JSON 数组文本(不是逗号分隔的裸参数列表)。- 要用
取全局看到的名字,请用var或globalThis.xxx = ...。顶层const/let不会挂到全局对象上。 - 每个
JS类变量是独立引擎,互不影响。 - 失败时方法返回假或空文本,用
取错误排查。
4. 与 HTTP / JSON 联用
JS类 js
JSON类 req
HTTP类 http
js.执行(R"js(
function getSign(s, ts) { return "sig_" + s.length + "_" + ts; }
)js")
文本 sign = js.调用("getSign", "[\"hello\",1700000000]")
req.置为空对象()
req.置文本("sign", sign)
http.置请求头("Content-Type", "application/json")
文本 resp = http.提交("POST", url, req.到文本())