【问题标题】:How do you use addResourcepath() in R Shiny?你如何在 R Shiny 中使用 addResourcepath()?
【发布时间】:2022-01-06 18:55:00
【问题描述】:

我很难理解如何使用 R shiny (https://shiny.rstudio.com/reference/shiny/latest/resourcePaths.html) 中的 addResourcePath() 函数,尽管对于有类似问题 How do I porperly use addResourcePath? 的人来说这是一个明显的解决方案

我想引用一个文件夹,其中包含要在我的闪亮应用程序中使用的几个 javascript 文件,但我不明白“前缀”应该是什么,也不明白如何获取“目录路径”。如何使用 addResourcePath 让 R Shiny 访问特定文件夹中的文件?

【问题讨论】:

    标签: r shiny path shinyjs


    【解决方案1】:

    这里是简单的基本解释。

    假设您要添加位于c:/javascript_files 中的文件myScript.js。最简单的解决方案是将myScript.js 复制到您的应用所在的www 子目录中。位于www 中的任何内容都可以通过您应用的UI 使用前缀/ 访问。

    对于此示例,将您的脚本添加到您可以使用的UI

    tags$head(tags$script(src="myScript.js")))

    Shiny 生成的 HTML 代码将是

    <script src="myScript.js"></script>

    您的浏览器会将其解释为http://your_site/myScript.js。这里的前缀只是/

    但如果您想将 JS 代码保留在原始位置 (c:/javascript_files),则需要使其可供应用程序的 UI(前端)访问。由于不能使用http://your_site/c:/javascript_files/myScript.js 之类的 URL,因此需要创建一个“虚拟”子目录,将本地目录映射到 URL 目录,这实际上是 addResourcePath() 中的前缀参数。

    对于这个例子,让我们使用前缀jscode。表达式:

    addResourcePath("jscode", "c:/javascript_files")

    将创建一个名为 jscode 的“虚拟”目录,用于本地目录 c:/javascript_files 的应用 URL。

    表达式:

    tags$head(tags$script(src="jscode/myScript.js")))

    将被翻译成HTML

    <script src="jscode/myScript.js"></script>

    这将被浏览器解释为http://your_site/jscode/myScript.js

    如果你有c:/javascript_files/code_a这样的子目录,你不需要添加它,你可以像这样引用它:

    <script src="jscode/code_a/myScript.js"></script>

    添加myScript.js 文件的闪亮代码将是:

    library(shiny)
    
    addResourcePath("jscode", "c:/javascript_files")
    
    ui <- fluidPage(
      tags$head(tags$script(src = "jscode/myScript.js"))  
    )
    
    server <- function(input, output, session) {
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 感谢您非常详细的回复@Geovany。所以前缀实际上并不指代任何特定的东西,而只是您提供的一个名称,稍后您想从该位置提取文件时会引用它?
    • 您可以将前缀视为别名来引用您的本地目录。
    猜你喜欢
    • 2020-12-04
    • 2021-09-15
    • 2021-09-20
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2017-03-18
    相关资源
    最近更新 更多