单页应用程序是否需要应用程序服务器?

Is Single Page Application needs a Application Server?

我是 SPA 开发的新手,所以这可能是一个愚蠢的问题。请理解。

我的问题是“SPA(单页应用程序)是否需要应用程序服务器?”

据我了解,SPA 在调用 REST API 后得到响应。它使用该响应重新渲染。 如果是这样,处理 REST API 的服务器是“应用程序服务器”吗?

很多帖子都说应用服务器是tomcat、oracle等等...他们也说应用服务器处理访问数据库的请求。那么SPA中的“应用服务器”是什么?或者 SPA 中没有应用程序服务器? (有没有我不知道的架构或系统?)

如果我对架构有误解,请告诉我。 我想了解 SPA 中的 Web 服务器和应用程序服务器。所以看了很多帖子还是一头雾水

谢谢。

SPA 需要一台服务器将 SPA 包提供给用户浏览器。 如果 SPA 与 API 或 APIs 交互,则 API(s) 可以托管在为 SPA 包提供服务的同一台服务器上,或者它们可以托管在其他服务器上。

对于 SPA,您将拥有 html 文件和图像、js、css 文件,这些文件将在您启动单个 html 网页时加载。所以你需要在一些服务器上托管这个静态内容。所以它可以是单独的网络服务器或相同的 API 服务器(应用程序服务器)可以托管这些静态内容并为这些文件提供服务请求。也可以托管在云静态服务器上,通过CDN分发

简答:

是的。 SPA 应用程序确实需要存在于某个地方(因为您需要托管资产(js,css,初始 html,其他)


长答案:

您需要根据简短回答在某处设置以托管条目文件。过去我使用过以下任何东西:

  • NodeJS 代码库服务 运行 在 Docker 容器上(应用程序和资产通过 express 提供),到
  • 类似堆栈上的 dotnetcore(红隼服务器在 ec2 的 docker 上为资产 运行 提供服务)。
  • Docker 容器 运行 托管静态编译资产的 Apache 网络服务器

最近我涉足了将 SPA 应用程序编译成一堆静态资产(例如 NextJS / Gatsby 提供的工具,但在其他 SPA 世界中还有大量其他或替代品) ...但即便如此,您仍需要将这些资产托管在某个地方。

  • Amazon 上的 S3 能够通过存储桶设置直接托管 SPA 应用并提供入口点
  • Vercel(...或任何其他 SaaS 替代品,Vercel 正是我存放个人资料的地方,而且很容易上手)

同样,这完全取决于您,但是,是的,您仍然需要以某种方式使 JavaScript 可用,您只需要选择您的机械师。 SaaS,带有内置 WebServer(例如 Vercel)、CDN(例如 AWS 提供的 S3),或者完全自定义并启动您自己的 WebServer 作为应用程序入口。

单页应用程序需要服务器来提供它需要的 .cssindex.html.js 文件。根本不要求 SPA 必须通过任何方式与应用程序服务器进行通信。

您的内容可以是静态的,也可以由应用自行生成。如果您需要与后端服务器通信,您可以通过某种 api http、https、websockets 或服务器端事件等协议。

总结一下。 SPA 可以完全独立,也可以访问 api 来提供功能。独立应用程序只需要服务器来提供应用程序本身的组件文件(.css、.js、.html)。