Mango: 一款基于Elysia和Bun的后端web框架 | Elysia的强有力替代品

609 阅读2分钟

告别意大利面条式的代码!Mango框架带你体验极速后端开发

🔥 为什么有了Mango

某一天头脑一热打算使用Elysia写个Admin,写着写着发现为了保持智能类型提示就要使用意大利面条式的代码编写,这个真的好难看。于是根据自己的需求一步步写出了个Mango,开始它只是个一个库,后来感觉还不错就抽出来成为了Mango

后续等Admin写完也会发出来的,基于Vben+Mango的Admin

🚀 为什么选择Mango?

1. 性能怪兽:Bun运行时加持

基于Bun的高效运行时,HTTP基准测试显示QPS可达200万(具体测试数据建议补充),相较传统Node.js框架提升巨大。支持:

  • 零配置WebSocket通信
  • 毫秒级定时任务调度
  • 智能类型推导系统

2. 开箱即用的完整生态

// 直接使用Elysia生态插件
import { html } from '@elysiajs/html'
mango.use(html())

完全兼容Elysia的中间件体系,所有Elysia插件即插即用:

  • 智能路由注解:自动生成OpenAPI文档
  • 依赖注入系统:告别意大利面条式代码
  • 可视化定时任务:Cron表达式自动校验
  • 装饰器工厂:自定义参数校验器

3. 革命性的开发体验

# 安装仅需2步
bun add mango-core mango-types

通过装饰器语法实现声明式编程,示例代码量减少60%:

@Cron({ pattern: '*/5 * * * *' })
autoBackup() {
  console.log('每5分钟自动备份数据库')
}

🛠️ 四大杀手锏功能解析

1. WebSocket极简开发

@WebSocket('/chat', {
  body: t.Object({ message: t.String() }) // 来自Elysia的自动类型校验
})
handleChat(ws, msg) {
  ws.send({ echo: msg }) // 支持消息广播/单播
}

应用场景
✔ 实时聊天系统 ✔ 股票行情推送 ✔ 在线协作编辑

2. 企业级定时任务

@Cron({
  name: 'orderCheck',
  pattern: '0 3 * * *', // 每天凌晨3点执行
  timeZone: 'Asia/Shanghai'
})
checkExpiredOrders() {
  // 自动过期订单处理
}

支持动态启停任务:

stopCronTask('orderCheck') // 一键暂停特定任务

3. 灵活扩展体系

// 自定义参数校验装饰器
const AuthCheck = createParameterDecorator(ctx => {
  if(!ctx.headers.authorization) throw new AuthError()
})

@Post('/payment')
@AuthCheck // 像使用原生装饰器一样
processPayment() {...}

4. 单文件打包

bun run build:linux

得益于使用了Bun的原因,不需要安装任何第三方库就可以很方便的将项目大包为可执行文件,在不需要任何依赖的情况下运行


📌 立即行动

# 开启你的高效开发之旅
git clone https://github.com/sunshinego12138/mango