Wenn ich eine Theme-Komponente erstelle, muss ich mich normalerweise durchsuchen, um die richtigen Imports für verschiedene Dinge zu finden. Deshalb habe ich mich entschieden, eine Sammlung davon zusammenzustellen und hier zu veröffentlichen.
Ember-bezogen
| Name | Import | Verwendung |
|---|---|---|
| Component | import Component from "@glimmer/component"; |
export default class MyComponentClass extends Component {} |
| Action-Decorator | import { action } from "@ember/object"; |
@action |
| Tracked-Decorator | import { tracked } from "@glimmer/tracking"; |
@tracked myTrackedVar |
| Service-Decorator | import { service } from "@ember/service"; |
@service modal |
| (Glimmer-Template) on | import { on } from "@ember/modifier"; |
<p {{on "click" this.someAction}}>Klicke mich!</p>[1] |
Discourse-bezogen
| Name | Import | Verwendung |
|---|---|---|
| apiInitializer | import { apiInitializer } from "discourse/lib/api"; |
export default apiInitializer((api) => {}) |
| withPluginApi | import { withPluginApi } from "discourse/lib/plugin-api"; |
withPluginApi((api) => {})[2][3] |
| ConditionalLoadingSpinner | import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner"; |
<ConditionalLoadingSpinner @condition={{this.loading}} /> |
| DButton | import DButton from "discourse/ui-kit/d-button"; |
<DButton @icon="..." @action={{this.someAction}} /> |
| ajax | import { ajax } from "discourse/lib/ajax"; |
ajax("/path/here")[4] |
| i18n | import { i18n } from "discourse-i18n"; |
{{i18n "locale_key"}}[5] |
| (Glimmer-Template) Gleich, ungleich, größer als, größer gleich, kleiner als, kleiner gleich, oder, nicht, und, hat, enthält | import { eq, and, ... } from "truth-helpers"; |
{{#if (eq this.something this.something2)}}[6] |
Man sieht sie oft kombiniert, zum Beispiel als Bedingung für ConditionalLoadingSpinner oder als Aktionen für DButton.
Ich hoffe, das hilft!
Ich bin kein Profi, also korrigiere bitte Unstimmigkeiten oder bring sie zur Sprache, wenn du welche bemerkst. Danke
.
Du kannst auch Events wie
input,mousedown,focusinusw. verwenden ↩︎Siehe discourse/app/assets/javascripts/discourse/app/instance-initializers/enable-emoji.js at 99ace1be120b928f6c694d0118959d745cc4bdbe · discourse/discourse · GitHub ↩︎
Ich denke, es wird empfohlen, stattdessen
apiInitializerzu verwenden; ich glaube, dies ist die ältere Version? ↩︎Funktioniert ähnlich wie
fetch(). Setze dies in eineasync-Funktion mit demawait-Schlüsselwort. ↩︎Falls du das Locale aus dem Core-Repo erhältst, z. B. user.summary.stats ↩︎
Dinge wie
andundorkönnen mehr als zwei Argumente haben ↩︎