如果无服务器意味着没有后端服务器会怎样?
现在,每个人都知道,无服务器实际上并不意味着没有服务器;它只是意味着使用别人的服务器。但如果它真的意味着完全没有服务器呢?如果你可以完全不使用任何服务器来运行代码呢?你可能会想,"那只是桌面应用程序,"但我指的不是这个。如果我们可以运行一个由前端代码组成的传统网络应用程序,它可以与类似 express 的服务器进行对话,并将数据保存在数据库中,而这一切都不需要任何服务器,那会怎么样呢?没有后台服务器,没有容器,没有虚拟机,什么都没有。只有代码、浏览器(还有一个提供静态文件的地方,严格来说也是一个服务器)。
我称之为 ServerFree™ 架构。
简要说明
本文演示了如何构建一个打包后可在浏览器中运行的网络应用程序,包括数据库。
前台代码的构建与往常一样,后台代码打包后在 Web Worker 中运行,数据库则使用编译为 WebAssembly 的 SQLite。
演示应用程序的代码可在 github 上获取。
实时版本已在 https://my-way-track.vercel.app/ 上运行。
本文分为几个部分。首次尝试使用经典架构(简单部分)数据库模式更好的布局机会的自定义组件仪表板MVP V1(使用 Turso DB 的小弯路)转换为 ServerFree 架构(有趣部分)SQLite 编译为 WebAssembly 的 Web Worker 服务 Worker 主线程构思
一天早上,当我正在考虑如何在不感到内疚的情况下拖延 SubZero 的市场营销工作时,我突然想到了一个主意。"我知道,我要做一些内容营销......但我需要什么呢?哦,一个很酷的演示项目!"就这样,我找到了用一个月的时间编写代码进行内容营销的方法。
最近,大多数以开发者为中心的内容似乎更偏向于垃圾信息而非实质内容。你会看到这样的标题:"5 分钟内构建 <thing>" 或 "1 小时内创建 <fang> 克隆版(使用我们的 SaaS)",但一旦你深入了解,这些内容往往只是另一个琐碎的待办事项/博客/聊天应用程序,没有人会真正使用。
我想创造一些与众不同的东西,一些真正有用的东西。在 Hacker News 上寻找灵感时,我偶然发现了 Show HN:一个带有公司评论和招聘人员自动回复功能的求职申请跟踪器。它看起来是一个有用的工具,可以使用 SubZero 栈以相当快的速度构建。
然而,在查看评论时,有一件事引起了我的注意:很多人都在评论这款应用的隐私问题。
就在这个时候,事情有点出轨了,从一个一天的演示项目变成了一个 "陷入网络工作者、不兼容性、文件缺失和其他有趣事情的兔子洞 "的项目。
孩子们,这就是一个人如何在不经意间发明了一种新架构,而不是像一个理智的人那样坚持市场营销。
经典架构的首次尝试(简单部分)
数据库架构
因此,我启动了 subzero cli,并在快速运行了
npx @subzerocloud/scaffold@latest new、更改数据库模式和配置权限之后,我就有了一个可以正常运行的应用程序。这花了 10 分钟,我知道与其他 "只需几秒钟 "就能完成的工具相比,这简直是太漫长了,但我还能说什么呢?
虽然它已经具备了一些强大的功能(只需反观数据库模式,就能实现完整的 CRUD 和过滤功能),但我还是想构建一些更接近产品而非演示的功能。因此,让我们对用户界面进行一些定制。你会发现后台功能是如此强大,以至于我们根本不用去碰后台代码 (