EmberコンポーネントとDiscourseウィジェットの違いはどれくらいありますか?

コンポーネントは Discourse のほぼすべての場所で広く使用されています。ウィジェットが特に有用なのは、トピックの投稿ストリームや複数のメニューを含むヘッダーなど、アクセス数の非常に多い要素においてです。

プラグインやテーマでは、既存のウィジェットに追加したり変更を加えたりするために、ウィジェットがよく使われます。

例えば、discourse-calendar プラグインにある次のウィジェットをご覧ください:

これはトピックの最初の投稿に表示されるボタンです。パフォーマンス上の理由から投稿自体がウィジェットとしてレンダリングされるため、このボタンもウィジェットである必要があります。

ただし、そのファイルの 11 行目から 17 行目を見ると、JavaScript 内で hbs ヘルパーを介して Handlebars テンプレートが定義されており、そのテンプレート内には {{i18n ...}} のようにレンダリングされるコンポーネントが含まれていることがわかります。

したがって、一般的にはコンポーネントを使用できます。ただし、UI 要素がすでにウィジェットとしてレンダリングされている場合は、ウィジェットを使用してください。また、状況が許せば、ウィジェット内で既存のコンポーネントを活用することもできます。

「いいね!」 7