J'ai besoin d'inclure une bibliothèque js dans mon application Shiny. Actuellement, j'utilise includeHTML pour inclure le script directement dans les codes html. par exemple.
includeHTML('URL.js')
Le navigateur affiche "Introuvable" lorsque j'essaie d'explorer le fichier js si j'utilise les balises $ script, par exemple.
http://127.0.0.1:7106/URL.js
tags$script(src = 'URL.js')
Maintenant, je mets URL.js dans le même dossier que ui.r et server.r.
Où dois-je stocker le fichier URL.js? Ou existe-t-il d'autres moyens d'inclure un fichier js?
Merci pour toutes les suggestions.
Ce que vous devez faire c'est:
www
dans le même dossier que server.R
et ui.R
www
.tags$head(tags$script(src="hoge.js"))
dans l'interface utilisateur.Le dossier ressemble à:
├── server.R
├── ui.R
└── www
└── hoge.js
Le ui.R
est quelque chose comme
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"))
)
))
et server.R
library(shiny)
shinyServer(function(input, output) {
output$distPlot <- renderPlot({
dist <- rnorm(input$obs)
hist(dist)
})
})
Notez que ce sont des modèles générés par Rstudio.
head
of html ressemble maintenant à:
<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>
Une autre façon consiste à utiliser:
includeScript("mapManipulator.js"),
└──shiny
├── server.R
├── ui.R
└── www
├── stylesheet.css
└── js
└── hoge.js
L'un ou l'autre fonctionnera
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>')
Une autre option qui n’a pas encore été abordée consiste à supprimer complètement le fichier ui.R, puis à coder l’ensemble en tant que fichier HTML personnalisé. Détails ici https://shiny.rstudio.com/articles/html-ui.html
Dans cet article, les éléments de formulaire HTML par défaut sont automatiquement utilisés comme entrées dans server.R, mais vous pouvez également créer des éléments d’entrée (ou de sortie) personnalisés pour les plus brillants avec ce guide https://shiny.rstudio.com/articles/ building-inputs.html
Ma manière préférée est comme ceci:
ui.R:
extendShinyjs(script = "app.js", functions = c("alerta")),
app.js:
shinyjs.alerta = function(text){
alert(text);
}
serveur.R
js$alerta("alerta alerta antifascista")
Vous pouvez également inclure un code comme ceci:
ui.R après l'importation de la bibliothèque:
jsCode <- "shinyjs.alerta = function(text){alert(text);}"
ui.R dans fluidPage:
extendShinyjs(text = jsCode, functions = c("alerta")),
l'appel de server.R serait le même