回忆一下

到目前为止,我们创建的xxx-app 文件夹内包含:

  • data 文件夹,用来存放需要读取的数据
  • www 文件夹,用来存放需要读取的图片
  • helpers.R 通常包含主脚本中需要的函数,有时也可以用来进行一些额外的配置,比如创建文件等(在app 脚本中需要source 该脚本)
  • app.R 主脚本,包含ui、server 两个部分,以及shinyApp(ui, server) 语句

分享的方法

1)直接打包给其他人

就像是我们可以把R 包文件夹压缩起来,别人可以直接install 从本地安装它一样,我们也可以把xxx-app 文件夹保存起来传给别人,其他人只需要在该路径下运行:

  1. # install.packages("shiny")
  2. library(shiny)
  3. runApp("xxx-app")

2)外部获取

runUrl

  • 首先将xxx-app 文件夹打包为.zip;
  • 将该zip 上传到服务器或者网络中,运行相关的链接:
  1. library(shiny)
  2. runUrl( "<the weblink>")

自己测试发现其实有非zip 的文件夹也行。

之前一直在用下面的地址进行加速:

028. 使用jsdelivr 加速github 图床访问

发现会出现如下问题:https://www.tangruiping.com/post/jsdelivr-failed-to-fetch-version-info-for.html

解决方案是使用一个油猴脚本获取的地址:

https://github.com/du33169/gh-proxy-buttons

09. 分享你的shiny app - 图1

比如我的火箭标志给的链接内容放到代码里:

  1. > runUrl("https://gh-proxy.du33169.workers.dev/https://github.com/mugpeng/all_mess/archive/refs/heads/main.zip")

这样即使是github,也可以加速访问了。

如果是github 其实也有专门的函数:

  1. runGitHub( "<your repository name>", "<your user name>")

如果你的shiny 内容只是简单的代码的话,也可以上传到https://gist.github.com/

  1. runGist("<gist number>")
  2. # where "<gist number>" is the number that appears at the end of your Gist’s web address

它提供了一种匿名分享代码的方法。

3)作为网页分享

如果你需要把内容分享给一个没有R 和shiny 的人(比如你的老板),其实可以把shiny 内容输出为一个网页(这其实也是我们的最终目的,上线它!)。

一共有以下几种策略:

  • shinyapps.io
  • Shiny Server
  • RStudio Connect

shinyapp.io

参见:https://www.shinyapps.io/

网站上就有相关的教程,配置起来,非常简单。

首先需要再Rstudio 中获得相关的接口。

设置好后,其实也就是一个R 包一个函数的事情:

  1. rsconnect::deployApp('./App-1')

比如我的网页:

  1. https://mugpeng.shinyapps.io/app-1/

这样,即使是不懂R 的人,只要他会上网,就OK 的了。

shiny server

虽然我们可以白嫖shiny 官方的在线服务,但毕竟还是人家的,而且确实访问有时非常感人。

如果有条件,完全可以部署在自己的服务器上,并且分配一个域名,就相当于做了一个自己的网站了。

参见:https://github.com/rstudio/shiny-server/blob/master/README.md