logologo
Empezar
Manual
Desarrollo
Plugins
API
Inicio
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Empezar
Manual
Desarrollo
Plugins
API
Inicio
logologo
Descripción general de RunJS
Importación de módulos
Renderizado en contenedor

Variables globales

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
Previous Pagectx.initResource()
Next Pagectx.location
Aviso de traducción IA

Este documento ha sido traducido por IA. Para información precisa, consulte la versión en inglés.

#ctx.libs

ctx.libs es el espacio de nombres unificado para las librerías integradas en RunJS, que contiene librerías de uso común como React, Ant Design, dayjs y lodash. No se requiere import ni carga asíncrona; se pueden utilizar directamente a través de ctx.libs.xxx.

#Escenarios de uso

EscenarioDescripción
JSBlock / JSField / JSItem / JSColumnUtilice React + Ant Design para renderizar la interfaz de usuario, dayjs para el manejo de fechas y lodash para el procesamiento de datos.
Fórmula / CálculoUtilice formula o math para fórmulas similares a Excel y operaciones de expresiones matemáticas.
Flujo de trabajo / Reglas de vinculaciónInvoque librerías de utilidades como lodash, dayjs y formula en escenarios de lógica pura.

#Resumen de librerías integradas

PropiedadDescripciónDocumentación
ctx.libs.ReactNúcleo de React, utilizado para JSX y HooksReact
ctx.libs.ReactDOMAPI de cliente de ReactDOM (incluyendo createRoot), se usa con React para el renderizadoReact DOM
ctx.libs.antdLibrería de componentes de Ant Design (Button, Card, Table, Form, Input, Modal, etc.)Ant Design
ctx.libs.antdIconsLibrería de iconos de Ant Design (ej. PlusOutlined, UserOutlined)@ant-design/icons
ctx.libs.dayjsLibrería de utilidades para fecha y horadayjs
ctx.libs.lodashLibrería de utilidades (get, set, debounce, etc.)Lodash
ctx.libs.formulaLibrería de funciones de fórmulas similares a Excel (SUM, AVERAGE, IF, etc.)Formula.js
ctx.libs.mathLibrería de expresiones matemáticas y cálculosMath.js

#Alias de nivel superior

Para mantener la compatibilidad con el código heredado, algunas librerías también están expuestas en el nivel superior: ctx.React, ctx.ReactDOM, ctx.antd y ctx.dayjs. Se recomienda utilizar de forma consistente ctx.libs.xxx para facilitar el mantenimiento y la búsqueda en la documentación.

#Carga perezosa (Lazy Loading)

lodash, formula y math utilizan carga perezosa: se activa una importación dinámica solo cuando se accede a ctx.libs.lodash por primera vez, y a partir de ahí se reutiliza la caché. React, antd, dayjs y antdIcons están preconfigurados por el contexto y están disponibles de inmediato.

#Ejemplos

#Renderizado con React y Ant Design

const { Button, Card } = ctx.libs.antd;

ctx.render(
  <Card title="Título">
    <Button type="primary">Hacer clic</Button>
  </Card>
);

#Uso de Hooks

const { React } = ctx.libs;
const { useState } = React;
const { Button } = ctx.libs.antd;

const App = () => {
  const [count, setCount] = useState(0);
  return <Button onClick={() => setCount((c) => c + 1)}>{count}</Button>;
};
ctx.render(<App />);

#Uso de iconos

const { Button } = ctx.libs.antd;
const { UserOutlined, HeartOutlined } = ctx.libs.antdIcons;

ctx.render(<Button icon={<UserOutlined />}>Usuario</Button>);

#Procesamiento de fechas con dayjs

const now = ctx.libs.dayjs();
const formatted = now.format('YYYY-MM-DD HH:mm:ss');
ctx.message.info(formatted);

#Funciones de utilidad con lodash

const user = { profile: { name: 'Alice' } };
const name = ctx.libs.lodash.get(user, 'profile.name', 'Unknown');

#Cálculos con formula

const values = [1, 2, 3, 4];
const sum = ctx.libs.formula.SUM(values);
const avg = ctx.libs.formula.AVERAGE(values);

#Expresiones matemáticas con math.js

const result = ctx.libs.math.evaluate('2 + 3 * 4');
// result === 14

#Notas

  • Mezcla con ctx.importAsync: Si se carga un React externo a través de ctx.importAsync('react@19'), JSX utilizará esa instancia. En este caso, no lo mezcle con ctx.libs.antd. Ant Design debe cargarse para que coincida con esa versión de React (ej. ctx.importAsync('antd@5.x'), ctx.importAsync('@ant-design/icons@5.x')).
  • Múltiples instancias de React: Si ocurre el error "Invalid hook call" o el despachador de hooks es nulo, generalmente se debe a la existencia de múltiples instancias de React. Antes de leer ctx.libs.React o llamar a Hooks, ejecute primero await ctx.importAsync('react@version') para asegurarse de que se comparta la misma instancia de React con la página.

#Relacionado

  • ctx.importAsync() - Carga de módulos ESM externos bajo demanda (ej. versiones específicas de React, Vue)
  • ctx.render() - Renderizar contenido en un contenedor