Поддержка форматов комментариев
В комментарии можно добавлять различное содержимое, включая расширенный синтаксис Markdown и HTML-теги.
Поддержка форматов
Мы поддерживаем полный CommonMark (стандартный синтаксис Markdown), а также следующие расширения:
- таблицы в стиле GFM
- зачёркивание в стиле GFM
- нижние и верхние индексы
- эмодзи
- подсветка блоков кода
- формулы
GFM
Github Flavored Markdown
Кроме того, можно свободно встраивать любое HTML-содержимое, не срабатывая при этом механизм защиты.
Ограниченная поддержка предпросмотра
Чтобы контролировать размер клиента, в официальный клиент @waline/client встроен лишь небольшой парсер Markdown, из-за чего многие конструкции отображаются в панели предпросмотра некорректно (они корректно отображаются в области комментариев).
Это включает следующие ограничения:
Стандартный синтаксис эмодзи (например, 🎉
:tada:) отображается некорректноВерхние и нижние индексы (например,
H~2~O,x^2^) не отображаются корректноСинтаксис
, то есть математические формулы (например,$a = 1$), по умолчанию не отображается.При использовании официального клиента можно настроить отображение
в предпросмотре с помощью параметраtexRenderer, см. Рецепты → Использование собственного рендерера .При стандартном подсветчике блоки кода подсвечиваются случайными цветами с определёнными разделителями.
При использовании официального клиента можно настроить подсветку кода в предпросмотре с помощью параметра
highlighter, см. Рецепты → Пользовательская подсветка кода.
Дополнительно
Принцип
Учитывая размер пакета, клиент использует
markedдля отрисовки и подсветчик размером < 1kb для подсветки по умолчанию, а также не включает рендерер , что и приводит к описанным выше ограничениям.Когда пользователь отправляет комментарий, клиент встраивает собственное изображение эмодзи и отправляет исходный комментарий на сервер.
Сервер получает исходный текст, корректно отрисовывает Markdown с помощью
markdown-itи соответствующих плагинов, подсвечивает блоки кода по языку с помощьюprismjs, выполняет отрисовку в соответствии с настройками пользователя и, наконец, выполняет XSS-обработку.После завершения обработки сервер сохраняет корректно отрисованное содержимое и возвращает его клиенту при необходимости, чтобы обеспечить нормальное отображение области комментариев.
