在 Shiny 应用程序中包含 js/css 脚本

Posted

技术标签:

【中文标题】在 Shiny 应用程序中包含 js/css 脚本【英文标题】:Including js/css scripts in Shiny app 【发布时间】:2014-09-12 22:50:56 【问题描述】:

我正在构建一个 Shiny 应用程序,但由于它应该获取用于构建绘图的数据的参数,所以我决定将我的应用程序保存为一个函数(使用本教程:http://shiny.rstudio.com/articles/function.html)。

除了我想包含的 javascript 和样式表之外,一切都正常工作(当我有标准结构时,它在早期工作:ui.R、server.R 和包含的 js/css 文件位于“www”文件夹中)。

我试图: - 像以前一样在“www”文件夹中添加文件([script.R,www 文件夹:[style.css,script.js]]) - 将文件添加到单独的文件夹中,但与启动 Shiny 应用程序的脚本在同一目录中([script.R,scripts 文件夹:[style.css,script.js]]) - 将文件添加到与启动 Shiny 应用程序的脚本相同的目录中 ([script.R, style.css, script.js])

为了包含文件,我使用如下代码: 标签$head(tags$script(src="graph.js"))

当您将 Shinny 应用程序保存为函数时,您对如何包含脚本有什么建议吗? 提前致谢!

【问题讨论】:

【参考方案1】:

对于任何可能遇到相同问题的人,我终于想出了解决方案 :-) Shiny 中有“包含”功能,可让您指定具有绝对/相对路径的文件。这是参考:http://shiny.rstudio.com/reference/shiny/latest/include.html

这是我的示例代码:

app <- function(data)

 shinyApp(
  ui = fluidPage(
   fluidRow(
    # I created a 'www' folder that was included
    # in the package that is launching Shiny app
    tags$head(includeScript(system.file('www', 'script.js', package = 'myPackage'))),
    tags$head(includeCSS(system.file('www', 'style.css', package = 'myPackage'))),
    # some UI stuff
   )
  ),
  server = function(input, output, session) 
   # some server stuff
  

【讨论】:

【参考方案2】:

现在不同了。 includeScript 不需要system.file

所以: tags$head(includeScript(system.file('www', 'script.js', package = 'myPackage')))

将是:

tags$head(includeScript('www/script.js', 'type' = 'text/javascript', 'data-unique-tag' = 'unique'))

【讨论】:

以上是关于在 Shiny 应用程序中包含 js/css 脚本的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 脚本自动版本并在 Android 中包含提交哈希

Chrome 扩展程序 |如何在 CDN 的内容和后台脚本中包含库

如何在 Cordova / Phonegap 的远程 html 文件中包含本地脚本?

有没有办法在咖啡脚本中包含文件?

在页面中包含两次的脚本中调用函数

GWT - IE 不下载 UiBinder 中包含的外部脚本