在Shiny app中包含js / css脚本

时间:2014-07-22 08:05:38

标签: javascript css r tags shiny

我正在构建一个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,脚本文件夹:[style.css,script.js]] ) - 在我的脚本启动Shiny应用程序的同一目录中添加文件( [script.R,style.css,script.js]

对于包含文件我使用的代码如下:     标签$头(标签$脚本(SRC =" graph.js&#34))

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

2 个答案:

答案 0 :(得分:3)

对于任何可能遇到同样问题的人,我终于想出了解决方案:-) Shiny中有'include'函数,可以让你指定一个绝对/相对路径的文件。以下是参考: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
  }
}

答案 1 :(得分:0)

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

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

将是:

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