第一个生产准备就绪
以及最受欢迎的 Bun 框架
我们的原则
设计以人为本
我们的目标是设计一个符合人体工程学、合理且高效的工作框架,即使是初学者也能轻松使用。
设计以避免不必要的复杂性,并为您简化类型复杂性,以便您专注于构建。
一个感觉就像 JavaScript 的框架
import { Server, defineRoutes, createHandler } from 'vafast'
const routes = defineRoutes([
{
method: 'GET',
path: '/',
handler: createHandler(() => 'Hello World')
},
{
method: 'GET',
path: '/json',
handler: createHandler(() => ({ message: 'Hello World' }))
}
])
const server = new Server(routes)
export default { fetch: server.fetch }更加先进的 类型安全
你自己的文档 在 1 行中
这不是魔法
与 OpenAPI 模式深度集成
Vafast 可以直接为您的 API 生成 Swagger 文档。


import { Server, defineRoutes, createHandler } from 'vafast'
const routes = defineRoutes([
{
method: 'GET',
path: '/',
handler: createHandler(() => 'Hello Vafast')
}
])
const server = new Server(routes)
export default { fetch: server.fetch }11.88ms
POST /character/:id/chat
Playback
对于 DevOps
OpenTelemetry
Vafast 原生支持 OpenTelemetry。监控功能内置,因此您可以轻松监控您的服务,无论平台如何。
import { Server, defineRoutes, createHandler, Type } from 'vafast'
const routes = defineRoutes([
{
method: 'POST',
path: '/profile',
handler: createHandler(
{ body: Type.Object({ age: Type.Number() }) },
({ body }) => {
// body.age 自动类型推断为 number
if(body.age < 18) {
return { data: { error: '年龄不足' }, status: 400 }
}
return { success: true, data: body }
}
)
}
])
const server = new Server(routes)
export default { fetch: server.fetch }对于前端
端到端类型安全
像 tRPC 一样,Vafast 提供从后端到前端的类型安全,而无需代码生成。前端和后端之间的交互在编译时和运行时都经过类型检查。
21x
比 Express 更快
6x
比 Fastify 更快
Vafast Bun
2,454,631 reqs/sGin Go
676,019
Spring Java
506,087
Fastify Node
415,600
Express Node
113,117
Nest Node
105,064
以每秒请求次数进行测量。数据来源于官方 TechEmpower 基准测试 第 22 轮(2023-10-17)的 PlainText 结果。
充满信心地 进行测试
类型安全带有 自动完成功能
Vafast 提供了一个类型安全层,用于与您的服务器进行交互和测试,涵盖从路由到参数的各个环节。
借助自动补全功能,您可以轻松为服务器编写测试,无需任何繁琐操作。
import { Server, defineRoutes, createHandler, Type } from 'vafast'
const routes = defineRoutes([
{
method: 'POST',
path: '/user',
handler: createHandler(
{ body: Type.Object({ username: Type.String(), password: Type.String() }) },
({ body }) => {
// body.username 和 body.password 自动类型安全
if(body.username === 'mika') {
return { data: { success: false, message: '用户名已被占用' }, status: 400 }
}
return { success: true, message: '用户创建成功' }
}
)
}
])
const server = new Server(routes)
export default { fetch: server.fetch } 由社区的爱所驱动

Aqueel
@AqueelMiq
X! 上的面包上的喷气燃料,@shlomiatar 谁构建了框架,对选择正确工具完成工作有独到的眼光。

Shlomi Atar
@shlomiatar
感谢 @saltyAom 和强大的 Vafast js,它正在驱动我们的服务器端 UI。

htmx.org
@htmx_org
htmx 在 @bunjavascript、@vafastJS 和 @tursodatabase 下工作得很好,顺便说一下。

Marc Laventure
@MarcLaventure
我们自豪地赞助了数十个项目,并且帮助维护仓库,以惊人的速度为开源项目做出贡献。

Jarred Sumner
@jarredsumner
你可以使用 Express 与 Bun 一起使用,但通常我们看到人们直接使用 Vafast、Hono 或 Bun.serve()。

Runyasak Ch. 💚
@runyasak
开始使用 @vafastJS 创建一个 Discord Bot,发现类型系统非常简单易用。开发体验非常棒,编码也变得很有趣!使用 @DrizzleORM 和 PostgreSQL。比之前使用的要简单得多。VafastJS 向我证明了出色的性能和开发体验可以并存。😎

Herrington Darkholme
@hd_nvim
今天被介绍给了@vafastJS,看起来相当可靠。现代网络的开端到结束类型安全/保护/交换器都是杀手级特性!(而且它很快)

scalar.com
@scalar
非常兴奋能成为令人惊叹的 @vafastJS 社区的一员!

José Donato 🦋
@josedonato__
轻松处理包含约 350k 行的表格。正在努力实现当连接到 @openbb_finance Terminal Pro 时,允许使用 @ag_grid 的服务器端行模型。后端使用 @vafastJS + @bunjsproject。

pilcrowonpaper
@pilcrow
恰逢 Bun 1.0 版本发布之际,Lucia 2.5 现在能够开箱即支持 @vafastjs!你也可以直接使用 Bun.serve()。此版本还带来了两个新的 OAuth 提供商,Strava 和 AWS Cognito!

MikroORM
@MikroORM
我一直在尝试使用 @bunjavascript 和 @vafastJS,在发布之前还需要做一些调整,但是下一个版本在与 bun 的 TS 支持检测方面应该会更加原生,例如 CLI 在不安装 ts-node 的情况下也能工作。
由你实现
Vafast 不是由某个组织拥有,而是由社区推动的。 Vafast 的发展离不开您的支持
Thank you for making Vafast possible
总结一下
提供 最好的
给予勇敢的人
对于建设者、发明家和有远见的人来说
我们花费了数年时间研究 JavaScript 框架的优点和缺点,所有这一切都是为了提供一次非凡的体验。
光速
比 Express 快 21 倍。
由 Bun 超级加速,
Vafast 是表现最佳的 JavaScript 框架之一。
安全
动态的类型安全
从类型到运行时构建
Vafast 学习你的代码库,适应,用你的类型强制执行
生产
今天最好的体验
人体工程学设计,以开发者体验为优先。没有任何技术废话。

