
언어 🇰🇷 한국어
배경
API
확장 기능 개발
개요
FastComments는 우리가 확장(Extensions)이라고 부르는 스크립트를 통해 핵심 기능을 확장할 수 있는 기능을 제공합니다.
An Extension은 댓글 위젯에 추가 마크업을 더하고, 이벤트 리스너를 추가하며, 임의의 코드를 실행할 수 있습니다.
여기에는 우리가 프로덕션에서 사용 중인 확장 예제들과 확장을 작성하는 방법에 대한 문서가 있습니다.
확장 프로그램의 수명 주기 
각 확장 기능의 스크립트는 댓글 위젯이 첫 번째 댓글 집합을 가져오고 UI를 렌더링하기 시작하기 전에 가져와서 실행됩니다.
초기 로드 시, 다음 데이터가 extension 객체에 추가됩니다:
config-config객체에 대한 참조.translations-translations객체에 대한 참조.commentsById- ID별 모든 댓글에 대한 참조.root- 루트 DOM 노드에 대한 참조.
확장 기능은 댓글 위젯이 적절한 시점에 호출할 원하는 함수들을 재정의해야 합니다.
확장 프로그램 정의 
가장 작은 확장 프로그램은 다음과 같습니다:
Run 
이 예시를 위해, 이것을 my-extension.js로 저장하고 https://example.com/my-extension.min.js에서 접근할 수 있게 하세요.
이 확장 프로그램은 아무 작업도 하지 않습니다. 다만 로드될 때 코어 댓글 라이브러리가 생성한 확장 객체를 가져옵니다.
이 Extension 객체는 싱글톤이며 다른 확장과 공유되지 않습니다.
다음으로, 확장을 로드하려면 댓글 위젯에 이를 알려야 합니다. 예를 들어:
Run 
실용적인 예제는 다음 섹션을 참조하세요.
예제 확장 기능 
FastComments에서는 동일한 API를 사용하여 자체 확장 기능을 작성합니다. 다음 엔드포인트에서 이러한 확장 기능의 압축되지 않은 코드를 볼 수 있습니다:
다크 모드
다크 모드 확장은 페이지가 "dark"로 감지될 때 조건부로 로드됩니다. 이 확장은 단순히 댓글 위젯에 일부 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-diffing 알고리즘을 통해 UI에 병합됩니다.
댓글을 수동으로 다시 렌더링하기
초기 페이지 로드를 기다린 다음 reRenderComment를 호출하여 댓글을 수동으로 다시 렌더링할 수 있습니다:
Run 