Next.js 上部署 Shiny 项目

阅读时长 6 分钟读完

Shiny 是 R 语言中的一个交互式数据可视化工具,它可以帮助我们通过 web 界面快速构建交互式数据可视化应用。而 Next.js 则是一种 React 框架,它可以让我们更加方便地构建 React 应用,并且支持服务器端渲染。在本文中,我们将介绍如何在 Next.js 中部署 Shiny 项目,以便于在 web 上展示交互式数据可视化应用。

安装 Shiny

首先,我们需要安装 Shiny。可以通过以下命令在 R 语言环境中安装 Shiny:

编写 Shiny 应用

在得到 Shiny 的安装之后,我们就可以开始编写一个简单的 Shiny 应用了。下面是一个例子:

-- -------------------- ---- -------
--------------

-- -- ----------
  ---------------- ---------
  --------------
    -------------
      ------------------- -- ----- -------------
      ------------------- -- ----- ------------ ------------------
      ---------------- ------- ----- - ---- --- - -- --- - -----------
    --
    ----------
      ------------------
    -
  -
-

------ -- --------------- ------- -
  ------------ -- ----------
    ----------------------- --------- ------------- ------------
  --

  ----------- -- ------------
    -------------------- ---- - ----- -------- ---- - ----------- ---- - -----------
  --
-

------------ -------

这个 Shiny 应用可以让用户选择两个变量,并且在 scatter plot 中展示这两个变量的关系。需要注意的是,这里的 Shiny 应用将数据集 iris 直接写在代码中,实际中我们可以通过读取外部文件等方式获取数据集。

在 Next.js 中集成 Shiny

接下来,我们需要将上面的 Shiny 应用集成到 Next.js 中。在 Next.js 中使用 Shiny,我们需要安装相关的依赖包:shiny-serverpm2http-proxy. 可以通过以下命令进行安装:

在完成依赖包安装之后,我们就可以开始编写集成 Shiny 的代码了。首先需要创建一个 Shiny 应用的启动脚本,以便于我们可以通过 pm2 管理启动 Shiny 应用。在项目根目录下创建一个名为 shinyStart.js 的文件,添加以下代码:

-- -------------------- ---- -------
----- --------- - ----------------------
----- ----- - ------------------------------
----- -- - ------------------------
----- ---- - ----------------

----- --- - ----------
  ------- ----------------------------------- -- ------ ----- ---------
  ----- ----- -- ------- ----- --------
---

----- ------ - ----------------------- ---- -- -
  -- -------------------------- --- -- -
    -------------- ---- -
      ------- ----------------------------------
      --- ----
    ---
  -
---

--------------- -- -- -
  ------------------ --- -----------
---

-------------- -- -- -
  ------------------ --- -----------
---

------------

------------------- -- -- -
  ------------------ ------ -----------
---

在启动脚本中,我们创建了一个代理服务器,用于代理 Shiny 应用的请求。在 appDir 中需要填写你的 Shiny 应用所在的本地路径,而 port 则是你希望 Shiny 应用所监听的端口号。在 proxy.web 函数中,我们将请求转发到 Shiny 应用所监听的本地端口号。

接下来,我们需要为 Next.js 应用添加一个代理,以便于让 Next.js 应用能够代理 Shiny 应用的请求。在 Next.js 中添加代理可以在 next.config.js 文件中完成。在项目根目录下创建一个名为 next.config.js 的文件,添加以下代码:

-- -------------------- ---- -------
-------------- - -
  ----- ---------- -
    ------ -
      -
        ------- ---------------- -- -------- ----- ------- --- --
        ------------ -------------------------------------
        ------ -----
      --
    -
  --
-

在配置中,我们将 /shiny/* 这个 URL 路径代理到了启动脚本中的 localhost:3000/shiny/*。需要注意的是,这里的 :slug* 表示 Shiny 应用中可能存在的路径,例如可以通过 /shiny/app1 来访问应用 app1。而 proxy: true 表示该请求会被代理到目标 URL 中。

运行应用

完成上述步骤后,就可以启动应用了。我们先在终端中运行 node shinyStart.js 来启动 Shiny 应用,然后在另一个终端中运行 npm run dev 来启动 Next.js 应用。在浏览器中访问 http://localhost:3000/shiny,应该可以看到我们在 Shiny 中编写的数据可视化应用了。

总结

在本文中,我们介绍了如何在 Next.js 中部署 Shiny 项目,并且提供了详细的步骤和示例代码。通过这种方式,我们可以更加方便地将 Shiny 应用集成到 React 应用中,以便于我们构建交互式数据可视化应用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64639729968c7c53b04a0c56

纠错
反馈