RunJS 中可使用两类模块:内置模块(通过 ctx.libs 直接使用,无需 import)和 外部模块(通过 ctx.importAsync() 或 ctx.requireAsync() 按需加载)。
RunJS 内置了常用库,可直接通过 ctx.libs 访问,无需 import 或异步加载。
| 属性 | 说明 |
|---|---|
| ctx.libs.React | React 本体,用于 JSX 与 Hooks |
| ctx.libs.ReactDOM | ReactDOM(如需 createRoot 等可配合使用) |
| ctx.libs.antd | Ant Design 组件库 |
| ctx.libs.antdIcons | Ant Design 图标 |
| ctx.libs.math | Math.js:数学表达式、矩阵运算等 |
| ctx.libs.formula | Formula.js:类 Excel 公式(SUM、AVERAGE 等) |
需要第三方库时,根据模块格式选择加载方式:
ctx.importAsync()ctx.requireAsync()使用 ctx.importAsync() 按 URL 动态加载 ESM 模块,适用于 JS 区块、JS 字段、JS 操作等场景。
<包名>@<版本> 或带子路径 <包名>@<版本>/<文件路径>(如 vue@3.4.0、lodash@4/lodash.js),会按配置拼接 CDN 前缀;也支持完整 URL。未配置时,简写形式会使用 https://esm.sh 作为 CDN 前缀。例如:
若需内网或自建 CDN,可部署兼容 esm.sh 协议的服务,并通过环境变量指定:
https://esm.sh)/+esm)自建服务可参考:https://github.com/nocobase/esm-server
使用 ctx.requireAsync() 按 URL 异步加载 UMD/AMD 或挂载到全局的脚本。
<包名>@<版本>/<文件路径>,与 ctx.importAsync() 相同,会按当前 ESM CDN 配置解析;解析时会加上 ?raw,直接请求该路径的原始文件(多为 UMD 构建)。例如 echarts@5/dist/echarts.min.js 实际请求 https://esm.sh/echarts@5/dist/echarts.min.js?raw(当默认使用 esm.sh 时)。https://cdn.jsdelivr.net/npm/xxx)。加载后,许多 UMD 库会挂到全局对象(如 window.xxx),使用时按该库文档即可。
示例
注意:若库同时提供 ESM 版本,优先使用 ctx.importAsync(),以获得更好的模块语义与 Tree-shaking。