Markdown
Форматированный текст из markdown: заголовки, жирный и курсив, код, ссылки, списки, задачи, цитаты, таблицы.
Тип:
widget
Markdown "# Заметка\n\nОбычный **жирный** текст."
Длинному тексту — странице документации, соглашению — место в файле проекта:
Markdown src:"content/terms.md"
Параметры
| Параметр | Тип | Описание |
|---|---|---|
(позиционный)
/
text
|
string | Markdown-текст |
src
|
string | Путь к markdown-файлу проекта от его корня. Тело, написанное в разметке, побеждает |
style
|
TextStyle | Базовый стиль; заголовки масштабируются от него |
linkColor
|
Color | Цвет ссылок |
selectable
|
bool | Можно ли выделять текст |
copyable
|
bool | Кнопка «скопировать» на каждом блоке кода. По умолчанию выключена |
Тело из файла (
src:
)
-
На сайте файл читается при сборке страницы
и уезжает готовым HTML: текст видит поисковый робот, а сам файл раздавать не нужно. Сайт отдаёт только
data/**, поэтому файл внеdata/посетителю недоступен — а его текст на странице есть. - В приложении файл читается загрузчиком данных проекта, один раз.
- Файла нет — блок пустой , страница не ломается. Смотрите на то, что собрали.
-
Заданы и тело, и
src:— рисуется тело, файл не читается.
Якоря заголовков
На сайте каждый заголовок получает
id
из своего текста: нижний регистр, пробелы — в дефисы, знаки препинания и обратные кавычки убираются. Кириллица остаётся кириллицей.
| Заголовок | Якорь |
|---|---|
## Binding a domain
|
#binding-a-domain
|
## Собственные домены (
domains
)
|
#собственные-домены-domains
|
второй
## Setup
на той же странице
|
#setup-2
|
На раздел можно сослаться с любой страницы, адрес — от корня:
Text "Как привязать домен"
#web href:"/guide#binding-a-domain"
Тем же правилом строит ссылки ИИ-помощник сайта, когда называет раздел, из которого взят ответ.
Примеры REEEL-кода
Блок кода, помеченный
reeel
, раскрашивается так же, как файл в редакторе: имена элементов, параметры, строки, выражения, комментарии. Панель следует теме страницы: светлая на светлой, тёмная на тёмной, со своей таблицей цветов для каждой, — и переключается вместе с темой сама.
- На сайте раскраска делается при сборке страницы: скрипта нет, ничего не мигает, робот видит тот же текст.
- Ошибки не подсвечиваются. Пример, который не разбирается, показывается как есть.
- Блоки на других языках печатаются простым текстом.
- Длинная строка прокручивается внутри блока, страница вбок не уезжает.
- В приложении пример рисуется простым текстом: раскраску даёт анализатор, а в собранное приложение он не входит. В превью редактора пример раскрашен.
Кнопка «скопировать» и живые примеры
copyable:true
ставит на каждый блок кода кнопку, которая копирует его текст, — на сайте и в приложении.
Блок, чья ограда помечена словом
live
(три обратные кавычки, затем
reeel live
), — пример, который читатель может изменить и запустить. Вот такой блок:
Text "Привет"
На сайте у такого блока есть кнопка «Запустить». Сам блок при первом касании становится полем ввода того же размера (без раскраски: её даёт анализатор, а он на сервере). Результат показывается под блоком.
Что стоит за кнопкой:
-
Где работает.
Текст собирает сервер самого сайта (
POST /_reeel/play), и предлагается это только на сайте документации —docs.reeel.devиdocs.reeel.site. На других сайтах кнопка ответит, что запустить не удалось. -
Согласие.
Пока посетитель не согласился на cookies, со страницы ничего не уходит: кнопка возвращает баннер согласия, и после «да» запуск продолжается сам. На странице должен быть элемент
Consent— иначе спросить некому. - Пределы. Текст не длиннее 4000 знаков; макросы примера могут скопировать не больше 1000 элементов; сборка — не дольше 50 мс; запусков с одного адреса — 30 в минуту.
-
Что примеру недоступно.
Файлы проекта и сеть:
import,Markdown src:,JsonDataничего не прочтут,HttpDataи картинка по адресу никуда не сходят,Scriptне исполнится. Темы и строк сайта у примера тоже нет — цвета пишутся числами. - Где показывается. В рамке со своим, пустым происхождением: хранилище и cookies сайта ей не видны. Рамка светлая или тёмная вслед за страницей и высотой с то, что пример рисует (до 640 px).
-
liveотносится только к блокамreeel. В приложении и в превью редактора живой блок — обычный блок кода с кнопкой копирования.
Что поддерживается
Заголовки
#
…
######
,
**жирный**
,
*курсив*
,
код
, ссылки
текст
, маркированные и нумерованные списки, задачи
- [x]
, цитаты
>
, блоки кода в тройных обратных кавычках, таблицы GFM, линия
---
. Неподдержанная конструкция остаётся текстом, а не исчезает.
Широкая таблица прокручивается вбок сама — страница при этом не уезжает.
Текст можно переносить по ширине, как принято в markdown-файлах: перенос строки внутри абзаца, пункта списка или цитаты читается как пробел. Блок заканчивает пустая строка или начало другого блока.
Чего не делать
-
Не вставляйте страницу прозы строкой в разметку и не режьте её на ключи
$stringsпо абзацу. - Не рассчитывайте, что тело, которое меняется в рантайме, нарисуется на сайте: там компилируется только известное на сборке — строка или файл.