logologo
开始
手册
开发
插件
API
首页
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
开始
手册
开发
插件
API
首页
logologo
RunJS 概述
导入模块
容器内渲染

全局变量

window
document
navigator

ctx

ctx.blockModel
ctx.collection
ctx.collectionField
ctx.dataSource
ctx.dataSourceManager
ctx.element
ctx.exit()
ctx.exitAll()
ctx.filterManager
ctx.form
ctx.getModel()
ctx.getValue()
ctx.getVar()
ctx.i18n
ctx.importAsync()
ctx.initResource()
ctx.libs
ctx.location
ctx.logger
ctx.makeResource()
ctx.message
ctx.modal
ctx.model
ctx.notification
ctx.off()
ctx.on()
ctx.openView()
ctx.render()
ctx.request()
ctx.requireAsync()
ctx.resource
ctx.route
ctx.router
ctx.setValue()
ctx.sql
ctx.t()
ctx.view
Next PageRunJS 概述

#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