Kless——一个受 FaaS 启发的框架
发布于 1 年前 作者 nswbmw 1824 次浏览 来自 分享

Kless

一个受 FaaS 启发的框架,源码总共 60 行,废话不多说了,用法很简单。 欢迎吐槽~

Installation

$ npm i @nswbmw/kless --save

Example

const Kless = require('@nswbmw/kless')
const app = new Kless()

app.register({
  name: 'User.getUserById',
  handler: async (ctx, next) => {
    ctx.body = ctx.query.id
  }
})

app.listen(3000)

/*
$ curl localhost:3000/User.getUserById?id=123
123
*/

Validator

const Kless = require('@nswbmw/kless')
const app = new Kless()

app.register({
  name: 'User.getUserById',
  validate: {
    query: {
      id: { type: Kless.Types.Number, required: true }
    }
  },
  handler: async (ctx, next) => {
    ctx.body = ctx.query.id
  }
})

app.listen(3000)

/*
$ curl localhost:3000/User.getUserById
($.query.id: undefined) ✖ (required: true)
$ curl localhost:3000/User.getUserById?id=test
($.query.id: "test") ✖ (type: Number)
$ curl localhost:3000/User.getUserById?id=123
123
*/

More validators usage see another-json-schema.

Array handlers

const bodyParser = require('koa-bodyparser')
const Kless = require('@nswbmw/kless')
const app = new Kless()

app.register({
  name: 'User.createUser',
  handler: [
    bodyParser(),
    async (ctx, next) => {
      ctx.body = ctx.request.body
    }
  ]
})

app.listen(3000)

Test

$ npm test (coverage 100%)

License

MIT

5 回复

其实现在Faas更急需一个尽可能磨平平台差异的框架或者说工具,现在迁移一个平台也是成本颇高。各大平台的Faas也都不算特别理想,即没有通用规范,伸缩性能也很不理想。 略对目前的Faas失望,目前的Faas还只沦为小公司的下策手段,搬到大平台,可能还有待时日。 不过还是相信Faas的未来,毕竟现在普遍颗粒度都到“微”了,哈哈 好久都没有看到关于Faas的东西了😭 这个框架确实很Faas,哈哈

FAAS 在我们这边应用还是挺多的,云构建/单测/爬虫都会用到。

已 star ,感觉不错

class Kless extends Koa??这…

em…route 写多了, 想直接用方法名调用 感觉 json-rpc 还会火一波. 看 jayson 没有 koa 的 middleware 整了一个 koa-jayson-rpc https://github.com/magicdawn/koa-jayson-rpc

回到顶部