加入收藏 | 设为首页 | 会员中心 | 我要投稿 武汉站长网 (https://www.027zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 应用 > 正文

开发工业级别的shiny 应用

发布时间:2022-10-31 15:31:23 所属栏目:应用 来源:转载
导读: 首先介绍3个工具包:
shinipsum - 提供了了随机的一些shiny 原型,我们可以更加专注于后端。
fakir-提供了一些数据集
golem :其是一个工具包,用于简化闪亮应用程序的创建、开发和部署。

首先介绍3个工具包:

shinipsum - 提供了了随机的一些shiny 原型,我们可以更加专注于后端。

fakir-提供了一些数据集

golem :其是一个工具包,用于简化闪亮应用程序的创建、开发和部署。

如果你熟悉shiny,那么你可能很快的构建一个小的shiny 程序,加入一些UI,简单的编写一下后端,这些可以很容易的实现。但是,想构建一个大型的 Shiny 应用程序该怎么办?

什么是大的 Shiny 应用程序

构建一个闪亮的大应用,挑战

找到一个好的用户界面(并坚持下去)

选择 UI 很难——作为编码人员,我们有一种自然的倾向,即关注后端,即应用程序的算法部分。但让我们陈述事实:无论您的后端多么复杂和创新,如果您的 UI 不好,您的应用程序就是坏的。这就是硬道理。如果人们无法理解如何使用您的应用程序,那么您的应用程序就无法运行。无论后端多么令人难以置信。

所以尝试找到一个简单而高效的UI(我个人是极简 UI 的忠实粉丝)。人们可以在几秒钟内理解和使用。不要实现实际上不需要的功能或视觉元素,只是“以防万一”。并花时间在该 UI 上,真正考虑您正在实施的视觉元素。

这部分是至关重要的部分,因为它会影响其余的工作——一个大的应用程序意味着众多的功能,并且很难找到一种方法来组织所有这些功能在一个易于理解、易于使用的用户界面中。

作为一个团队工作

Big Shiny Apps 通常意味着几个人将在应用程序上工作。例如,在思思, 3 到 4 人通常在应用程序上工作。那么,我们如何组织呢?

从工具来看:

开发手机程序及移动应用_非连续变形分析方法程序与工程应用_应用程序

从组织的角度

准备好应用程序生产

他包括两件事:扩展和维护。这里有一条建议:让运行应用程序的 R 进程尽可能少地做,特别是防止它从做它不应该做的事情。其中包括:使用 JavaScript 以便客户端浏览器呈现事物(而不是让 R 来完成工作——基本的 JS 很容易学习),使用并行化和异步,如果可能,在运行 R 会话之外完成繁重的工作应用程序

另一方面,维护是从一开始就需要考虑的事情。它包括能够确保应用程序能够正常工作在 长的 跑, 并且可以轻松实现新功能。

构建闪亮的大应用:一步一步第 1 步:设计

不要急于编码。我知道你想要到,因为这是我们喜欢做的,也是我们擅长的。但是在进入编码马拉松之前,花点时间考虑一下应用程序以及它将被部署和使用的方式。拿一支笔和一张纸,画出应用程序。与将使用该应用程序的人讨论它,只是为了破译他们真正需要的东西。花点时间与之交谈信息技术. 以下是您可以提出的一些问题:

提出问题、做笔记和绘制应用程序可帮助您很好地了解预期的内容和您现在必须做的事情。

那么,下一步!

第 2 步:原型制作

我喜欢“UI优先”。主要有两个原因:

所以是的,花时间在 lorem ipsum 中编写一个前端原型。好消息,我们为您准备了一个工具:它是叫 {shinipsum}. 这个包的主要目标是创建可用于绘制 UI 的随机 Shiny 元素,而实际上无需在后端进行任何繁重的工作。

因此,一旦你在一张纸上有了你的应用程序草稿,你就可以移动到“ipsum-UI”阶段:构建应用程序的前端,并用随机的 Shiny 元素填充它,具有功能 喜欢 random_ggplot() 或者 random_DT().

另一个可用于执行此操作的包是. 该包旨在创建假数据帧,主要用于教学目的,但它可用于在闪亮的原型中插入数据。{fakir}}

第 3 步:构建

现在 UI 和功能都设置好了,是时候在后端工作了

这部分非常标准——每个人现在都可以在自己的模块中实现处理应用程序输入的功能。作为 UI,功能和 在前面的步骤中已经定义了模块应用程序,每个人(理论上)都知道他们必须做什么。

而且,如前所述,不应该有“意外实施”,因为该应用程序之前已经被很好地定义了。

第 4 步:保护

保护您的应用程序意味着两件事:测试和锁定应用程序环境。

所以首先,确保在整个构建过程中都包含测试——就像任何其他 R 代码一样。由于应用程序包含在一个包中,您可以使用标准测试工具来测试应用程序的业务逻辑——如第一部分所述,将后端功能和算法与用户界面分开很重要。这意味着这些后端功能可以在应用程序之外运行。是的,如果它们可以在应用程序之外运行,它们就可以以标准方式进行测试,使用 {testthat}.

说到测试前端,可以试试 这 {shinytest} 包裹来自 RStudio,如果您需要确保在整个项目开发过程中没有视觉回归。,另一方面,测试当一个、两个、三个、二十、一百个用户连接到应用程序应用程序的行为{shinyloadtest}应用程序, 并为您提供有关每个会话的连接和响应时间的可视化报告。

我喜欢使用的另一种工具是Katalon Studio。这不是 R有关的,并且可以与任何类型的网络应用程序一起使用。它的工作原理非常简单:它会打开运行 Shiny 应用程序的浏览器,并记录发生的一切。停止录制后,您可以重新启动该应用程序,它会重播已录制的所有事件。当然,您可以指定您自己的场景,定义您自己的事件等。它的使用并不那么简单,但是一旦您很好地掌握了它的工作原理,它就是一个非常强大的工具。

其次,保护您的应用程序意味着它可以在未来的任何时间再次部署——换句话说,您必须确保对所需的 R 版本以及运行您的应用程序所需的包版本有正确的处理。应用程序。这意味着你必须意识到升级包可能会破坏你的应用程序——所以,提供一个环境,可以防止你的应用程序在包更新时中断。为此,有当然 Docker,还有 R 特定的工具 喜欢 {packrat}, 自定义 CRAN 存储库或包管理器。

第 5 步:部署

部署工具不是这篇博文的主题,所以我不会详细讨论这个(记住,我们在谈论构建 ),但我们选择的两个工具是 Docker 和 ShinyProxy,以及 RStudio Connect。

构建闪亮的大应用:介绍 {GOLEM}

好的,有很多事情要处理。是否有工具可以帮助我们简化此工作流程?的课程 有,而且是 叫 {golem}.

它可以在github.com/ThinkR-open/golem找到

{golem}是一个 R 包,它实现了一个框架,用于构建生产级别的 Shiny 应用程序。这一切都始于一个 RStudio 项目,其中包含用于构建应用程序的预定义设置。这个想法是和 {golem},您不必专注于应用程序的基础,并且可以花时间思考您想要做什么,而不是如何去做。它建立在我们开发的工作流程之上思思,并尝试将我们为构建专为生产设计的应用程序而创建的功能和工具集中在一处。

当您打开 golem 项目时,您将从一个 dev-history 文件开始,其中包含一系列功能,这些功能将指导您完成启动、构建和部署应用程序的整个过程。新创建的包包含一个 app_ui.R 和 app_server.R 等待要填充,以及run_app()将启动您的应用程序的功能。可以添加任何新模块和 golem::add_module(),一个函数,它创建一个具有闪亮模块所需骨架的新文件。就像我说的,你不需要考虑技术的东西

您还可以找到一系列 UI、服务器和产品相关的工具、用于创建部署脚本的函数以及其他很酷的东西。查看自述文件以获取更多信息。

原文:Building Big Shiny Apps — A Workflow 2/2 - Rtask

(编辑:武汉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!