logo
0
0
WeChat Login

LooplanServerless

基于bun的serverless框架

安装

bun install looplan-serverless # 安装数据库 | 验证 | jwt工具 bun install looplan-orm zod jose

更新记录

  • 2025-12-17 并发能力测试, 性能优化, cache优化
  • 2025年12月11日 : 修复bug
  • 2025-11-8: 新增事件系统, 解决并发时事务冲突问题
  • 2025-8-29: 认证增加rsa算法
  • 2025-7-11: _init, _after 方法, 认证问题

描述

  • 让前后端写法更接近, 减少成本
  • 当前处理设计验证阶段, 还没有正式使用
  • 后续将会制作并开源几个使用这个框架的项目
  • 如果希望共同开发, 请加入技术讨论QQ群: 1047604746

设计思想

  • 函数按照PHP主流框架的写法
  • 采用Serverless云函数+云对象的访问模式
  • 集成常用的api开发依赖, 如: 数据库操作, 验证, jwt工具等
  • 导出类型供前端使用, 如: 云函数的参数类型, 云对象的方法类型等

定义函数 | 对象

  • 感受一下LooplanServerless的写法

云函数

  • functions/test1.ts
import { Db } from 'looplan-orm' /** * 测试云函数 * @api http://localhost:9000/test1 * @todo 测试数据库查询 * */ export default async (event: any, context: any) => { console.log("test1-func"); // 直接使用全局对象 let list = await Db.query('select * from ct_news'); if(!list.length){ return Looplan.result(400,"错误"); } return Looplan.result(200, "test-func1", { list: list, }); }

云对象

  • functions/TestObj.obj.ts
import { CloudObject } from 'looplan-serverless'; import { Db,getReqId } from 'looplan-orm'; export default class extends CloudObject { /** * 获取列表 * @api http://localhost:9000/TestObj.list */ async list() { const page: number = this.$event.page || 1; const list = await Db.table("ct_test1") .field("*") .order("id", "desc") .paginate(page, 10); const reqId = getReqId(); return Looplan.result(200, "获取成功", { reqId: reqId, list: list, page: page }); } async test() { return Looplan.result(200, "test", { data: "test" }); } }

About

基于bun的后端Serverless风格框架

Language
TypeScript95%
PHP4.5%
JavaScript0.4%
Others0.1%