2014-05-12 27 views
25

में एक जावास्क्रिप्ट फ़ाइल शामिल करें मुझे अपने चमकदार ऐप में जेएस लाइब्रेरी शामिल करने की आवश्यकता है। वर्तमान में मैं सीधे HTML कोड में स्क्रिप्ट को शामिल करने के लिए शामिल HTML का उपयोग करता हूं। जैसेचमकदार ऐप

includeHTML('URL.js') 

ब्राउज़र "नहीं मिला" दिखाई देगा जब मैं अगर मैं टैग का उपयोग $ स्क्रिप्ट, उदा ब्राउज़र को js फ़ाइल की कोशिश

http://127.0.0.1:7106/URL.js 

tags$script(src = 'URL.js') 

अब मैं URL.js को ui.r और server.r के उसी फ़ोल्डर में डालता हूं।

जहां मुझे URL.js फ़ाइल को स्टोर करना चाहिए? या जेएस फ़ाइल को शामिल करने के अन्य तरीके हैं?

किसी भी सुझाव के लिए धन्यवाद।

उत्तर

43

आप क्या करने की जरूरत है:

  1. www फ़ोल्डर में server.R को उसी फ़ोल्डर में www फ़ोल्डर बनाने और ui.R
  2. डाल जावास्क्रिप्ट फ़ाइल।
  3. यूआई में 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 द्वारा उत्पन्न टेम्पलेट्स हैं कुछ है। उनमें से एक

<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> 
+0

या उपयोग 'साथ कस्टम इनपुट (या उत्पादन) चमकदार के लिए तत्वों का निर्माण कर सकते स्क्रिप्टस्क्रिप्ट 'जो चमकदार अनुप्रयोग निर्देशिका होने का आधार पथ' पथ 'तर्क लेता है। 'स्क्रिप्ट शामिल करें' हालांकि फ़ाइल इनलाइन से जावास्क्रिप्ट रखेगा। – jdharrison

+0

धन्यवाद @ kohske। यह वही है जो मुझे चाहिए। – Bangyou

+0

क्या आपको लगता है कि एक चमकदार एप्लिकेशन पर प्रतिक्रिया करना संभव है? –

2
└──shiny 
    ├── server.R 
    ├── ui.R 
    └── www 
     ├── stylesheet.css 
     └── js 
      └── hoge.js 

ui.R

या तो

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>') 
4

काम करेंगे एक और तरीका है उपयोग करने के लिए है:

अब एचटीएमएल की head की तरह लग रहा

includeScript("mapManipulator.js"), 
0

अभी तक एक अन्य विकल्प पर चर्चा नहीं की गई है कि आप पूरी तरह से ui.R फ़ाइल को हटा दें, और फिर पूरी चीज़ को कस्टम HTML फ़ाइल के रूप में कोड करें। यहाँ https://shiny.rstudio.com/articles/html-ui.html

इस अनुच्छेद में विवरण, डिफ़ॉल्ट HTML प्रपत्र तत्वों स्वचालित रूप से server.R में इनपुट के रूप में इस्तेमाल कर रहे हैं, लेकिन आप भी इस गाइड https://shiny.rstudio.com/articles/building-inputs.html