컴포넌트는 Discourse의 대부분에서 널리 사용됩니다. 위젯이 유용하게 쓰이는 곳은 트래픽이 가장 높은 요소들, 예를 들어 토픽 게시물 스트림이나 여러 메뉴를 가진 헤더 같은 부분입니다.
플러그인이나 테마에서 기존 위젯에 기능을 추가하거나 수정할 때 위젯이 사용되는 것을 자주 볼 수 있습니다.
예를 들어 discourse-calendar 플러그인의 이 위젯을 살펴보세요:
이것은 토픽의 원본 게시물에 렌더링되는 버튼입니다. 게시물 자체가 성능상의 이유로 위젯으로 렌더링되므로, 이 버튼도 위젯이어야 합니다.
그러나 해당 파일의 11~17행을 보면, hbs 헬퍼를 통해 JavaScript에서 정의된 Handlebars 템플릿을 볼 수 있고, 그 템플릿 안에는 {{i18n ...}}와 같이 렌더링되는 컴포넌트들이 포함되어 있습니다.
즉, 일반적으로 UI 요소가 이미 위젯으로 렌더링되는 경우가 아니라면 컴포넌트를 사용할 수 있습니다. 위젯으로 렌더링되는 경우라면 위젯을 사용해야 하며, 의미가 있다면 위젯 내부에서 기존 컴포넌트를 활용할 수도 있습니다.