从庞然大物到现代网络——伟大的解绑
近年来,网站建设从使用 Wordpress 等单体项目转向使用网站生成器、Headless CMS 和部署工作流等更现代化方法的趋势正在加速。我写这篇文章是因为我发现自己一遍又一遍地重复同一个故事,我想写下自己的观察和想法,并与大家分享。
史前史
在过去的美好时光里,我们可能在共享 VPS 上使用过 Wordpress 之类的发布工具,生活也很简单。我们利用 WP/cPanel 之类的开源软件,几乎不用花钱就能访问商品化的主机。虽然这种做法一度还算合理,但很快就变成了一种运营网站的标准模式,主要原因是速度(每次请求都会渲染页面)和安全性(WP 每隔一天就会被黑客攻击,有时甚至一天两次)。虽然我们几乎可以完全掌控内容的发布和呈现方式,但感觉我们牺牲了阅读、写作和主机体验中的重要部分。
我记得有一天,我厌倦了运行一个缓慢且经常被黑客入侵的 WP 网站,于是决定将网站的静态快照放在 S3 上。一切立刻变得安全、快速且非常简单……至少在需要编辑网站之前是这样,我意识到自己无意中(或许是故意)放弃了使用 CMS 来编辑和创建内容。有一段时间,我使用 Cyberduck(一款 Mac FTP 客户端)来编辑网站的 HTML/CSS,它也支持编辑 S3 存储桶中的内容。没有所见即所得,没有 Markdown,没有预览,没有拖放式图片上传,但这种简单的体验让我产生了共鸣。这有点像带着有限的装备去露营,会让人重新考虑在家的日常装备。
这让我开始思考如何编辑内容,并最终设计出一个基于 JS 的 CMS 原型,它可以直接与 S3 交互,并且内置于浏览器中。网站上编辑页面所需的所有内容都包含在页面中,点击保存后就会写入 S3。这个项目持续的时间比你预期的要长,也让我对如何在单体发布系统之外编辑网站感到好奇。
分离内容编辑和渲染
随后,生态系统中旧的孤立系统在概念上被打破,出现了一些公司/产品,人们可以轻松地编辑内容,而无需过多考虑内容的使用方式和位置。您可能听说过Contentful、Sanity.io、DatoCMS等公司,它们提供基于 API 的 CMS,或者Forestry.io和NetlifyCMS提供基于 git 的 CMS。他们都专注于内容创建和编辑体验,而不是内容如何实际传输到网络、移动设备等。当与Netlify等静态站点渲染和部署解决方案结合使用时,这种分离可带来卓越的安全性,因为主要攻击媒介(大型 OSS 项目中的漏洞以及对软件运行位置的完全可见性)会立即消失。换句话说,Contentful 可能比 WP 更安全,但更重要的是,攻击者不太可能知道您甚至使用它来管理您的内容。
基于 Git 的管道的出现
大约在这个时候,前端开发框架的演进开始加速,而这种复杂性也催生了建立前端流水线的需求,或者说,这种需求具有潜力。网站开始使用Jekyll、Hugo以及后来的Gatsby等软件生成,内容在构建时从各种数据源中提取。这些内容被 Gulp、Webpack 等额外的构建工具和打包工具打包起来。幸运的是,像 Netlify 这样的公司构建了平台,帮助我们在更高层次上管理和思考这些流程。
Git 和 Github 在这次架构重构中扮演着至关重要的角色,因为您的网站已经从安装了 WordPress 的 VPS 实例转变为一个带有 webhook 的 git repo,可以连接到 CI/CD 服务。这个 git repo 包含您选择的生成器的配置、模板,有时甚至包含您网站 Markdown 格式的内容。当您使用基于 API 的 CMS 时,您的 repo 将包含从您选择的 CMS 中提取最新版本内容所需的所有配置。
JAMstack 和现代网络
您如何称呼这个过程以及由此产生的网站?不久前, Matt Biilman 和 Chris Bach 创造了“JAMstack”一词,用来描述从 LAMP 等较旧的特定技术栈向更现代的架构的转变。在这种架构下,网站可以使用客户端 JavaScript、可重用 API 和预构建标记构建。“JAMstack”一词的迅速普及提醒我们,有时清晰地阐明一种许多人已经好奇或正在尝试的方法,有助于快速加速该方法和该术语的普及。
利用这些新方法的力量
一旦我们意识到内容可以轻松地在一个地方创建,并在一个或多个其他地方使用,这将开启许多全新且有趣的工作流程。值得注意的是,RSS feed 的历史应用可以同步和整合网络上不同地方的内容,这体现了人们将不同内容源和发布系统互联互通的需求和愿望。唯一改变的是工具(Webhook、CMS API、GraphQL)和新的工作流程,以及它们所支持的更复杂的工作流程。
您的网站不再使用相同的代码库,甚至不再在同一台服务器上进行编辑和渲染。单体应用的拆分意味着我们将使用更合适的软件和方法来应对创建现代网站时遇到的每一个挑战。如今已是 2019 年,我们正处于一个独特的时间点,我相信现代技术栈已被许多前沿开发者/工作室所采用,但与此同时,围绕该技术栈的工具仍处于起步阶段。
去年,当我意识到这一点时,我和几位朋友坐下来,尝试制作一些原型,试图将我们习以为常的消费级网站构建器的简洁性与现代架构和生态系统的强大功能结合起来。这些原型迅速发展,最终我们都一致认为,这里有一个可以解决的、极具价值的重大问题。我们将公司命名为Stackbit,因为我们喜欢软件堆栈和代码,而且这个域名的开放性也起了作用。我们希望通过 Stackbit 让每个人都能轻松创建现代网站。我们相信,像 Stackbit 和其他公司这样的创意正在推动整个行业的进步,因为它们通过创造公平的竞争环境来提高采用率。
如果你想了解更多关于现代网络生态系统的信息,这里有一些链接
- https://www.stackbit.com
- https://jamstack.org
- “为什么静态网站生成器是下一个大热门”,Matt Biilmann
- “提供现代网站体验:内容网格之旅”,Sam Bhagwat