这里是简单的基本解释。
假设您要添加位于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)