2017-06-16 69 views
2

最近我一直在爲不同的客戶做了幾個非常相似閃亮的應用程序和託管他們shinyapps.io。工作流程維護不同版本的閃亮應用

每個應用具有不同的標題,不同的數據,在品牌等一些差異,但否則代碼是非常相似的。

我在維護這些應用程序時遇到問題。當找到並修復一個錯誤時,我目前必須通過5個不同的應用程序,並每次進行更改。

有沒有人對如何處理這個好的建議嗎? Git分支?我知道最好的解決方案是有一個應用程序並上傳不同的數據,但不幸的是這是不可能的。

我想用shinyapps.io繼續,但我開到託管應用程序的其他地方,如果它使我的工作流程更好。

+1

,如果他們分享你可以看看捆綁的程序到一個包相同的程序和維護共享程序從那裏 –

+1

聽起來像是閃亮的模塊可以幫助在這裏:https://shiny.rstudio.com/articles/modules.html 。由於您似乎多次使用代碼,您可以定義閃亮外的反應函數,在那裏更新它們並使用'callModule()'在相關應用程序中調用它們。我在這裏寫了一個最小的例子:https://stackoverflow.com/questions/43976128/create-a-reactive-function-outside-the-shiny-app/43976516#43976516。 – BigDataScientist

+1

Git分支可能會有所幫助。你可以有一個共同功能的中央分支,然後爲每個應用程序分支。常見的錯誤修復會在'master'中發生,其他分支可以同步到那個。 –

回答

1

正如我在評論中寫道shinyModules()將幫助您:https://shiny.rstudio.com/articles/modules.html

閃亮模塊是閃亮的功能,像普通的功能是重複的代碼。

或者換種方式:

  • 重複代碼 - >功能
  • 重複閃亮的功能 - >光澤模塊

由於文檔是有點在這裏和那裏複雜,我在這裏寫了一個簡單的例子: Create a reactive function outside the shiny app

您可以將所有閃亮模塊存儲在文件modules.R中,並將global.R腳本添加到加載模塊的每個應用程序(source("../modules.R")。那麼你只需要更新modules.R中的功能。結構的變化可能需要一段時間。但是,我認爲從長遠來看,它爲更復雜的應用程序帶來了回報。

0

我最終使包含我最需要的應用程序的代碼,如亞當Spannbauer在評論中提出了一個圖書館。

這並不完美;我仍然有一些重複,我必須在GitHub上有這個庫,以便它可以與shinyapps.io一起使用。但是,這對我以前的工作有很大的改進。