Aufgrund eines Vorschlags in einem anderen Thema habe ich gerade begonnen, Glimmer-Komponenten aus den Ember-Dokumenten zu lernen. Tatsächlich machen sie wirklich Spaß zu benutzen und sind meiner Meinung nach besser als die Entwicklung in React. Ich bin überrascht, dass Ember nicht beliebter ist. Auf jeden Fall ist meine Frage, soweit ich das beurteilen kann, dass man mit Glimmer-Komponenten jedes Theme-Plugin in Discourse erstellen kann und man scheinbar sofort Zugriff auf alles von Ember hat. Kann man also nicht theoretisch jeden Teil von Discourse anpassen, indem man Glimmer-Komponenten erstellt? Was ist hier die Einschränkung? Sind alle Funktionen von Ember/Glimmer in Discourse verfügbar und man muss dann nur noch einen Plugin-Outlet für die Komponente finden und sie korrekt initialisieren? Ich musste zum Beispiel einige meiner Themen in meiner Community mit verwandten Produktdaten von einer externen E-Commerce-Website ergänzen. Meine Idee ist also, eine Glimmer-Theme-Komponente in Discourse zu erstellen, um die Produktdaten abzurufen und sie dann am Ende des Beitrags anzuzeigen. Das ist mit Glimmer ziemlich einfach, aber ich frage mich, ob dieser Weg der richtige Weg ist, es in Discourse zu tun, da ich nicht sicher bin, wie weit ich die Ember/Glimmer-Komponenten nutzen kann. Danke für jedes Feedback.
Ich glaube, Sie verstehen die Dinge richtig.
Solange die Cross-Scripting-Einstellungen dies zulassen, sollten Sie Daten von der Remote-Site abrufen können (und Sie müssen keinen geheimen API-Schlüssel verwenden, der für den Benutzer erreichbar ist).
Das würde funktionieren,
obwohl Sie sich bewusst sein sollten, dass dies die Produktdaten von der externen Website bei jedem Seitenaufruf abrufen würde und das ist vielleicht nicht etwas, das Sie – oder sie – wollen. Es wäre also besser, ein Plugin zu erstellen, das die Daten von Ihrem eigenen Controller anfordert, und dieser Controller fordert die Daten von der Remote-Site an. Dies würde das Caching des Ergebnisses ermöglichen und Ihnen auch die Verwendung nicht-öffentlicher APIs gestatten.
Wenn es einen Link zu einem Produkt gibt und die Daten veraltet sind, könnten Sie auch ein Plugin erstellen, das das Produkt “oneboxt” und dort die zusätzlichen Daten hinzufügt.
Danke. Ich dachte, EmberData sei verfügbar und es schien eine integrierte Zwischenspeicherung zu haben. Ich habe EmberData in Discourse noch nicht getestet, aber gibt es einen Grund, warum es nicht funktionieren sollte?
Das wäre clientseitig (d. h. benutzerspezifisch) und würde das Problem lösen, wenn ein Benutzer die (gleiche) Anfrage 1000 Mal stellt.
Wenn Sie jedoch 1000 Benutzer haben, die die Anfrage jeweils einmal stellen, würde dies nicht funktionieren, da sie alle einen separaten Cache haben.
Vielen Dank für die Klarstellung. Ja, ich mache mir mehr Sorgen um die Client-Seite, da die API Einschränkungen basierend auf einer IP-Adresse hat. Solange der Client selbst zwischengespeichert wird, sollte alles in Ordnung sein, da ich nicht viele gleichzeitige Benutzer habe, die die API-Beschränkungen der externen API beeinträchtigen würden.
Meine einzige Zurückhaltung bei Ember ist, dass es scheint, als ob es niemand mehr wirklich benutzt, außer Discourse. Ich lerne es nur, weil Discourse immer beliebter wird und die Plattform sich weiter verbessert. Aber gibt es eine Zukunft für Ember außerhalb von Discourse, und wird Discourse noch lange darauf angewiesen sein? Ich finde es seltsam, dass Ember nicht beliebter ist. Ich habe jahrelang in React entwickelt und war überrascht, wie gut es war, nachdem ich Ember neulich installiert hatte. Es ist sehr nützlich, ein meinungsbildendes Framework zu haben.
Nur CDCK kann darauf vollständig antworten, aber meine Einschätzung:
- Es scheint vollständig investiert zu sein
- Es IST ein exzellentes Full-Fat-Framework.
- Es wäre sehr teuer, es neu zu schreiben (und würde wirtschaftlich fast sicher keinen Sinn ergeben)
- Es ist seit über einem Jahrzehnt Ember, setzen Sie Ihre Wetten.
Eine riesige Liste von Unternehmen nutzt EmberJS:
Discourse verwendet kein EmberData.
Obwohl es damals beliebter war, als es von Apple, LinkedIn und Twitch genutzt wurde, hat es immer noch Nutzer wie uns, Intercom, Hashicorp, CrowdStrike.
Wir sind Ember Initiative | Mainmatter beigetreten, da Discourse voll und ganz darin investiert ist.
Um auf den Titel dieses Themas zurückzukommen. Ich denke, es ist ziemlich klar, dass Glimmer Components gut skalieren, da CDCK endlich damit einverstanden war, Komponenten zur Topic List hinzuzufügen, was erfordert, dass das Framework im großen Maßstab funktioniert. Siehe: Upcoming topic-list changes - how to prepare themes and plugins
Ursprünglich stützten sich Erweiterungen auf das inzwischen veraltete Widget-System, das entwickelt wurde, um die Herausforderungen beim Rendern vieler Topic List Items selbst auf alten Android-Telefonen zu bewältigen.