
言語 🇯🇵 日本語
背景
API
拡張機能の作成
Extensions の開発
コンテキスト
FastComments は、Extensions と呼ぶスクリプトを介してコア機能を拡張する機能を提供します。
An Extension はコメントウィジェットに追加のマークアップを加えたり、イベントリスナーを設定したり、任意のコードを実行したりできます。
ここでは、本番で使用している Extensions の例と、Extensions の書き方に関するドキュメントを紹介します。
拡張機能のライフサイクル 
各拡張機能のスクリプトは、コメントウィジェットが最初のコメントセットの取得と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を使用して独自の拡張機能を自社で開発しています。これらの拡張機能のミニファイされていないコードは、以下のエンドポイントで閲覧できます:
ダークモード
ダークモード拡張機能は、「ダーク」ページが検出された場合に条件付きで読み込まれます。この拡張機能は、コメントウィジェットにいくつかの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
拡張機能オブジェクト 
extension オブジェクトは以下の定義で構成されています:
Run 
拡張機能のAPI 
Extension との連携はシンプルです。実行したい関数への参照を定義するだけだからです。
先ほどの例を踏まえて、各コメントの先頭にHTMLを追加したい場合を考えてみましょう:
Run 
このようにHTMLを返すと、dom-diffingアルゴリズムを通じてUIにマージされます。
コメントの再レンダリングを手動でトリガーする
初回のページ読み込みを待った後、reRenderComment を呼び出すことでコメントを手動で再レンダリングできます:
Run 