跳到主要内容

脚本

用 JavaScript/Python/Lua 脚本定制零代码增删改查,或创建自定义 API

信息

内置脚本引擎,提供低代码能力,可以用非常简短的代码来实现一些业务逻辑,弥补零代码的不足。

何时使用

  • 定制零代码增删改查
  • 创建自定义 API

脚本执行流程

一个 API 请求会经历如下过程

  1. 执行 全局 script 钩子 (可选,前置脚本)
  2. 执行 CheckPoint 脚本 (可选,检查点)
  3. 执行 Data PreProcessor 脚本 (可选,数据预处理)
  4. 执行 零代码的 CRUD 或者执行 Main 脚本 (必选,操作主表)
  5. 执行 Database Updater 脚本 (可选,修改主表之外的其它表)
  6. 执行 Event Broadcaster 脚本 (可选,异步通知)
  7. 执行 Response Enrich 脚本 (可选,修改返回结果)
  8. 执行 全局 script 钩子 (可选,后置脚本)

变量

名称说明
globalThis脚本之间共享数据

函数

名称说明
luwak.dao()读写数据库
luwak.runSql()读写数据库
luwak.returnResult()返回数据
luwak.returnError()抛出错误码
log.error(), log.warn(), log.info(), log.debug()打印日志
luwak.sendMessage()消息队列

支持第三方 Node.js 库

  • var module = require("module_name");

Luwak 内置 Goja ECMAScript/JavaScript引擎,完全支持 ECMAScript 5.1。

支持常用的 ES6 语法,例如:

  1. 变量声明

    • ES5:只能使用var关键字声明变量,它没有块级作用域,只有函数作用域。
    • ES6:引入了letconst两种新的声明方式。let具有块级作用域,而const用于声明不可变的常量。
  2. 模板字符串

    • ES5:字符串拼接通常使用+操作符。
    • ES6:引入了模板字符串,使用反引号(`)和${}来插入变量,使得字符串操作更为简洁。
  3. 箭头函数

    • ES5:函数声明较为繁琐。
    • ES6:引入了箭头函数,提供了一种更简洁的函数写法,不需要使用function关键字,并且箭头函数不绑定自己的this,它会捕获其所在上下文的this值。
  4. 对象和数组的解构赋值

    • ES5:需要手动从对象或数组中提取数据。
    • ES6:提供了解构赋值,允许从数组或对象中提取数据到声明的变量中,简化了数据访问。

reference