美文网首页
Simpe-Koa介绍

Simpe-Koa介绍

作者: 野生DBNull | 来源:发表于2022-06-14 21:16 被阅读0次

    Simple-Koa开发初衷

    我司走了微服务的路子,需要搭建一个BFF层来作为前端的数据处理层使用,原先的选项为Egg.js,但是讨论后发现太重了,而且书写习惯是纯前端的写法,不太适合我们公司的现状。讨论后我们决定使用Koa作为基础,搭建一个简单,轻量的BFF框架,然后我和我司的另外一个架构一起开发了athene-api作为我司的BFF层使用。

    后来觉得这种写法还行,效果也还行,性能也够用,就将核心部分剥离出来成为了一个新的库simple-koa,并将其当做一个后端API框架来进行开发,而不是单纯作为一个BFF层架构在开发。

    simple-koa一切以简单好上手为原则进行开发,所有API尽量的简单,并在简单的基础上有一定的拓展性。

    Simple-Koa的功能

    • 简单且易于使用的 Controller 和 Router
    • 强大的依赖注入
    • 原生支持的 Swagger 文档
    • 简单易用的日志组件
    • 多管道处理器(支持kafkamqtt),并支持拓展与重构
    • 简单易用的HttpClient
    • 缓存支持(支持redismemoryCache), 并支持拓展与重构
    • Cron定时任务
    • Oss存储支持(支持local,minio)
    • DatabaseProvider 数据库查询器 (支持postgres,mysql)
      • 支持连接池
      • 支持事务 (暂不支持分布式事务)
      • 支持断线重连
      • 支持多库
      • 提供仓储支持 (日程中)
      • 提供轻量级 ORM (日程中)

    使用场景

    我个人现在一直使用这个框架来进行我司工具的开发,比如迁移工具,数据桥接工具,BFF框架,MockData。
    框架现在应该属于上手就能用的程度了,但是对分布式的支持还不够,但是做为一个单体的后端框架是完全没有任何压力的,基于Koa搭建,完全可以使用Koa的全部生态。

    项目地址

    Npm地址
    Github地址

    欢迎各位来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

    相关文章

      网友评论

          本文标题:Simpe-Koa介绍

          本文链接:https://www.haomeiwen.com/subject/vvttvrtx.html