Quelle est la différence entre le composant Ember et le widget Discourse ?

Je travaille sur un plugin qui nécessite des boîtes de dialogue modales. Je sais, après avoir consulté Meta, que cela peut être implémenté aussi bien avec un composant Ember qu’avec un widget Discourse.

Le composant Ember et le widget Discourse peuvent tous deux être attachés à une sortie de plugin (plugin outlet), rendre du HTML et gérer des événements.

Je n’ai trouvé qu’un seul sujet concernant les widgets ci-dessus ; il indique simplement que les widgets Discourse peuvent être rendus plus rapidement. Cependant, j’ai constaté que le cœur de Discourse et de nombreux autres plugins utilisent à la fois des composants Ember et des widgets Discourse. Par exemple :

Quelqu’un peut-il m’expliquer la différence ?
Merci.

1 « J'aime »

Les composants sont largement utilisés dans la plupart des parties de Discourse. Les widgets, quant à eux, s’avèrent utiles pour certains des éléments les plus fréquentés, tels que le flux de messages d’un sujet et l’en-tête avec ses multiples menus.

Vous verrez souvent des widgets utilisés dans les plugins et les thèmes pour ajouter ou modifier des widgets existants.

Prenons par exemple ce widget du plugin discourse-calendar :

Il s’agit d’un bouton rendu dans le message original d’un sujet. Il doit être un widget car le message lui-même est rendu sous forme de widget pour des raisons de performance.

MAIS si vous regardez les lignes 11 à 17 de ce fichier, vous pouvez voir un modèle Handlebars défini dans le JavaScript via l’assistant hbs, et dans ce modèle se trouvent des composants rendus comme {{i18n ...}}.

Donc, en général, vous pouvez utiliser des composants sauf si l’élément de l’interface utilisateur est déjà rendu sous forme de widget. Dans ce cas, utilisez un widget. Et si cela a du sens, vous pouvez utiliser des composants existants à l’intérieur du widget.

7 « J'aime »

Merci pour votre réponse ! C’est exactement ce que je voulais savoir.

2 « J'aime »

Quelques règles empiriques pour le choix des composants/widgets :

  • Si vous en affichez beaucoup, vous voudrez probablement choisir des widgets pour des raisons de performance.
  • Les widgets sont plus limités que les composants et nécessitent plus de connaissances pour obtenir un résultat parfait lors de la création d’interfaces utilisateur complexes.

Donc, en gros, si la performance n’est pas un problème et que je peux l’utiliser, je préférerai les composants. Si la performance est un enjeu ou si je suis contraint (par exemple : utiliser l’API des plugins pour décorer un autre widget), j’utiliserai probablement des widgets.

9 « J'aime »