基于 Koa v2 设计的小型 API 框架 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
a632079

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

  •  
  •   a632079 2018 年 1 月 29 日 5935 次点击
    这是一个创建于 3007 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    第 1 条附言    2018 年 1 月 31 日
    文档已经补充。预计本周末还会进行一次大规模的更新。
    准备入坑 typescript,举拳。
    11 条回复    2018-02-01 15:59:46 +08:00
    ctsed
        1
    ctsed  
       2018 年 1 月 30 日 via Android
    demo 呢,文档也没有
    a632079
        2
    a632079  
    OP
       2018 年 1 月 30 日 via Android
    @ctsed 正在整理,大概今日稍晚提交一下
    thundernet8
        3
    thundernet8  
       2018 年 1 月 30 日 via Android
    建议楼主上 TypeScript,静态类型对你这种很有益处
    thundernet8
        4
    thundernet8  
       2018 年 1 月 30 日 via Android
    我指的是这个项目
    a632079
        5
    a632079  
    OP
       2018 年 1 月 30 日 via Android
    @thundernet8 十分感谢。 正在准备学习。
    不过还是想先咨询一下,coffeescript 和 typescript 哪个更适合先学习呢?
    0x4b0082
        6
    0x4b0082  
       2018 年 1 月 30 日
    @a632079 coffeescript 算是死了。特性也已经被 es 官方吸收。至于 ts,不好说,也许哪天 es 也会实现严格类型
    thundernet8
        7
    thundernet8  
       2018 年 1 月 30 日
    @a632079 coffeescript 本来就是个不彻底的方案,通过在 JS 中添加辅助方法使得编码非常繁琐,而 TypeScript 以新语言(实际只是个 JS 超集)的方式来实现静态类型,接口,而其他大多数 API 是与 ES6 一致的,现在 es 对严格类型的推进没有太强的意愿,因此学习 ts 是绝对没错的,即使说 es 吸收了 ts 的这些,那也只是写代码不用 ts 后缀名而已
    thundernet8
        8
    thundernet8  
       2018 年 1 月 30 日   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 年 1 月 30 日 via Android
    @thundernet8 十分感谢。 眼界又被进一步打开了
    a632079
        10
    a632079  
    OP
       2018 年 1 月 31 日 via Android
    @raphaelsoul :D 准备开始尝试 typescript 了。
    话说 经常看到有评论指 Bluebird 的 Promise 较原生的 Promise 性能更好。甚至有报告指出,如 koa 直接将 global.promise 替换为 bluebird 可以提高 1 倍的 qps。这是为什么呢?为什么会有原生的差距如此之大。
    0x4b0082
        11
    0x4b0082  
       2018 年 2 月 1 日
    @a632079 没有测试数据都是耍流氓
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3045 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 06:24 PVG 14:24 LAX 23:24 JFK 02:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86