Hybride Ausführung: Mischen von vorgerenderten und Live-Inhalten

Kombination von Build-Time-Daten mit Client-seitiger Interaktivität

Erfahren Sie, wie Sie hybride interaktive Dokumente erstellen können, die vorgerenderte Inhalte mit live ausgeführtem Code auf der Client-Seite kombinieren. In diesem Tutorial wird erklärt, wie man mit OJS Datenquellen zur Erstellungszeit generiert, sie in interaktive Codezellen importiert und Daten zwischen R- und Python-Umgebungen weitergibt.

Tools
Autor:in
Zugehörigkeit
Veröffentlichungsdatum

21. März 2025

Schlüsselwörter

Hybride interaktive Ausführung, Live und vorgerenderter Code, interaktives WebAssembly

Einführung

Die hybride Ausführung ist eine fortschrittliche Technik, mit der Sie interaktive Dokumente optimieren können, indem Sie umfangreiche Berechnungen zur Erstellungszeit vorbereiten und gleichzeitig die Interaktivität auf der Client-Seite beibehalten. Dieser Ansatz verbessert die Ladezeiten und die Reaktionsfähigkeit von Dokumenten und bietet dem Benutzer dennoch dynamische Funktionen.



1. Übersicht

Interaktive Dokumente erfordern oft ein Gleichgewicht zwischen Leistung und Interaktivität. Durch die Vorberechnung von Daten und Ausgaben während der Dokumenterstellung (unter Verwendung von OJS-Datenquellen) und die anschließende Übergabe dieser Daten an Live-Code-Zellen, die im Browser über WebAssembly ausgeführt werden, können Sie sowohl Geschwindigkeit als auch Interaktivität erreichen.

Wichtigste Vorteile:

  • Effizienz: Umfangreiche Berechnungen werden einmal während der Erstellungszeit durchgeführt, wodurch der Laufzeit-Overhead reduziert wird.
  • Interaktivität: Benutzer genießen weiterhin reaktionsschnelle Live-Updates für Teile des Dokuments.
  • Ressourcenoptimierung: Minimiert redundante Berechnungen auf der Client-Seite.

2. OJS-Datenquellen zur Build-Time

Quarto Live unterstützt den Export von Daten als OJS-Datenquellen. Dies bedeutet, dass Sie Code zur Erstellungszeit auswerten können (z. B. in einem R-Codeblock) und die Ergebnisse zur späteren Verwendung in interaktiven Zellen exportieren können.

Beispiel: Vorrendering einer Datenquelle in R

Quellcode:

```{r}
# Vorschau des ToothGrowth-Datensatzes
head(ToothGrowth)
# Exportieren von ToothGrowth als OJS-Datenquelle
ojs_define(ToothGrowth)
```

Der ToothGrowth-Datensatz ist jetzt als OJS-Variable verfügbar:
   
```{ojs}
ToothGrowth
```

Ergebnisse:

  • In R zeigt der Code eine Vorschau des Datensatzes an und exportiert ihn.
  • In einer OJS-Zelle ist die ToothGrowth-Variable jetzt für die weitere clientseitige Verarbeitung zugänglich.
# Vorschau des ToothGrowth-Datensatzes
head(ToothGrowth)
   len supp dose
1  4.2   VC  0.5
2 11.5   VC  0.5
3  7.3   VC  0.5
4  5.8   VC  0.5
5  6.4   VC  0.5
6 10.0   VC  0.5
# Exportieren von ToothGrowth als OJS-Datenquelle
ojs_define(ToothGrowth)

Der ToothGrowth-Datensatz ist jetzt als OJS-Variable verfügbar:

ToothGrowth

3. Importieren von Build-Time Daten in Live Code Cells

Sobald Sie eine OJS-Datenquelle haben, können Sie sie mit der Zellenoption input wieder in einen interaktiven R- oder Python-Codeblock importieren. So können Sie vorgerenderte Daten auf der Client-Seite weiterverarbeiten oder visualisieren.

Beispiel: Live-Visualisierung mit vorgerenderten Daten

hybrid.qmd
```{webr}
#| input:
#|   - ToothGrowth
# Filtern Sie die ToothGrowth-Daten nach bestimmten Dosen und erstellen Sie ein Diagramm
data_filtered <- ToothGrowth |> dplyr::filter(dose %in% c(0.5, 2))
boxplot(len ~ dose, data = data_filtered)
head(data_filtered)
```
Hinweis

In diesem Beispiel wird der vorgerenderte ToothGrowth-Datensatz zur weiteren Analyse zurück in die interaktive R-Zelle importiert.

4. Übergabe von Daten zwischen Engines

Der hybride Ansatz ermöglicht auch die Kommunikation zwischen verschiedenen WebAssembly-Engines (z. B. zwischen R und Python). Daten, die in einer Engine verarbeitet werden, können an eine andere weitergegeben werden, um Konsistenz und nahtlose Interaktivität zu gewährleisten.

Beispiel: Gemeinsame Nutzung von Daten aus R in Python

Quellcode:

```{webr}
#| edit: false
#| define:
#|   - mpg
# Verarbeiten und Exportieren einer Teilmenge des mtcars-Datensatzes
mpg <- mtcars |>
  dplyr::select(mpg, hp) |>
  dplyr::filter(mpg < 25)
```

```{pyodide}
#| edit: false
#| input:
#|   - mpg
# Importieren Sie die exportierten Daten in Python und stellen Sie sie dar
import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame(mpg)
plt.plot(df['mpg'], df['hp'], 'o')
plt.title("MPG vs HP")
plt.xlabel("Miles Per Gallon")
plt.ylabel("Horsepower")
plt.show()
```

Ergebnisse:

  • Im R-Block wird der mpg-Datensatz verarbeitet und exportiert.
  • Im Python-Block wird der mpg-Datensatz importiert und visualisiert, was die systemübergreifende Datenübergabe demonstriert.

5. Bewährte Praktiken für die hybride Ausführung

  • Trennen Sie statische und interaktive Blöcke:
    Eindeutige Trennung der Berechnungen zur Erstellungszeit (die zwischengespeichert werden können) von den Zellen mit interaktivem Code.

  • Effektive Verwendung von OJS-Variablen:
    Definieren Sie OJS-Datenquellen für die Verarbeitung umfangreicher Daten und importieren Sie diese Quellen dann in interaktive Zellen zur Visualisierung und weiteren Analyse.

  • Optimieren der Leistung:
    Rendering von möglichst viel statischem Inhalt und Beschränkung der Live-Berechnungen auf das, was für die Interaktivität des Benutzers erforderlich ist.

  • Umgebungsübergreifend testen:
    Überprüfen Sie, ob die Daten korrekt zwischen den R- und Python-Blöcken übertragen werden und ob sowohl die vorgerenderten als auch die Live-Elemente wie erwartet funktionieren.

Weiterführende Literatur

Schlussfolgerung

Die hybride Ausführung ermöglicht es Ihnen, das Beste aus beiden Welten zu nutzen: vorgerenderte, statische Ausgaben für umfangreiche Berechnungen und interaktive Live-Elemente für die dynamische Erkundung. Durch die Übertragung von Daten über OJS-Variablen und die Weitergabe von Daten zwischen verschiedenen WebAssembly-Engines können Sie effiziente, hochgradig reaktionsfähige interaktive Dokumente erstellen. Experimentieren Sie mit diesen Techniken, um reichhaltige, interaktive Inhalte zu erstellen, die gut funktionieren und leicht skalierbar sind.

Weitere Artikel erkunden

Hinweis

Hier finden Sie weitere Artikel aus derselben Kategorie, die Ihnen helfen, tiefer in das Thema einzutauchen.

Zurück nach oben

Wiederverwendung

Zitat

Mit BibTeX zitieren:
@online{kassambara2025,
  author = {Kassambara, Alboukadel},
  title = {Hybride Ausführung: Mischen von vorgerenderten und
    Live-Inhalten},
  date = {2025-03-21},
  url = {https://www.datanovia.com/de/learn/interactive/advanced/hybrid-execution.html},
  langid = {de}
}
Bitte zitieren Sie diese Arbeit als:
Kassambara, Alboukadel. 2025. “Hybride Ausführung: Mischen von vorgerenderten und Live-Inhalten.” March 21, 2025. https://www.datanovia.com/de/learn/interactive/advanced/hybrid-execution.html.