如果我可以从客户端安全地访问数据,为什么 JAMStack 应用程序需要无服务器功能?

Why are the serverless functions needed for JAMStack apps if I can access data securely from client?

JAMStack 人们正在使用 Netlify/Zeit(或 AWS Lambda)函数来访问他们的数据库。但是有像 Firestore 这样的云数据库,您可以按照 here 所述从您的 web/mobile 应用程序安全地直接访问它们。那么为什么人们不将数据访问逻辑也嵌入到他们的客户端应用程序中呢?为什么他们需要额外的无服务器功能层?

对于您提到的示例,您完全正确。

不过,无服务器函数提供了更多机会。以发送电子邮件为例。电子邮件提供商通常不提供从客户端发送电子邮件的方式(我想这是理所当然的),对于这种情况,无服务器功能可以提供帮助。

此外,并非每个数据存储服务都提供一种方法来将数据安全地 access/write 直接从客户端导入数据库。这将是您可以使用无服务器函数的另一种情况。

也就是说,无服务器函数提供了一种相当新的方式来快速编排和组合服务以支持和丰富您的静态站点。

希望对您有所帮助。 :)

如果您不想向最终应用程序公开敏感信息(例如密码、令牌、密钥),则可以使用无服务器函数。在这种情况下,您使该功能成为中间人并注入此敏感信息,将其安全地存储在服务器上而不是用户的客户端应用程序中(他们可能会侵入您的敏感数据)。

这就是 process.env.VARIABLE 在 Nodejs 中的作用。