
Язык 🇺🇦 Русский (Украина)
Общие сведения
API
Разработка расширений
Контекст
FastComments предоставляет возможность расширять нашу основную функциональность с помощью скриптов, которые мы называем Extensions.
Extension может добавлять дополнительную разметку в виджет комментариев, регистрировать слушатели событий и выполнять произвольный код.
Здесь вы найдете примеры расширений, которые используются в рабочей среде, а также документацию о том, как писать расширения.
Жизненный цикл расширения 
Скрипт для каждого расширения извлекается и выполняется до того, как виджет комментариев начнёт запрашивать первый набор комментариев и отображать пользовательский интерфейс.
При первоначальной загрузке на объект расширения будут добавлены следующие данные:
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
Объект расширения 
The extension object consists of the following definition:
Run 
API расширения 
Взаимодействовать с Extension просто, так как мы просто определяем ссылки на функции, которые хотим вызвать.
Чтобы продолжить предыдущий пример, допустим, мы хотим добавить HTML в начало каждого комментария:
Run 
Всякий раз, когда вы возвращаете HTML подобным образом, он будет объединён с UI с помощью алгоритма сравнения DOM.
Ручной запуск повторного рендеринга комментария
Мы можем дождаться начальной загрузки страницы и вручную перерендерить комментарий, вызвав reRenderComment:
Run 