如何启动一个Shiny应用
在前两篇文章里[1,2],你已经可以通过调用runApp()函数来运行样例应用了。这个函数运行了应用并将它在你的默认浏览器里显示了出来。这个函数的调用是模块化的(blocking?),这意味着当应用运行的时候你就不能使用控制台了。
要想停止应用的运行你只需要在R里打断就行了,在R前端可以使用Ctrl+C,在RStudio里可以按下Esc键,或者点击你的R环境里提供的停止键(Stop)。
在隔离的进程里运行应用
如果你不想被运行的Shiny应用阻挡你使用控制台,你也可以在一个隔离的进程里运行应用。要想这样做,你可以打开一个终端(Terminal)或控制台窗口并运行下面的代码,把~/shinyapp重新放在你应用的路径里:
R -e "shiny::runApp('~/shinyapp')"
在开启一个应用的时候,runApp()默认为这个应用指定一个随机的接口。比如说,它也许会在接口4700上启动这个应用,这样的话你就可以在浏览器里通过http://localhost:4700这个地址连接到已经启动的应用了。
在其他的一些文章里,我们会讨论到一些关于调试Shiny应用的技术,包括停止应用的执行和检查当前环境等。要想实现这些功能,你需要在一个隔离的终端对话里运行,需要从一个交互式的R对话里调用runApp(),而不是用这里提到的方法。
实时重载
当你对ui定义或者server脚本进行更改的时候,并不需要停止再重启应用来查看这些变化,只要保存更改然后重载页面就可以了。
这样做的一个条件是:当浏览器重载的时候,Shiny会准确地检查app.R文件的时间戳来确认是否需要重新执行source()。Shiny并不能检查到其他脚本或数据文件的改变,所以当你需要更改这些文件的时候,就得进行停止再重启应用了。