Wasp:类似Rails框架,简化React、Node.js与Prisma全栈Web应用开发

整理|冬梅、核子可乐

Wasp:类似Rails框架,简化React、Node.js与Prisma全栈Web应用开发

Wasp(Web 应用程序规范)是一个类似 Rails 的框架,并且可用于 React、Node.js 和 Prisma。这个开源框架的目的是通过 React、Node.js 和 Prisma 来简化全栈 Web 应用程序的开发。它因为为 JavaScript 开发人员提供了类似 Rails 的体验而受到关注。

该框架借助简单的配置文件(.wasp)来对高级应用程序的细节进行描述。它具备结合在诸如 React 和 Prisma 等熟悉框架中编写独特逻辑的能力。正因如此,它成为了开发人员快速进行原型设计以及部署 Web 应用程序的优良选择。

Wasp 一个引人注目的方面是它的编译器,此编译器由 Haskell 构建,能够从.wasp 文件生成前端、后端以及部署所需的完整源代码。这种“智能”的方式让开发人员可以将精力集中在编写业务逻辑上,而无需关注样板代码,并且具备内置的全栈身份验证、简单的部署以及全栈类型安全等功能。

而关于 Wasp 的故事要从 7 年前说起。

两次资金申请被拒,

创始团队曾几近崩溃

2020 年,Wasp 的两位创建者首次在这个社区发布项目帖子。那时,他们尚未想好自己到底要做什么。刚刚,该项目在 GitHub 上获得了 1.5 万 star,并且被众多个人创业者、初创公司以及财富五百强企业广泛应用。

该项目在 Discord 里汇聚了大概四千名开发者,现在的 Wasp 还处在 Beta 测试这个阶段。

为什么要做这样一个项目?这需要从 7 年前两位创始人所遇到的难题开始说起。

Wasp 的两位创始人分别是 Matija Sosic 和 Martin Sosic。他们既是双胞胎兄弟,在技术方面又是强力搭档。

Matija 拥有计算机科学的硕士学位。他是一名软件工程师,在软件开发方面有着丰富的经验。他擅长编写干净的代码,擅长函数式编程,也擅长 Web 开发。他热衷于组建团队,致力于打造实用的产品。

Matija 拥有丰富的职业经历。在 2020 年之前,他曾在 Lifebit Biotech 担任工程团队负责人。在此期间,他带领团队解决技术难题,推动了生物技术与软件开发融合项目的进展。2017 年,他加入了 Techstars Tech Associate(伦敦)团队,参与了跨国项目,积累了国际合作经验。他担任过 TalkBook 的首席执行官,同时也是联合创始人。凭借着敏锐的市场洞察力,他带领着团队推出了创新产品,从而促进了公司的业务增长。

Matija Sosic

Martin 在算法和系统设计方面有深厚背景。他热衷于开发产品、开源、函数式编程、Web 开发以及干净代码。曾是算法竞赛选手,在逻辑与编程能力方面表现突出。他在谷歌、Palantir 等企业实习过,还是 Lifebit.ai 的工程团队负责人。

Martin Sosic

2018 年,Matija 和 Martin 为一家位于伦敦的初创公司开发网络平台。这个网络平台是用于在云端运行生物信息学分析的。在开发这个平台的过程中,他们萌生了创建 Wasp 的初步想法。

当时,他们准备使用最新且热门的堆栈来从开始处创建全栈应用程序。接着他们选定了 React/Node.js。而对于之前的项目,他们一般会在后端选用 PHP/Java/Node.js,在前端使用 jQuery/Backbone/Angular。兄弟二人花费了大量时间重新学习怎样去使用最新的堆栈,他们这么做仅仅是为了重新构建相同的那些功能,比如身份验证、CRUD、表单以及异步作业等。

所以当时两人产生了这样的疑问:为什么不使用与堆栈无关的高级语言来抽象这些常见功能呢?就像 SQL 对数据库所做的那样,这样就可以永远不再重新实现它们了。

所以在构建 Wasp 之前,他们充分地调研了项目的可行性。

Matija 表示,在之前的创业公司里,他们发现与用户交谈是很有帮助的,因此他们决定在 Wasp 中再次进行这样的做法。

兄弟二人在大概一个月的时间内,进行了 25 次问题调研。他们探讨“用户在 Web 应用开发中面临的最大挑战是什么?”。汇总结果之后,确定了以下四个问题最为重要,并且决定在 v1 版本中重点关注它们。

他们根据主题对所得答案进行聚类,这样就能更深入地展开研究,进而确定最受关注的领域。

受访者遇到的有关启动和设置新网络应用程序的问题。

兄弟二人与其他开发人员进行了确认并澄清了问题,之后觉得终于可以开始编写代码了。

2019 年年初,兄弟二人在 GitHub 上创建了一个新的 repo。接着,他们开始设置工具。之后,他们尝试了这个概念。

在接下来的数月时间里,他们将 Wasp 当作一个附带的项目或者实验,没有开展任何营销活动。然而,他们对外部反馈的重要性有着极为清晰的认知。所以,在构建出一个极为基础的代码生成功能之后,他们还特意创建了一个项目页面,能够与其他人进行分享,以此来解释他们正在进行的事情并且征求反馈意见。

这是 Wasp 的首个页面,然而它并未很好地对 Wasp 的作用进行解释。

那时,他们给 Wasp 想出了第一个“真正”的名字,叫做 STIC,即规范到实现编译器。因为 Wasp 的远大愿景是成为一种与堆栈无关的规范语言,这样人们就能够从中生成实际的代码,比如 React 和 Node.js 以及其他一些堆栈。

他们分发 STIC 项目页面的首选方式是通过一些相关的 subreddits,比如 r/webdev、r/coding、r/javascript、r/Haskell、r/ProgrammingLanguages 等。

他们发布了一篇有关 Wasp 的 Reddit 帖子,这是他们的第一篇相关帖子。

他们很快得知一件重要的事,那就是 Reddit 不喜欢任何形式的宣传与推销。有时,即便兄弟俩觉得那时他们只是在征求反馈,并非在进行推销。在 Reddit 之后,他们还在 Hacker News 上发布了产品。

Martin 和 Matija 继续跟进之前采访过的人,向他们询问在 Web 开发方面碰到的问题。兄弟俩给这些受访者展示了 STIC 项目页面并征求意见。从收集到的所有反馈里,两人找出了以下这些问题:

处理完这些反馈后,兄弟俩意识到下一步的目标是让 Wasp 达到这样的状态:开发人员能够轻松地试用它,且无需具备额外的知识,也不用面对从源代码进行编译的麻烦。这就意味着需要对其进行稍微的完善,添加一些关键功能,并且编写我们的第一个文档,让用户知晓如何使用它。

他们当时的宗旨是把精力集中在一件事上,要么进行开发,要么专注于社区。因为 Wasp 团队仅有兄弟两人,所以同时做很多件事是很困难的。文档发布之后,Wasp 已经做好了可以轻松下载的准备,他们把这个版本称作“Alpha”,并且又切换到了“社区”模式。

从 0 到 15k star:

加入 YC,一步步落地

很多初创企业都面临着各种情况,Wasp 团队也不例外。当他们一心投入到研发工作中时,却在创业的道路上遭遇了第一个难题,那就是资金短缺。

2020 年 5 月,首次资金申请遭拒绝。接着,Wasp 团队第二次向知名创业孵化器 Y Combinator(YC)递交申请。然而,他们收到了 YC 合伙人 Harj Taggar 的回复,该回复表明 YC 决定不资助 Wasp 这一批次的申请。所以,YC 决定不予以资助。

这一决定对 Wasp 团队而言无疑是个打击。彼时,他们已在 Wasp 项目上花费了一年半时间,尤其最后 9 个月是全职进行开发。为了追逐这个梦想,团队的两兄弟辞去了原先的工作,将全部身心投入到项目里。到了这个阶段,他们在心理方面感到疲惫,在生理方面感到劳累,在经济方面也感到困乏,已到了精疲力竭的地步。

尽管如此,Wasp 团队仍未放弃。在这期间,他们也更加冷静地重新审视最初的那个决定,即为何要创建这样一款开源项目。

Matija 和 Martin 在回忆这段旅程时说:起初,Wasp 只是他们的一个念头。更确切地说,这是一个现实问题,即“为什么还没人做过?如果动手去尝试,会遇到哪些挑战?”我们经历了十年持续开发 Web 应用程序。在这十年间,使用了各类主要技术栈,其中包括服务器端的 PHP、Java 和 Node.js,还有客户端这边的 Backbone、Angular 和 React。之后,我们对“框架疲劳”深有体会。也就是说,每种新技术栈都在重新发明轮子。

于是他们开始思考这个问题,并把需要解决的问题记录下来。

他们再次坚定了 Wasp 项目立足的根源。他们要创建一套框架,通过提供更高级别的抽象来消除大量样板。同时,要保持足够的灵活度,避免其与特定技术栈和架构牢牢绑定。

目标已经非常明确了,接下来要一步一步坚定不移地走下去。和大多数成功的故事一样,一个优秀项目的诞生通常不是线性推进的。它的开端往往要经历很长时间的“沉寂”,然而偶尔也会有希望出现。

Wasp 项目同样如此。兄弟俩持续努力,之后的事情逐渐走上正轨,并且迎来了快速发展的时期。

两兄弟全职工作了大概九个月后,开始初步获得了一些关注,并且收到了 Reddit、Hacker News 和 Product Hunt 发来的积极反馈。

2020 年 12 月 6 日,兄弟二人在 PH 上推出了 Wasp。Wasp 最终成为当日的明星产品,这使得它的 star 数量和整体吸引力都得到了提升。PH 还有一个好处,那就是 Wasp 出现在了他们的每日新闻通讯中,据说该通讯拥有超过一百万的订阅者。所有这些都给了他们很大的推动力和知名度。

但他们同时意识到,一套全栈 Web 框架能够落地可用需要付出多少工作量。毕竟这样有雄心勃勃预期和要求的事情,并非短时间内就能实现。所以,寻求一定的外部支持仍然是有必要的。

2021 年,Y Combinator 的兄弟俩进行了第三次申请 YC。他们在这次申请中成功入围。YC 一直对兄弟俩过去一年的进展予以关注。在感受到社区的热情之后,YC 最终决定支持他们的“疯狂”想法。

项目接着迎来了快速发展的时期,并且在之后的几年当中出现了两个较为重要的转折点。

2023 年 7 月出现了第一个重要拐点。在这个时候,他们发布了 MAGE。MAGE 是一款使用 Wasp 的 GPT SaaS 上手程序,大家可以将其理解为一次性的 Loveable/Bolt。它属于首批能够生成可运行全栈 Web 应用程序的大模型产品,并且成功为 Wasp 赢得了广泛的关注。

第二个拐点出现在 2023 年 12 月。当时推出了 OpenSaaS,它是我们基于 Wasp 构建的开源 SaaS 上手程序。目前,该程序在 GitHub 上获得了近 10k star。

这两个拐点让 Wasp 项目团队意识到,大多数开发者都非常希望能加快实现进程,他们不愿意把时间和精力浪费在挑选以及从 SaaS 中各种不同功能里择善而从上,这些功能包括身份验证、付款、管理仪表板、发送电子邮件、博客等等……

这是该项目的意义,即打造一套以 React、Node.js、Prisma 和 Wasp 为基础,并且完全免费开源的高质量 SaaS 入门版本。OpenSaaS 成功成为 Wasp 的“杀手级应用”,它吸引了开发者的关注,并且在开发者尝试之后,他们感受到了这套框架的实用价值。

OpenSaaS 与 Cursor 实现了完美搭配。在 Wasp 结构以及高级原语的支持下,许多开发者察觉到,OpenSaaS 加上 Cursor 这样一套组合是很理想的,能够帮助他们的 SaaS 项目在短短几天时间内,从创意转变为生产应用。

语言、DSL 还是框架——

Wasp 到底是什么?

从上面的例子能够得知,兄弟二人以往曾把 Wasp 称作一种语言,也就是 DSL 领域特定语言。基于这样的定位,他们起初仅仅打造并设计了一个抽象层,以保证其在未来能够与任何语言、库以及架构相配合并使用。

为此,他们需要引入自己的编译器。此编译器首先会对开发者通过 Wasp 定义的应用程序规范进行分析,这些规范包括路由、异步作业、数据库操作等。然后,将分析后的结果与在 React 和 Node.js 中编写的“本机”代码相结合。最后,生成一款 React/Node.js 应用程序。也就是说,Wasp 的功能是有限的,机制也是简单的。然而,尽管如此,Wasp 确实成为了由他们亲手发明的一种语言。

一段时间推进之后,兄弟二人察觉到这种定位思考存在错误。Wasp 的功能更主要的应该是作为 Web 框架,就像 Laravel、Rails 或者 Next.js 那样。它在底层运用编译器只是一个实现方面的细节,是达成其功能所不可或缺的前提条件。借助这种方法,用户能够轻松地将整个应用程序的拓扑结构进行可视化展示,其中涵盖了数据库、服务器以及客户端组件。

现在看来这没什么大不了的,但却为其他一些有趣工具的功能实现开启了大门。

网友怎么看?

Wasp 1.0 版本发布后,这一开源框架受到了广泛的关注。因为 Wasp 经常被拿来与 Laravel 等成熟的开发框架进行比较,所以许多网友对它的商业模式产生了浓厚的兴趣和疑问。Laravel 通过提供一些高级工具,并且提供托管服务,同时还获得生态系统的支持,从而成功实现了商业化。而 Wasp 作为一个新兴的开源项目,目前正专注于对框架进行完善,并且致力于构建开发者社区。

许多网友对此提出了质疑,他们想知道现阶段 Wasp 的团队成员的收入来源究竟在哪里。有网友直接发出了这样的提问:

你怎样从这样的项目里获取收益呢?YC 的资金能够让你们俩维持下去吗?在这之前,你们自身很富有吗?

Matija 对此表示:第一年,我们依靠个人储蓄来为其提供资金支持。然而,在 YC 之后,我们立即进行了一轮 150 万美元的融资。这轮融资使我们能够扩大团队规模,目前我们的团队有 8 人。并且,我们也能够全职专注于它。

因为 wasp 当下只支持 React,所以有网友对其不支持 Vue 这件事表达了遗憾。该网友作出了这样的评论:

Vue 比 React 的缺陷少得多,我是这样认为的,这真的太糟糕了。

有网友出来辩论,他们称从商业角度来看,创始团队的决定是正确的。他们表示自己更喜欢 Vue,但也会为这个项目选择 React。

Matija 在评论区对该网友进行了回复,他说:“Wasp 的愿景是能够支持不同的 UI 框架或库。不过,目前我们的重点是 React。至少在 1.0 版之前都是这样的。”

未来规划

接下来要做什么呢?Martin 兄弟二人历经近 7 年的开发,并且从广大受众那里获得了反馈,他们对于 Wasp 1.0 的功能定位以及最终形态已经有了极为清晰的认识。他们的最终目标是在 JS 领域达成这样的效果:就像 Laravel 在 PHP 中、Rails 在 Ruby 中所起到的作用一样。要构建出一款思路清晰的全栈框架,并且具备完备的功能,还要保证它能够随意进行部署,并且能够随着业务的发展而不断扩展。

兄弟二人表示:我们知晓,从 Laravel/Rails/Django 诞生起,技术界对框架的要求和期望有了极大的改变。然而,其背后所对应的生产力与开发体验,将一直是我们努力追求的目标。

一款产品能否在市场中长久立足,除了要看技术能力外,还需考虑其盈利模式。对于未来如何盈利的问题,Matija 在 Reddit 上给出了回答。

目前,我们正把精力集中在将开源框架升级到 1.0 版本这件事上,同时要证明我们有能力创建出下一个“JavaScript 领域的 Laravel”。这是我们工作的核心根基,倘若没有这一根基,我觉得考虑盈利是毫无意义的。在盈利方面,像 Laravel 这样的公司、Vercel 以及 Hashicorp 等,它们都是非常值得拿来研究的案例。我们在企业环境中获得了初步的采用,这让我们感到很意外。同时,这也激发了我们之前未曾考虑过的新思路。

Wasp 团队尚未明确公布具体的盈利计划。他们表示,只有当框架达到稳定状态并且被广泛采用之后,才会去考虑商业化路径。这种将开发者体验和开源生态作为核心的策略,与 Laravel、Vercel 等成功案例存在相似之处。

这种“先开源,后盈利”的模式在技术领域并非少见。关键在于要做到在保持开发者信任的同时,去找到可持续的商业化路径。

参考链接:

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

28阅读

java中冒号,java双冒号

2026年09月06日

26阅读

java中的->,java中的是什么意思

2026年09月06日

25阅读

java中的super用法,Java中super的说明

2026年09月06日

28阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

26阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

26阅读