Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie funktionieren Turbo Streams (hinter den Kulissen)

Linda Hamilton
Freigeben: 2024-10-22 23:40:29
Original
731 Leute haben es durchsucht

Dieser Artikel wurde ursprünglich auf Rails Designer veröffentlicht


Mit Turbo Streams können Sie bestimmte Teile Ihrer App auf eine Webanfrage hin (Controller-Aktion) aktualisieren, die einfach als Turbo Streams bezeichnet wird. Oder als Turbo Stream Broadcasts, wenn es von Ihrem Back-End (beim Erstellen, Aktualisieren oder Zerstören des Modells oder manuell von einem beliebigen Objekt aus) über Websockets ausgelöst wird, normalerweise über ActionCable.

Während die Quelle unterschiedlich ist, ist die Antwort (HTML) für beide gleich. Ich möchte kurz erklären, wie Turbo Streams funktionieren, damit Sie verstehen, dass es, genau wie bei Rails, keine Magie gibt ??. Einfach nur altes JavaScript!

Um einen Turbo-Stream zu übertragen, gehen Sie folgendermaßen vor:

class Resource < ApplicationRecord
  after_create_commit -> { broadcast_append_to "resources" }
end
Nach dem Login kopieren
Nach dem Login kopieren

Und für Controller-Aktionen (oder Inline im Controller, falls das Ihr Problem ist):

<turbo-stream action="append" target="resources">
  <%= render @resource %>
</turbo-stream>
Nach dem Login kopieren
Nach dem Login kopieren

Was ist also die Antwort (HTML), die für beide Optionen gesendet wurde?

<turbo-stream action="append" target="resources">
  <template>
    <!-- HTML content of the Resource -->
  </template>
</turbo-stream>
Nach dem Login kopieren

Das sieht der Turbo Stream-Antwort, die Sie für Controller-Aktionen erstellen, sehr ähnlich! Der einzige große Unterschied ist das template-Element, das um den HTML-Code gewickelt ist (von einer Partial- oder ViewComponent-Komponente). Das template-Element ist ein Container zum Speichern von HTML-Inhalten, die ausgeblendet sind.

? Antworten wie diese können Sie in den Devtools Ihres Browsers sehen.

How do Turbo Streams Work (behind the scenes)

Sobald das Turbo-Stream-Element in das DOM injiziert wird, übernimmt Turbo. Turbo-Stream ist nichts anderes als ein benutzerdefiniertes Element. Es wird hier definiert. Sie können sehen, dass es wiederum eine connectedCallback()-Funktion definiert. Diese Funktion wird jedes Mal aufgerufen, wenn das Element zum Dokument hinzugefügt wird. Dies ist eine Funktion benutzerdefinierter Elemente.

Was passiert als nächstes? Gehen wir die wichtigsten Teile Schritt für Schritt durch. Machen Sie sich bereit! ?️?

  1. ein benutzerdefiniertes Ereignis, beforeRenderEvent, wird ausgelöst;
  2. Dieses Ereignis ruft die renderElement-Funktion auf;
  3. dann wird performAction aufgerufen;
  4. Die definierte Aktion wird dann aufgerufen.

In dieser letzten Datei können Sie alle unterstützten Standardaktionen für Turbo Stream sehen (Anhängen, Voranstellen, Ersetzen usw.). Wenn Sie mit JavaScript zumindest ein wenig vertraut sind, sollten Sie leicht verstehen, was jede einzelne Aktion bewirkt (falls nicht, schauen Sie sich JavaScript für Rails-Entwickler an?). Im Wesentlichen, mit Ausnahme der Aktion Entfernen; Holen Sie sich den HTML-Code aus dem template-Element und fügen Sie ihn dem DOM hinzu (basierend auf der Aktion; anhängen, voranstellen, danach usw.).

Mit diesem Wissen werden Sie vielleicht feststellen, dass Sie dieses benutzerdefinierte Turbo-Stream-Element einfach manuell einfügen können und Turbo weiß, dass er es aufnehmen muss.

class Resource < ApplicationRecord
  after_create_commit -> { broadcast_append_to "resources" }
end
Nach dem Login kopieren
Nach dem Login kopieren

Kopieren Sie einfach den obigen HTML-Code und zeigen Sie ihn im Browser an. Sie werden sehen, wie das li-Element an das ul-Element angehängt wird. ? Fügen Sie dann mit den Entwicklungstools Ihres Browsers ein weiteres Turbo-Stream-Element irgendwo im DOM ein:

<turbo-stream action="append" target="resources">
  <%= render @resource %>
</turbo-stream>
Nach dem Login kopieren
Nach dem Login kopieren

Ziemlich cool, oder? Turbo nutzt viele Funktionen des Browsers, um das reibungslose Entwicklererlebnis zu bieten, das wir alle lieben. Jetzt wissen Sie, wie Turbo Stream hinter den Kulissen funktioniert!

Das obige ist der detaillierte Inhalt vonWie funktionieren Turbo Streams (hinter den Kulissen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!