在不重启的情况下使用源模块时重新加载 Shiny App

Ken*_*sen 5 rstudio shiny

我一直在开发一个开始变得相当大的 Shiny 应用程序。我已经解决了这个问题,将应用程序的不同部分放入各自文件中的模块中,然后获取文件。

问题是,当我对源文件的服务器部分(下面示例中的 events.R,eventsTabItems() 函数)进行更改时,我必须停止并启动 App i R-Studio 而不是按 F5在浏览器中。

有没有解决的办法?我是否必须将所有内容都包装为反应式函数?

代码示例:

用户界面

source("./sections/events.R")
eventsTabItemsUI(id = "events")
Run Code Online (Sandbox Code Playgroud)

服务器

source("./sections/events.R")
callModule(eventsTabItems, id = "events")
Run Code Online (Sandbox Code Playgroud)

事件

eventsTabItemsUI <- function(id) { 
  ns <- NS(id)
  tabItem(ns(example))
} 
eventsTabItems <- function(input, output, session) {
  output@example <- ...
}
Run Code Online (Sandbox Code Playgroud)

Jos*_*der 0

我发现每当编辑模块时,都需要在重新启动服务器之前停止服务器(使用“运行应用程序”按钮)。如果您编辑的 .js 文件(在 www/ 文件夹中)中有 javascript 代码,您可能需要强制刷新浏览器以确保它重新加载编辑的代码。

这个答案仍然是实验性的,所以我可能错过了一些东西。每当我真的想确保编辑不会破坏我的代码时,我都会对程序中的字符串进行一些小的编辑,并观察这些内容是否显示在 GUI 中,以确保我真正运行的是当前版本的代码。


我不再这样做:

您可以设置您的包来强制删除您的功能。

suppressWarnings(rm("eventsTabItemsUI","eventsTabItems"))
Run Code Online (Sandbox Code Playgroud)