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.
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-Datensatzeshead(ToothGrowth)# Exportieren von ToothGrowth als OJS-Datenquelleojs_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-Datensatzeshead(ToothGrowth)
# Exportieren von ToothGrowth als OJS-Datenquelleojs_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 Diagrammdata_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-Datensatzesmpg <- 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 darimport matplotlib.pyplot as pltimport pandas as pddf = 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.
Zellenoptionen-Referenz
Eingehende Untersuchung der erweiterten Konfigurationsoptionen für interaktive Codeblöcke.
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.