
Язык 🇷🇺 Русский
Общие сведения
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. Вы можете просмотреть неминифицированный код этих расширений по следующим конечным точкам:
Dark Mode
Расширение Dark Mode загружается при обнаружении «тёмной» страницы. Это расширение просто добавляет некоторый CSS к виджету комментариев. Таким образом нам не нужно загружать CSS для тёмного режима, когда он не нужен.
https://fastcomments.com/js/comment-ui/extensions/comment-ui.dark.extension.js
Moderation
Когда текущий пользователь является модератором, мы используем расширение moderation.
Это хороший пример добавления обработчиков событий по клику, выполнения API-запросов, добавления в меню комментариев и в области комментариев.
https://fastcomments.com/js/comment-ui/extensions/comment-ui.moderation.extension.js
Live Chat
Расширение Live Chat (в сочетании с другой конфигурацией и стилями) превращает виджет комментариев в компонент живого чата.
https://fastcomments.com/js/comment-ui/extensions/live-chat.extension.js
Объект расширения 
Объект расширения состоит из следующего определения:
Run 
API расширения 
Взаимодействие с Extension просто: мы определяем ссылки на функции, которые должны быть вызваны.
Продолжая предыдущий пример, предположим, что мы хотим добавить HTML в начало каждого комментария:
Run 
Когда вы возвращаете HTML таким образом, он будет объединён с интерфейсом через алгоритм сравнения DOM.
Ручной запуск повторного рендера комментария
Можно дождаться начальной загрузки страницы и вручную повторно отрендерить комментарий, вызвав reRenderComment:
Run 