Simple-Koa开发初衷
我司走了微服务的路子,需要搭建一个BFF层来作为前端的数据处理层使用,原先的选项为Egg.js,但是讨论后发现太重了,而且书写习惯是纯前端的写法,不太适合我们公司的现状。讨论后我们决定使用Koa作为基础,搭建一个简单,轻量的BFF框架,然后我和我司的另外一个架构一起开发了athene-api
作为我司的BFF层使用。
后来觉得这种写法还行,效果也还行,性能也够用,就将核心部分剥离出来成为了一个新的库simple-koa
,并将其当做一个后端API框架来进行开发,而不是单纯作为一个BFF层架构在开发。
simple-koa
一切以简单好上手为原则进行开发,所有API尽量的简单,并在简单的基础上有一定的拓展性。
Simple-Koa的功能
- 简单且易于使用的 Controller 和 Router
- 强大的依赖注入
- 原生支持的 Swagger 文档
- 简单易用的日志组件
- 多管道处理器(支持
kafka
,mqtt
),并支持拓展与重构 - 简单易用的HttpClient
- 缓存支持(支持
redis
,memoryCache
), 并支持拓展与重构 - Cron定时任务
- Oss存储支持(支持
local
,minio
) - DatabaseProvider 数据库查询器 (支持
postgres
,mysql
)- 支持连接池
- 支持事务 (暂不支持分布式事务)
- 支持断线重连
- 支持多库
- 提供仓储支持 (日程中)
- 提供轻量级 ORM (日程中)
使用场景
我个人现在一直使用这个框架来进行我司工具的开发,比如迁移工具,数据桥接工具,BFF框架,MockData。
框架现在应该属于上手就能用的程度了,但是对分布式的支持还不够,但是做为一个单体的后端框架是完全没有任何压力的,基于Koa搭建,完全可以使用Koa的全部生态。
项目地址
欢迎各位来Gihub上给我提意见(本人是一枚后端,前端写的菜,轻喷)~~~
快速上手
yarn init # 初始化项目
yarn add simple-koa # 添加框架引用
yarn add nodemon typescript ts-node --dev # 添加运行调试所需
新建一个文件夹 src
,在src
文件夹中新建项目入口App.ts
注意,启动文件必须放在 src 文件夹下,否则会程序出现起不来的问题
// App.ts
import 'reflect-metadata'; // 这一句必须要加
import Program from 'simple-koa';
const program = new Program(__dirname);
program.Start();
添加 tsconfig.json
(案例仅供参考,可以自己任意配置)
{
"$schema": "https://json.schemastore.org/tsconfig",
"display": "Node 14",
"compilerOptions": {
"lib": ["es2020"],
"module": "commonjs",
"target": "es2020",
"baseUrl": ".",
"outDir": "dist",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"suppressImplicitAnyIndexErrors": true,
"moduleResolution": "node",
"sourceMap": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"declaration": true
},
"include": ["src/**/*", "App.ts"],
"exclude": ["node_modules", "**/*.spec.ts", "dist/**/*"]
}
在 package.json
添加启动命令
"scripts": {
"start": "nodemon --inspect --watch \"./src/**/*.ts\" -e ts --exec \"node\" -r ts-node/register \"./src/App.ts\""
}
启动项目
yarn start
访问界面
http:127.0.0.1:30000 主界面
http:127.0.0.1:30000/swagger swaggerApi
网友评论