几天前,一位听众向我提出了这个问题。我认为这是一个合理的问题。“静态网站生成器”中的“静态”一词与“动态”一词相矛盾。它似乎暗示着使用静态网站生成器 (SSG) 创建的网站是固定的,只有在将来某个日期再次运行时才会发生变化。这是一个有点不幸的含义,尽管完全可以理解。
实际上,“静态网站”可以像任何其他网站一样动态,因为有一¹件事内置在任何网站中都可用:JavaScript。例如,JavaScript 可以访问 API 并更新页面的静态生成的标记。想想看。JavaScript。API。标记……J…A…M…Jamstack!
理解这个 Jamstack 世界(即执行动态操作的静态网站)的关键部分,就是看看Netlify 提供了什么。Netlify 实际上只提供静态托管。Netlify 上没有服务器端语言(例如 Ruby、PHP 或 Python)来提供各个页面。因此,SSG 和 Netlify 携手并进。但让我们以列表的形式来了解一下
- Netlify 为您运行构建过程。这很可能包括一个 SSG。其主要目的是将构建的站点文件保留在版本控制系统之外,否则会造成浪费。
- Netlify 处理您的表单。无需为了此动态功能而始终运行服务器。
- Netlify 提供身份验证。没错,读者,身份验证是平台的一等公民。
- Netlify 以云函数的形式运行您的服务器端代码。静态托管并不意味着您无法执行服务器端操作。这意味着您可以使用现代、廉价、安全、专注、快速、强大的云函数来执行服务器端操作。
- Netlify 可以按需构建页面。这意味着如果您不想预先构建所有页面,则无需这样做。
这只是一些功能集。这是一篇来自一段时间前的有趣博文,其中介绍了一些员工最喜欢的功能,其中许多功能未包含在上面的列表中。Jamstack 实际上开始意味着静态网站确实发生了动态变化。
希望这能回答这位特定读者的疑问以及任何其他有同样困惑的人的疑问。SSG可以生成完全静态的网站,其中没有任何动态数据并且不提供任何特殊的登录体验。但它们也可以像任何其他网站一样具有动态性,只是构建于更坚实、更静态的基础之上。
- 好吧,让我们说两件事。动态操作可以通过边缘处理程序来完成,而无需客户端 JavaScript。
这是一篇很棒的文章,但由于过分强调静态网站如何也能是动态的——我认为您忘记了解释它们首先是什么让它们成为静态的。静态和非静态有什么区别。
你说得对。这是一个误解。但是,对于不需要一直更新的网站,SSG 非常棒。否则,体验可能会更糟糕,而且并非所有 SSG 都提供预览,这对于贡献者来说很有帮助。
我是 SSG 的忠实粉丝。我一直在使用它们,但有一些注意事项。此外,许多基本功能(如搜索、表单和评论)需要第三方集成和额外的代码。
我认为您提到的误解可能与此有关。与 WordPress 和其他解决方案相比,SSG 可能会显得非常基础。我更喜欢这种方法,但并非每个人都具备维护它的必要技能,即使 Netlify 非常棒。
哦,天哪。“静态”和 JAM 让我想起了 PHP 时代之前。那时我们只有 HTML 和少量 JS。人们忘记了为什么首先要发明动态部分。这就像时尚一样,90 年代是新的 2021 年。
祝你好运,孩子们。
如果真是这样,这实际上让我更困惑了,那么普通 SPA 和静态网站有什么区别?为什么每个人都说它们不同?