Цей документ було перекладено за допомогою ШІ. Для точної інформації зверніться до англійської версії.
JS Block — це високоеластичний «блок кастомного рендерингу», який підтримує пряме написання JavaScript-скриптів для створення інтерфейсів, прив'язки подій, виклику інтерфейсів даних або інтеграції сторонніх бібліотек. Підходить для сценаріїв персоналізованої візуалізації, тимчасових експериментів та легких розширень, які важко охопити вбудованими блоками.
У контекст виконання JS Block уже вбудовано загальні можливості, які можна використовувати безпосередньо:
ctx.element: DOM-контейнер блоку (безпечно обгорнутий як ElementProxy), підтримує innerHTML, querySelector, addEventListener тощо;ctx.requireAsync(url): асинхронно завантажує бібліотеку AMD/UMD за URL-адресою;ctx.importAsync(url): динамічно імпортує ESM-модуль за URL-адресою;ctx.openView: відкриває налаштований вигляд (спливаюче вікно / бічна панель / сторінка);ctx.useResource(...) + ctx.resource: доступ до даних як до ресурсу;ctx.i18n.t() / ctx.t(): вбудовані можливості інтернаціоналізації;ctx.onRefReady(ctx.ref, cb): рендеринг після готовності контейнера для уникнення проблем із послідовністю виконання;ctx.libs.React / ctx.libs.ReactDOM / ctx.libs.antd / ctx.libs.antdIcons / ctx.libs.dayjs / ctx.libs.lodash / ctx.libs.math / ctx.libs.formula: вбудовані загальні бібліотеки React / ReactDOM / Ant Design / іконки Ant Design / dayjs / lodash / math.js / formula.js для рендерингу JSX, обробки часу, маніпуляцій із даними та математичних обчислень. (ctx.React / ctx.ReactDOM / ctx.antd все ще зберігаються для сумісності.)ctx.render(vnode): рендерить React-елемент, HTML-рядок або DOM-вузол у контейнер за замовчуванням ctx.element; багаторазові виклики повторно використовуватимуть той самий React Root і перезаписуватимуть наявний вміст контейнера.
Редактор скриптів JS Block підтримує підсвічування синтаксису, підказки про помилки та вбудовані фрагменти коду (Snippets), що дозволяє швидко вставляти типові приклади, такі як: рендеринг діаграм, прив'язка подій до кнопок, завантаження зовнішніх бібліотек, рендеринг компонентів React/Vue, часові шкали, інформаційні картки тощо.
Snippets: відкриває список вбудованих фрагментів коду, де можна шукати та одним кліком вставляти вибраний фрагмент у поточну позицію курсору в редакторі.Run: безпосередньо запускає код у поточному редакторі та виводить журнали виконання на нижню панель Logs. Підтримує відображення console.log/info/warn/error, помилки підсвічуються з можливістю переходу до конкретного рядка та стовпця.
Крім того, у верхньому правому куті редактора можна викликати AI-співробітника «Фронтенд-інженер · Nathan», щоб він допоміг вам написати або змінити скрипт на основі поточного контексту. Після цього можна одним кліком натиснути «Apply to editor», щоб застосувати зміни до редактора, і запустити код для перевірки результату. Детальніше див.:
ctx.element (ElementProxy), який впливає лише на поточний блок і не заважає іншим областям сторінки.window/document/navigator використовують безпечні проксі-об'єкти. Загальні API доступні, але ризиковані дії обмежені.class або [name=...]; уникайте використання фіксованих id, щоб запобігти конфліктам стилів або подій через дублювання id у кількох блоках чи спливаючих вікнах.