Execução híbrida: Combinação de conteúdo pré-renderizado e ao vivo
Combinando dados de tempo de construção com interatividade do lado do cliente
Saiba como criar documentos interativos híbridos que combinam conteúdo pré-renderizado com execução de código ao vivo no lado do cliente. Este tutorial explica como gerar fontes de dados em tempo de compilação usando OJS, importá-las para células de código interativo e passar dados entre ambientes R e Python.
A execução híbrida é uma técnica avançada que permite otimizar documentos interativos por meio da pré-renderização de cálculos pesados em tempo de compilação, mantendo a interatividade ao vivo no lado do cliente. Essa abordagem melhora o tempo de carregamento e a capacidade de resposta do documento e, ao mesmo tempo, fornece recursos dinâmicos ao usuário.
1. Visão geral
Os documentos interativos geralmente exigem o equilíbrio entre desempenho e interatividade. Ao pré-computar dados e saídas durante a criação do documento (usando fontes de dados OJS) e, em seguida, passar esses dados para células de código em execução no navegador por meio de WebAssembly, você pode obter velocidade e interatividade.
Principais benefícios:
Eficiência: Os cálculos pesados são realizados uma vez durante o tempo de compilação, reduzindo a sobrecarga do tempo de execução.
Interatividade: Os usuários ainda desfrutam de atualizações responsivas e ao vivo para partes do documento.
Otimização de recursos: Minimiza os cálculos redundantes no lado do cliente.
2. Fontes de dados OJS em tempo real
O Quarto Live suporta a exportação de dados como fontes de dados OJS. Isso significa que você pode avaliar o código em tempo de compilação (por exemplo, em um bloco de código R) e exportar os resultados para uso em células interativas posteriormente.
Exemplo: Pré-renderização de uma fonte de dados em R
Código-fonte:
```{r}# Visualizar o conjunto de dados ToothGrowthhead(ToothGrowth)# Exportar ToothGrowth como uma fonte de dados OJSojs_define(ToothGrowth)```O conjunto de dados ToothGrowth agora está disponível como uma variável OJS:```{ojs}ToothGrowth```
Resultados:
No R, o código exibe uma visualização do conjunto de dados e o exporta.
Em uma célula OJS, a variável ToothGrowth agora está acessível para processamento adicional no lado do cliente.
# Visualizar o conjunto de dados ToothGrowthhead(ToothGrowth)
# Exportar ToothGrowth como uma fonte de dados OJSojs_define(ToothGrowth)
O conjunto de dados ToothGrowth agora está disponível como uma variável OJS:
ToothGrowth
3. Importação de dados de tempo de construção para células de código ao vivo
Depois de ter uma fonte de dados OJS, você pode importá-la de volta para um bloco de código R ou Python interativo usando a opção de célula input. Isso permite que você processe ou visualize ainda mais os dados pré-renderizados no lado do cliente.
Exemplo: Visualização ao vivo usando dados pré-renderizados
hybrid.qmd
```{webr}#| input:#| - ToothGrowth# Filtrar os dados do ToothGrowth para doses específicas e criar um gráficodata_filtered <- ToothGrowth |> dplyr::filter(dose %in% c(0.5, 2))boxplot(len ~ dose, data = data_filtered)head(data_filtered)```
Nota
Neste exemplo, o conjunto de dados pré-renderizado ToothGrowth é importado de volta para a célula interativa R para análise posterior.
4. Passagem de dados entre mecanismos
A abordagem híbrida também permite a comunicação entre diferentes mecanismos do WebAssembly (por exemplo, entre R e Python). Os dados processados em um mecanismo podem ser transferidos para outro, garantindo consistência e interatividade contínua.
Exemplo: Compartilhamento de dados do R para o Python
Código-fonte:
```{webr}#| edit: false#| define:#| - mpg# Processar e exportar um subconjunto do conjunto de dados mtcarsmpg <- mtcars |> dplyr::select(mpg, hp) |> dplyr::filter(mpg < 25)``````{pyodide}#| edit: false#| input:#| - mpg# Importar os dados exportados em Python e plotá-losimport 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()```
Resultados:
No bloco R, o conjunto de dados mpg é processado e exportado.
No bloco Python, o conjunto de dados mpg é importado e visualizado, demonstrando a passagem de dados entre mecanismos.
5. Práticas recomendadas para execução híbrida
Separar blocos estáticos e interativos:
Separe claramente os cálculos de tempo de compilação (que podem ser armazenados em cache) das células de código interativo em tempo real.
Usar variáveis OJS de forma eficaz:
Defina fontes de dados OJS para processamento de dados pesados e importe essas fontes para células interativas para visualização e análise adicional.
Otimização do desempenho:
Pré-renderize o máximo possível de conteúdo estático e limite os cálculos em tempo real ao que for necessário para a interatividade do usuário.
Teste em vários ambientes:
Verifique se os dados passam corretamente entre os blocos R e Python e se os elementos pré-renderizados e ao vivo funcionam conforme o esperado.
Referência de opções de células
Exploração aprofundada das opções de configuração avançada para blocos de código interativos.
Conclusão
A execução híbrida permite que você aproveite o melhor dos dois mundos: saídas estáticas pré-renderizadas para cálculos pesados e elementos interativos ao vivo para exploração dinâmica. Ao transferir dados por meio de variáveis OJS e passar dados entre diferentes mecanismos do WebAssembly, você pode criar documentos interativos eficientes e altamente responsivos. Faça experiências com essas técnicas para criar conteúdo rico e interativo que tenha bom desempenho e seja facilmente dimensionado.
Explore mais artigos
Nota
Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.