
Язык 🇷🇺 Русский
Общие сведения
API
Создание расширений
Разработка расширений
Контекст
FastComments предоставляет возможность расширять нашу основную функциональность через скрипты, которые мы называем Extensions.
An Extension can add additional markup to the comment widget, event listeners, and run arbitrary code.
Здесь вы найдете примеры расширений, которые используются у нас в продакшне, а также документацию о том, как писать расширения.
Жизненный цикл расширения 
Скрипт для каждого расширения загружается и вызывается до того, как виджет комментариев начнёт запрашивать первый набор комментариев и отображать интерфейс пользователя.
При первоначальной загрузке к объекту расширения будут добавлены следующие данные:
config- Ссылка на объектconfig.translations- Ссылка на объектtranslations.commentsById- Ссылка на все комментарии по id.root- Ссылка на корневой DOM-узел.
Расширения должны переопределять необходимые функции, которые виджет комментариев будет вызывать в соответствующие моменты.
Определение расширения 
Наименьшее возможное расширение будет выглядеть так:
Run 
Для этого примера сохраните это как my-extension.js и разместите по адресу https://example.com/my-extension.min.js.
Это расширение ничего не делает, за исключением того, что при загрузке оно получает объект расширения, созданный основной библиотекой комментариев.
Этот Extension объект является синглтоном и не разделяется с другими расширениями.
Далее, чтобы загрузить наше расширение, нужно сообщить виджету комментариев о нём. Например:
Run 
Для практических примеров смотрите следующий раздел.
Примеры расширений 
В FastComments мы пишем собственные расширения, используя тот же API. Вы можете посмотреть неминифицированный код этих расширений по следующим адресам:
Тёмный режим
Расширение тёмного режима загружается условно, когда обнаруживается «тёмная» страница. Это расширение просто добавляет некоторый CSS в виджет комментариев. Таким образом, нам не нужно загружать CSS тёмного режима, когда он не требуется.
https://fastcomments.com/js/comment-ui/extensions/comment-ui.dark.extension.js
Модерация
Когда текущий пользователь является модератором, мы используем расширение модерации.
Это хороший пример добавления обработчиков событий по клику, выполнения запросов к API, добавления пунктов в меню комментария и области комментариев.
https://fastcomments.com/js/comment-ui/extensions/comment-ui.moderation.extension.js
Живой чат
Расширение живого чата (в сочетании с другой конфигурацией и стилями) превращает виджет комментариев в компонент живого чата.
https://fastcomments.com/js/comment-ui/extensions/live-chat.extension.js
Объект расширения 
Объект расширения состоит из следующего определения:
Run 
API расширения 
Взаимодействие с Extension просто: мы определяем ссылки на функции, которые должны быть вызваны.
Продолжая предыдущий пример, предположим, что мы хотим добавить HTML в начало каждого комментария:
Run 
Когда вы возвращаете HTML таким образом, он будет объединён с интерфейсом через алгоритм сравнения DOM.
Ручной запуск повторного рендера комментария
Можно дождаться начальной загрузки страницы и вручную повторно отрендерить комментарий, вызвав reRenderComment:
Run 