V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
a632079
V2EX  ›  Node.js

基于 Koa v2 设计的小型 API 框架

  •  
  •   a632079 · 2018-01-29 23:42:13 +08:00 · 5513 次点击
    这是一个创建于 2495 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚接触 ES2016 不久,由于对于 async/ await 充满兴趣, 就脱离 express 的怀抱,转投 koa 的怀抱了。 在学习的过程中,感觉反复的手动注册令人不舒服,就试着将几种功能的注册分离了出来。 现在试着实现了下面的一些功能:

    • 中间件的快速注册
    • 单独的路由表
    • 控制器自动注册
    • 计划任务按需注册或自动注册

    项目地址: https://github.com/a632079/teng-koa

    在学习的过程中,为了集成框架的一些需求,搬了一些知名扩展的一些代码。 小萌新一个,还望大牛指点一下意见。

    第 1 条附言  ·  2018-01-31 00:03:55 +08:00
    文档已经补充。预计本周末还会进行一次大规模的更新。
    准备入坑 typescript,举拳。
    11 条回复    2018-02-01 15:59:46 +08:00
    ctsed
        1
    ctsed  
       2018-01-30 01:10:01 +08:00 via Android
    demo 呢,文档也没有
    a632079
        2
    a632079  
    OP
       2018-01-30 09:53:55 +08:00 via Android
    @ctsed 正在整理,大概今日稍晚提交一下
    thundernet8
        3
    thundernet8  
       2018-01-30 09:58:49 +08:00 via Android
    建议楼主上 TypeScript,静态类型对你这种很有益处
    thundernet8
        4
    thundernet8  
       2018-01-30 09:59:12 +08:00 via Android
    我指的是这个项目
    a632079
        5
    a632079  
    OP
       2018-01-30 14:28:25 +08:00 via Android
    @thundernet8 十分感谢。 正在准备学习。
    不过还是想先咨询一下,coffeescript 和 typescript 哪个更适合先学习呢?
    raphaelsoul
        6
    raphaelsoul  
       2018-01-30 14:35:30 +08:00
    @a632079 coffeescript 算是死了。特性也已经被 es 官方吸收。至于 ts,不好说,也许哪天 es 也会实现严格类型
    thundernet8
        7
    thundernet8  
       2018-01-30 17:41:47 +08:00
    @a632079 coffeescript 本来就是个不彻底的方案,通过在 JS 中添加辅助方法使得编码非常繁琐,而 TypeScript 以新语言(实际只是个 JS 超集)的方式来实现静态类型,接口,而其他大多数 API 是与 ES6 一致的,现在 es 对严格类型的推进没有太强的意愿,因此学习 ts 是绝对没错的,即使说 es 吸收了 ts 的这些,那也只是写代码不用 ts 后缀名而已
    thundernet8
        8
    thundernet8  
       2018-01-30 17:54:29 +08:00   ❤️ 1
    @a632079 用了 TypeScript 在你这个项目上,你可以使用 https://www.typescriptlang.org/docs/handbook/decorators.html 装饰器实现路由注解于控制器下对应路由方法之上,再更进一步,你可以利用元数据反射,例如 https://github.com/rbuckton/reflect-metadata 这个库在 app 启动时扫描所有 controller 的包含的路由和路由方法,自动注册路由到 koa app,而不是全部集中手写到一个 routes 文件里面,灵活性更好
    a632079
        9
    a632079  
    OP
       2018-01-30 22:42:34 +08:00 via Android
    @thundernet8 十分感谢。 眼界又被进一步打开了
    a632079
        10
    a632079  
    OP
       2018-01-31 00:06:56 +08:00 via Android
    @raphaelsoul :D 准备开始尝试 typescript 了。
    话说 经常看到有评论指 Bluebird 的 Promise 较原生的 Promise 性能更好。甚至有报告指出,如 koa 直接将 global.promise 替换为 bluebird 可以提高 1 倍的 qps。这是为什么呢?为什么会有原生的差距如此之大。
    raphaelsoul
        11
    raphaelsoul  
       2018-02-01 15:59:46 +08:00
    @a632079 没有测试数据都是耍流氓
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5331 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:36 · PVG 17:36 · LAX 01:36 · JFK 04:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.