使用shiny modules的应用如何在Showcase mode下展示模块代码
解决方案
完全可以实现,无需将模块代码全部写入global.R。
默认状态下Shiny Showcase模式的文件扫描逻辑仅会识别应用根目录下的ui.R、server.R、global.R三个核心入口文件,不会自动追踪source()加载的子目录脚本,这就是模块代码无法展示、没有对应语法高亮的核心原因,该行为和官方记录的已知问题表现完全一致。
你可以根据自己使用的Shiny版本,二选一选择配置方案:
- 方案一(推荐,适用于Shiny 1.7.0及以上版本):通过
DESCRIPTION文件手动声明需要展示的模块文件
打开应用根目录下的DESCRIPTION文件,添加如下配置项,指定需要纳入Showcase展示的模块路径:
配置完成后重启应用,Config/Shiny/ShowcaseFiles: modules/*.Rmodules/目录下所有R格式的模块文件都会自动出现在Showcase的文件列表中,自带和核心文件完全一致的语法高亮、代码定位效果,不需要改动任何现有业务代码。 - 方案二(兼容Shiny 1.7.0以下旧版本):通过特殊注释标记关联的模块文件
在global.R中加载模块的source()语句前,添加固定格式的注释,让Showcase解析器识别到关联的文件路径,示例代码如下:
所有被标记的模块文件都会被Showcase模式识别加载,同样支持原生的代码高亮效果。# #! Showcase file: modules/plot_module.R source("modules/plot_module.R", local = TRUE) # #! Showcase file: modules/table_module.R source("modules/table_module.R", local = TRUE)
注意:两种方案都不会破坏你现有的Shiny Modules独立文件架构,应用部署时不需要额外调整其他配置,也不会影响应用本身的运行逻辑。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

