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

2018-01-29 23:42:13 +08:00
 a632079

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

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

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

5420 次点击
所在节点    Node.js
11 条回复
ctsed
2018-01-30 01:10:01 +08:00
demo 呢,文档也没有
a632079
2018-01-30 09:53:55 +08:00
@ctsed 正在整理,大概今日稍晚提交一下
thundernet8
2018-01-30 09:58:49 +08:00
建议楼主上 TypeScript,静态类型对你这种很有益处
thundernet8
2018-01-30 09:59:12 +08:00
我指的是这个项目
a632079
2018-01-30 14:28:25 +08:00
@thundernet8 十分感谢。 正在准备学习。
不过还是想先咨询一下,coffeescript 和 typescript 哪个更适合先学习呢?
raphaelsoul
2018-01-30 14:35:30 +08:00
@a632079 coffeescript 算是死了。特性也已经被 es 官方吸收。至于 ts,不好说,也许哪天 es 也会实现严格类型
thundernet8
2018-01-30 17:41:47 +08:00
@a632079 coffeescript 本来就是个不彻底的方案,通过在 JS 中添加辅助方法使得编码非常繁琐,而 TypeScript 以新语言(实际只是个 JS 超集)的方式来实现静态类型,接口,而其他大多数 API 是与 ES6 一致的,现在 es 对严格类型的推进没有太强的意愿,因此学习 ts 是绝对没错的,即使说 es 吸收了 ts 的这些,那也只是写代码不用 ts 后缀名而已
thundernet8
2018-01-30 17:54:29 +08:00
@a632079 用了 TypeScript 在你这个项目上,你可以使用 https://www.typescriptlang.org/docs/handbook/decorators.html 装饰器实现路由注解于控制器下对应路由方法之上,再更进一步,你可以利用元数据反射,例如 https://github.com/rbuckton/reflect-metadata 这个库在 app 启动时扫描所有 controller 的包含的路由和路由方法,自动注册路由到 koa app,而不是全部集中手写到一个 routes 文件里面,灵活性更好
a632079
2018-01-30 22:42:34 +08:00
@thundernet8 十分感谢。 眼界又被进一步打开了
a632079
2018-01-31 00:06:56 +08:00
@raphaelsoul :D 准备开始尝试 typescript 了。
话说 经常看到有评论指 Bluebird 的 Promise 较原生的 Promise 性能更好。甚至有报告指出,如 koa 直接将 global.promise 替换为 bluebird 可以提高 1 倍的 qps。这是为什么呢?为什么会有原生的差距如此之大。
raphaelsoul
2018-02-01 15:59:46 +08:00
@a632079 没有测试数据都是耍流氓

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/426952

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX