RunJS 概述

RunJS 是 NocoBase 中用于 JS 区块JS 字段JS 操作 等场景的 JavaScript 执行环境。代码运行在受限沙箱中,可安全访问 ctx(上下文 API),并具备以下能力:

  • 顶层异步(Top-level await
  • 导入外部模块
  • 容器内渲染
  • 全局变量

顶层异步(Top-level await

RunJS 内支持顶层 await,无需包裹在 IIFE 中。

不推荐

async function test() {}
(async () => {
  await test();
})();

推荐

async function test() {}
await test();

导入外部模块

  • ESM 模块使用 ctx.importAsync()(推荐)
  • UMD/AMD 模块用 ctx.requireAsync()

容器内渲染

使用 ctx.render() 将内容渲染到当前容器(ctx.element)中,支持以下三种形式:

渲染 JSX

ctx.render(<button>Button</button>);

渲染 DOM 节点

const div = document.createElement('div');
div.innerHTML = 'Hello World';

ctx.render(div);

渲染 HTML 字符串

ctx.render('<h1>Hello World</h1>');

全局变量

  • window
  • document
  • navigator
  • ctx