script 云函数
云函数脚本编辑插件,用于编写和管理页面级的云函数逻辑。设计态在本地执行函数计算,运行态调用CatPull的云端函数接口服务。
编辑器
- 基于 Monaco Editor 的 JavaScript 编辑器
- 支持语法高亮、格式化等
- 保存前自动进行静态代码检查(AST 解析),有错误时阻止保存
云函数存储结构
云函数存储在页面 Schema 的 cloudFuns 字段中,键为函数名,值为 JSFunction 对象:
json
{
"cloudFuns": {
"fetchData": {
"type": "JSFunction",
"value": "function fetchData(api, params) {\n return api.get('/data', params);\n}"
},
"calculateTotal": {
"type": "JSFunction",
"value": "function calculateTotal(items) {\n return items.reduce((sum, item) => sum + item.price, 0);\n}"
}
}
}| 字段 | 类型 | 说明 |
|---|---|---|
| 函数名 | string | 键名,即函数名,全局唯一 |
type | string | 固定为 "JSFunction" |
value | string | 函数完整定义代码 |
编写规范
必须遵守
javascript
// ✅ 只允许函数声明
function main(arg1, arg2) {
return arg1 + arg2;
}
// ✅ 多个函数并列声明
function fetchData(api) {
return api.get('/data');
}
function processData(result) {
return result.data;
}禁止使用
javascript
// ❌ 禁止函数外变量声明
const someVariable = 42;
// ❌ 禁止函数外表达式
const result = someVariable + 10;
// ❌ 禁止箭头函数声明(顶层)
const myFunc = () => {};
// ❌ 禁止 class 声明
class MyClass {}参数说明
- 函数参数
(arg1, arg2, ...)为工作流调用时传入的参数 return语句返回执行结果
调用方式
在组件中通过 this.cloudFuns.xxx() 调用云函数: ❌ 组件无法传递函数参数
json
{
"type": "JSExpression",
"value": "this.cloudFuns.fetchData()"
}