Skip to content

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键名,即函数名,全局唯一
typestring固定为 "JSFunction"
valuestring函数完整定义代码

编写规范

必须遵守

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()"
}