15

这可能是一个愚蠢的问题,但我现在才刚刚开始从事 Web 开发,而且我对 JAMStack 尤其陌生。

我已经阅读了一些内容,据我所知,基本上在 JAMStack 中,我们将所有内容都提供给前端应用程序,因此 Javascript 可以像我们的操作系统一样并通过 API 世界获取所有内容。

虽然,这在我看来有点像 SPA 的工作方式。我们通过 API 获取我们想要的内容并相应地重新渲染页面的某些部分。

我在这里想念什么?谁能指出我正确的方向并比较这两者的不同之处以及这种差异的优点/缺点是什么?

谢谢

4

2 回答 2

19

你是对的,这很混乱。

以前,术语 JAMstack 描述了 JavaScript、API 和标记。由于围绕这一技术趋势的采用和混淆,jamstack.org将定义JAMstackJamstack.

Jamstack 是一种旨在使 Web 更快、更安全且更易于扩展的架构。它建立在许多开发人员喜爱的工具和工作流程之上,并带来了最大的生产力。预渲染和解耦的核心原则使网站和应用程序能够以前所未有的信心和弹性交付。

当您查看旧定义并非常纯粹地考虑它时,SPA 可以属于这一类。这可能是定义从 JAM(JavaScript、Apis、Markup)转移到 Jam(技术混合)的原因。

然而,大多数人所说的 JAMstack 站点是带有预渲染 HTML 的站点。这就是不同之处所在。JAMstack 站点(或静态站点)带有预生成所有需要的 HTML 文件的构建过程。这种方法托管成本低、速度快(SPA 必须首先发出请求以显示某些内容)并且更易于访问。

流行的项目是十一,或NuxtNextGatsby或其他。

即使看看流行的选项,也有细微差别。Eleventy eg 采用“纯粹”的方式,主要发送预先生成的 HTML。

Nuxt/Next/Gatsby 和其他人通常使用通用的 JavaScript 方法。它们生成静态 HTML,但一旦加载了 JavaScript,它们就会转换为 SPA。

总而言之,细微差别是微妙的,我不会太担心。但请记住,与经典 SPA 相比,JAMstack 世界中的预渲染 HTML 站点提供了一些不错的性能改进。

于 2020-05-06T06:10:49.080 回答
5

好问题。Jamstack 名称中的 J 很容易导致这方面的混乱!

对于您在 Jamstack 站点的前端使用什么没有规定。它可能是包含大量 JavaScript 的单页应用程序,也可能是完全没有 JavaScript 的纯 HTML 和 CSS。

区别在于它的服务方式。

Jamstack 站点作为静态资产托管,而不是来自一组主动计算对每个请求的响应的服务器。这为他们提供了一些不错的性能、规模和安全特性。并解锁一些令人愉快的开发工作流程

因此,尽管 SPA 可能看起来类似于前端中的一些 Jamstack 站点,但它可能托管在服务器上,该服务器主动生成对每个请求的响应,将内容应用于前端使用的模板等。而 Jamstack 站点将提供预先生成的资产,可能会在客户端使用 JavaScript 和对 API 的调用来丰富它们。

我制作了一个 FreeCodeCamp 视频,其中详细介绍了这方面的大部分内容(然后更深入地研究示例),这可能会引起人们的兴趣,并且Jamstack 网站上还有一些相关术语的词汇表。

于 2021-06-30T17:48:41.597 回答