静态网站生成及其工具(如内容管理系统)已经存在了数十年。 但是,最新一代的这些工具将静态内容的生成降到了最低限度,从而无需依赖庞大的内容管理系统即可构建和维护静态网站。 他们还通过提供插件体系结构和其他可扩展性来利用现代软件构建技术。
静态网站生成器执行以下三个基本操作来创建网站:
最基本的静态站点生成器遵循此模式。 更高级的生成器可能会添加其他功能:
静态网站生成器与CMS
即使是最先进的静态网站生成器,也有意限制了功能集。 这是用例理念的一部分-它们旨在作为功能完善的内容管理系统的更简单替代方案。
大多数内容管理系统使用Web前端,需要数据库来存储内容和管理用户权限,并且需要大量的设置和维护才能有用。 静态网站生成器在大多数方面都采取相反的立场。 它们作为命令行应用程序运行,依靠操作系统来进行文件管理和用户权限,无需数据库即可工作(最多仅需要配置文件),并且不需要很多管理工作即可开始。
静态网站生成器努力使Web内容的创建和管理尽可能地减少开销。 例如,对于CMS,内容通常是通过系统自己的Web界面进行编辑和管理的。 使用静态站点工具,可以使用用户喜欢的任何文本编辑器直接在磁盘上编辑内容。
简而言之,完整CMS和静态网站生成器之间的最大区别在于该工具的理念。 内容管理系统通常在设计上功能丰富。 静态网站生成器会以HTML形式呈现内容,而通常会忽略其他所有内容。
顶级静态网站生成器
如果您要开始使用静态网站生成,则可以找到许多不错的工具供您选择。 在下面,我列出了八个最知名的工具。 一些静态网站生成器是独立的工具(例如此处的Hugo),但大多数都需要语言运行时。 您可能希望开始尝试使用已经熟悉或具有良好机构支持的语言编写的工具。
Gatsby (https://www.gatsbyjs.com/)
Gatsby使用JavaScript React框架来构建静态网站。 它不仅可以从现有的静态文件中构建,还可以连接到数据库,包括现有的内容管理系统(如WordPress)。 如果您要从现有的博客引擎迁移,这会使Gatsby成为一个有用的选项。 Gatsby还直接部署到包含CDN的托管平台。
Hugo (https://gohugo.io/)
Hugo用Go语言编写,可以作为本机二进制文件跨平台运行,因此对于不想处理配置语言运行时的网站开发人员来说是一个不错的选择。 Hugo开箱即用地提供了许多有用的组织功能,例如生成目录或网站菜单,重定向和干净的永久链接URL,以及对常见的第三方网站工具(如Disqus评论和Google Analytics(分析))的集成支持。
Jekyll (https://jekyllrb.com/)
用Ruby编写的Jekyll提供了基本的静态站点生成工作流。 用它的创造者的话来说,它“摆脱了您的束缚,让您专注于真正重要的事情:您的内容。” 不过,Jekyll确实在最小范围内提供了许多有用的功能,例如自动生成指向博客的下一页和上一页的链接的功能。 另请参见Octopress ,这是用于预先配置的Jekyll网站生成的框架。
Lektor (https://www.getlektor.com/)
用Python编写的Lektor与许多其他静态生成器一样,是基于文件的,但是它也提供了友好的管理界面,以及其他静态生成器通常不包含的一些工具(例如,图像管理)。
Nikola (https://getnikola.com/)
Nikola也是用Python编写的,提供了高级功能,例如智能的变更重建,来自许多常见博客引擎的导入器,以及用于根据需要广泛扩展功能的插件体系结构。
Pelican (https://blog.getpelican.com/)
用Python编写的Pelican ,是该语言中最著名,使用最广泛的静态网站系统之一。 Pelican允许使用不同类型的页面类型(例如,博客文章与独立网站页面),提供多语言支持,并缓存通用页面元素以进行快速重建。
React Static (https://github.com/react-static/react-static)
像上面的Gatsby一样, React Static使用React来呈现静态页面。 与Gatsby不同,React Static将数据查询和模板分开,以实现更明确的关注点分离,并且不依赖GraphQL作为内部数据查询格式。
VuePress (https://vuepress.vuejs.org/)