闪亮的节点反应性依赖树

Sor*_*ing 5 r reactive-programming shiny

我已经开始维护一个约3000个代码行的Rshiny包.我想概述一下触发server.R文件中的内容.

是否有机会以一种简洁的方式生成反应性触发依赖图?

Big*_*ist 6

这可能对你很有意思:https://www.r-bloggers.com/announcing-shinytester-a-package-that-helps-you-build-shiny-apps/

它引入了一个叫做库shinyTester与功能 ShinyHierarchy().有关该文章的示例,请参见下图. 在此输入图像描述

  • 你是迈克,他们可能应该同时使用.我不知道"反应日志可视化器".关于闪亮的应用程序的"大小",如果可以(添加)`ShinyHierachy()`中的一个功能,它可以让你过滤掉部分闪亮的应用程序,以便你可以控制图表的大小. (2认同)

Mik*_*ise 6

闪亮的"反应式日志可视化器"内置闪亮.它以递增方式构建图形,显示各种反应节点如何相互依赖.运行后的输出如下所示:

在此输入图像描述

有关使用此工具的说明,请访问:Reactive Log Visualizer

以下是我对此工具的说明:

  • 它是options(shiny.reactlog = TRUE)在shinyApp调用之前插入的行启用的
  • 它会记录日志如何相互激活的日志.
  • 然后可以启用日志可视化工具Ctrl-F3(或Command-F3在Apple上)
  • 有一个节点layouter可以手动覆盖.当显示许多节点以防止线路相互交叉时,这可能具有挑战性.
  • 然后,您可以使用箭头键在日志中向前移动(基本上您在日志中移动).
  • 这里解释了反应符号:闪亮的反应性概述
  • 它暴露了许多对用户不可见的反应活动,因此可能会造成混淆.
  • 它在大型Shiny应用程序上不能很好地工作 - 这个工具的许多方面根本无法扩展.


gre*_*g L 5

反应式日志可视化工具是一个功能强大的工具,但不幸的是,随着@Mike Wise指出,大型应用程序无法很好地扩展.前段时间我读了一些有趣的想法,以改善rstudio/shiny#1846rstudio/shiny#1532的调试体验,并开始探索实现它们的方法.

在这里和那里(稍后)磕磕绊绊之后,我发现执行此操作的最佳方法是解析原始反应日志并从中构建依赖关系图.

打包在https://github.com/glin/reactlog.两个主要特征是:

显示触发失效的调用堆栈

observe({
  reactlog::traceInvalidation()
  rx()
})
Run Code Online (Sandbox Code Playgroud)
4: observe({
       reactlog::traceInvalidation()
       rx()
   })
3: rx [<text>#7]
2: val =>  num 10
1: observe(val(10))
Run Code Online (Sandbox Code Playgroud)

并在树视图中列出反应依赖项

observe({
  reactlog::listDependencies()
  rxA() + rxB() + rxAB()
}, label = "obs")
Run Code Online (Sandbox Code Playgroud)
obs*
+-- rxA*
| `-- valA*
+-- rxB
| `-- valB
`-- rxAB*
  +-- valA*
  `-- valB
Run Code Online (Sandbox Code Playgroud)

树视图对于查看多个依赖项是否无效(星号表示失效或更改)可能特别有用.