脚本
用 JavaScript/Python/Lua 脚本定制零代码增删改查,或创建自定义 API
信息
内置脚本引擎,提供低代码能力,可以用非常简短的代码来实现一些业务逻辑,弥补零代码的不足。
何时使用
- 定制零代码增删改查
- 创建自定义 API
脚本执行流程
一个 API 请求会经历如下过程
- 执行 全局 script 钩子 (可选,前置脚本)
- 执行 CheckPoint 脚本 (可选,检查点)
- 执行 Data PreProcessor 脚本 (可选,数据预处理)
- 执行 零代码的 CRUD 或者执行 Main 脚本 (必选,操作主表)
- 执行 Database Updater 脚本 (可选,修改主表之外的其它表)
- 执行 Event Broadcaster 脚本 (可选,异步通知)
- 执行 Response Enrich 脚本 (可选,修改返回结果)
- 执行 全局 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 语法,例如:
-
变量声明:
- ES5:只能使用
var
关键字声明变量,它没有块级作用域,只有函数作用域。 - ES6:引入了
let
和const
两种新的声明方式。let
具有块级作用域,而const
用于声明不可变的常量。
- ES5:只能使用
-
模板字符串:
- ES5:字符串拼接通常使用
+
操作符。 - ES6:引入了模板字符串,使用反引号(
`
)和${}
来插入变量,使得字符串操作更为简洁。
- ES5:字符串拼接通常使用
-
箭头函数:
- ES5:函数声明较为繁琐。
- ES6:引入了箭头函数,提供了一种更简洁的函数写法,不需要使用
function
关键字,并且箭头函数不绑定自己的this
,它会捕获其所在上下文的this
值。
-
对象和数组的解构赋值:
- ES5:需要手动从对象或数组中提取数据。
- ES6:提供了解构赋值,允许从数组或对象中提取数据到声明的变量中,简化了数据访问。
reference