我需要在我的Shiny应用程序中包含一个js库。目前我使用includeHTML将脚本直接包含在html代码中。例如
includeHTML('URL.js')
当我尝试浏览js文件时,如果我使用tags $ script,浏览器将显示“Not Found”,例如。
http://127.0.0.1:7106/URL.js
tags$script(src = 'URL.js')
现在我将URL.js放在ui.r和server.r的同一个文件夹中。
我应该在哪里存储URL.js文件?或者还有其他方法可以包含js文件吗?
感谢您的任何建议。
答案 0 :(得分:50)
您需要做的是:
www
和server.R
ui.R
文件夹
www
文件夹。tags$head(tags$script(src="hoge.js"))
放入用户界面。该文件夹如下所示:
├── server.R
├── ui.R
└── www
└── hoge.js
ui.R
就像是
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("New Application"),
sidebarPanel(
sliderInput("obs",
"Number of observations:",
min = 1,
max = 1000,
value = 500)
),
mainPanel(
plotOutput("distPlot"),
tags$head(tags$script(src="hoge.js"))
)
))
和server.R
library(shiny)
shinyServer(function(input, output) {
output$distPlot <- renderPlot({
dist <- rnorm(input$obs)
hist(dist)
})
})
请注意,这些是Rstudio生成的模板。
现在{h}的head
看起来像是:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
... snip ...
<script src="shared/slider/js/jquery.slider.min.js"></script>
<script src="hoge.js"></script>
</head>
答案 1 :(得分:8)
另一种方法是使用:
includeScript("mapManipulator.js"),
答案 2 :(得分:5)
└──shiny
├── server.R
├── ui.R
└── www
├── stylesheet.css
└── js
└── hoge.js
其中任何一个都可以使用
1. tags$head(HTML("<script type='text/javascript' src='js/hoge.js'></script>"))
2. HTML('<head>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<script type="text/javascript" src="js/hoge.js"></script>
</head>')
答案 3 :(得分:1)
尚未讨论的另一个选项是您只需完全删除ui.R文件,然后将整个内容编码为自定义HTML文件。详情请https://shiny.rstudio.com/articles/html-ui.html
在本文中,默认的HTML表单元素会自动用作server.R中的输入,但您也可以使用本指南https://shiny.rstudio.com/articles/building-inputs.html
构建自定义输入(或输出)元素。答案 4 :(得分:1)
我首选的方式是这样的:
ui.R:
extendShinyjs(script = "app.js", functions = c("alerta")),
app.js:
shinyjs.alerta = function(text){
alert(text);
}
server.R
js$alerta("alerta alerta antifascista")
您还可以包含以下代码:
导入库后的ui.R:
jsCode <- "shinyjs.alerta = function(text){alert(text);}"
流体页面内的ui.R:
extendShinyjs(text = jsCode, functions = c("alerta")),
来自server.R的呼叫是相同的