我应该开发一个单独的 Express 服务器,还是处理 next.js 应用程序中的所有 API 调用?

Oz *_*ann 22 mongodb express firebase reactjs next.js

我的网站将执行 CRUD 操作,并将与 MongoDB 和 Firebase 存储+身份验证配合使用。

开发单独的 Express 服务器而不是将所有内容集成到我的 next.js 应用程序中的原因/优点是什么?

据我所知,这一切都可以在我的 next.js 应用程序中完成,但我仍然看到许多项目使用单独的服务器。

Som*_*ial 20

取决于您的应用程序的用途以及托管它的方式。

无论您使用 nextjs 的 /api 还是expressjs,在标准服务器上运行 Next.Js 都没有什么区别。

但是,如果您托管在无服务器(例如 Vercel)上,如果您有大量 CRUD 操作,我建议您使用单独的 Express 服务器,因为无服务器的预热确实很糟糕的用户体验。

构建和部署

Next/JS - 如果您想在后端编辑某些内容并推送更改,则需要您构建整个 JS 应用程序,并且根据您的应用程序有多大,这可能会花费大量时间(特别是如果有很多静态生成的页面)。

Express - 如果单独运行 Express,则可以单独构建和部署前端和后端。这可以节省时间,而且您还可以更好地组织前端/后端代码。

部署选择

我可以选择利用 Vercel 来托管我的前端,其中包含静态生成的页面和一些服务器端生成的页面(自动缩放、缓存、CDN 等),并使用单独的服务器集群来托管我的后端。

PS:我从单个 Next.JS 应用程序转移到 NextJs+Express

  • 无服务器函数在第一次调用时需要时间来“启动”,在此期间称为“预热”。因此,第一个函数需要几秒钟的时间才能执行。该功能预热后,将继续可用几分钟,然后才会关闭。在此期间,它会正常响应。如果你的页面很长一段时间没有被访问,那么第一个访问者只会在几秒钟后看到你的页面(如果是SSR)。你可以谷歌“无服务器预热” (5认同)

Tee*_*eej 6

我可以想到为什么他们会拥有与 NextJS 提供的服务器不同的服务器:

  1. 熟悉 Express、Koa 等。所有next-connect对此都有帮助
  2. PHP、Express、Flask 等中已经存在 API。


Gan*_*ite 5

它实际上是基于您想要做的事情,与 MongoDB 和 Firebase 的额外交互在这两种技术上都是相同的,除非您想单独隔离各自的事情,我认为下一步一起做所有事情不会有任何坏处。

鉴于使用 next.js 的想法,根据我的理解,将利用服务器端渲染。