要求很简单: 我想写一个 api server,能支持 async 操作,能最大程度兼容 expressjs。async 方便开发,避免回调嵌套;兼容 expressjs 可以尽可能利用更多的成熟模块。 egg.js 和 nest.js 稍微看过一点,我就是想写个简简单单的 api server,自己 post 过来参数自己解析处理( express 对 async 支持不好,否则就用他了),结果他们扔了一大堆概念下来,光熟悉框架就要好长时间,太重了。 谢谢!
|      1wukongkong      2019-08-20 06:23:06 +08:00 via iPhone koa ? | 
|  |      2mrcotter2013      2019-08-20 06:33:13 +08:00 via Android Serverless 框架写 AWS Lambda,当然初期的学习成本还是有的 | 
|      3sker101      2019-08-20 06:33:34 +08:00 via iPhone 不觉得 express 对 async await 兼容有多差  一直写 try catch 不觉得难受吗 | 
|  |      4wdv2ly      2019-08-20 07:28:21 +08:00 via Android  1 这种需求要什么框架,原生代码足够了 | 
|  |      5gimp      2019-08-20 08:22:17 +08:00 | 
|      6cooi      2019-08-20 08:24:18 +08:00 我试过一个 adonisJs  ,类似 rails 或者 laravel 简单 | 
|      7ochatokori      2019-08-20 08:25:12 +08:00 via Android 同一楼 koa 如果规模大一点的话可以试试 egg.js 再大一点就 egg.js + typescript | 
|      8shadowwalker2644      2019-08-20 08:33:13 +08:00 via Android Fastify,兼容 express | 
|      9alphanow      2019-08-20 08:57:38 +08:00 via Android koajs 或者 sailsjs | 
|      10wszgrcy      2019-08-20 09:00:04 +08:00 via Android 还没人说 nestjs 那么我来了 | 
|  |      11Oktfolio      2019-08-20 09:01:41 +08:00 koa | 
|  |      12IamUNICODE      2019-08-20 09:25:07 +08:00 koa 不过我这 express 也是用 async+await 组合 | 
|  |      13spark      2019-08-20 09:33:10 +08:00  1 Koa,但其实要简单就 Express,Koa 还要加路由、模板 | 
|  |      14unclemcz      2019-08-20 09:33:29 +08:00 async 和框架关系不大,要看 nodejs 的版本。 | 
|      15telun      2019-08-20 09:40:36 +08:00 sails | 
|  |      16sam014      2019-08-20 10:13:38 +08:00 之前 node 版本不支持 async/await 的时候用的框架用了 bluebird 做了处理  目前的 LTS 10.16.3 应该不用考虑这个问题吧 | 
|      17liushuangbill      2019-08-20 10:22:34 +08:00 express,没感觉哪里对 async 支持不好。。。 | 
|  |      18miniwade514      2019-08-20 10:32:20 +08:00 koa. 如果连部署都懒得部署,直接用 Google 或者 AWS 的 Serverless 服务,写写函数就行了。 | 
|      19xiaoyiyu      2019-08-20 10:40:18 +08:00 connect 早期 express 就引用这个依赖做的 | 
|      20xiaoyiyu      2019-08-20 10:40:57 +08:00 @mrcotter2013 5.0 优化了,支持 promise 的错误处理 | 
|  |      21mikoshu      2019-08-20 10:46:36 +08:00 express 对 async 支持不好 不懂咋理解 是否可以给出情景或者示例~ | 
|      22userdhf      2019-08-20 10:57:24 +08:00 9102 年了都,express 还对 async 和 awaite 支持不好? koa 都要黄了吧? | 
|  |      23menyakun      2019-08-20 11:04:28 +08:00 nestjs 来了 | 
|  |      24wozhizui      2019-08-20 11:22:29 +08:00 egg | 
|      25sjtiande      2019-08-20 11:24:46 +08:00 nestjs | 
|  |      26lllllliu      2019-08-20 11:27:09 +08:00 ThinkJS | 
|  |      27Ixizi      2019-08-20 13:09:52 +08:00 via Android vuejs | 
|  |      28momocraft      2019-08-20 13:11:24 +08:00 写 api server 看 web framework 是不是方向有问题 | 
|  |      29Hanggi      2019-08-20 16:26:17 +08:00 typescirpt + koa 是正解。 | 
|      30StarkWhite      2019-08-20 21:08:30 +08:00 搭配 GraphQL 的一般都 6 得飞起: koa-graphql egg-graphql nestjs/graphql ... 其它自行搜索 | 
|  |      31monkingame OP 感谢各位的热心指导,已经选择了 koa,其实和 express 差不多,不过 koa 似乎更简洁一些。 而且就是个 API server,用不到那么多复杂的功能,一下午简单熟悉了下 koa,基本就能上手了。 再次感谢! | 
|      32enjoyCoding      2019-08-22 13:11:27 +08:00 @sker101 async await 不都是这样吗? 不用 express 也一样啊. 我记得之前看到一个 webpack 的插件 就是自动给 async 和 await 包裹 try catch 的。 | 
|      33zivyou      2019-08-27 11:37:58 +08:00 推荐 koa | 
|  |      34monkingame OP 再次回复,又切回 express 了,无语。。。 原因: koa 有很奇特的小问题,暂时找不到问题原因。出于对未知坑的恐惧,只好选择 express 了。 问题现象: 就是写了个简单的 api server,根据 App 端请求返回 json 数据。 客户端用的 flutter,由于要播放视频(用的 video_player ),加上我懒,简单的加了个 static 中间件,然后把 mp4 文件放在 static 目录下,App 直接播放服务端视频就可以了。按理说这很简单了,而且我用浏览器测试了视频,可以正常播放,服务端也没有任何问题。但是 App 访问时,服务端出现了错误: Error: write EPIPE at WriteWrap.afterWrite [as oncomplete] (net.js:788:14) 并且 App 不能播放视频。 我 Google 了一通,也没找到很合适的答案。我怀疑是不是 App 端有问题,或者 video_player 本身有问题。但我直接 hard coding 公网服务器的视频,App 能正确播放。 但是,当我用 express 重写了一下,也是用的同样的视频文件,用 express static 中间件,还是刚才的 App (一个字节都没改写的),结果就没事了! App 视频完美播放,server 端没有任何错误提示! 神奇的现象,折腾了一晚上之后,决定放弃 koa,换成 express。 当然,有可能是我配置的 koa 不对,造成某些类型文件不能正确下发,比如对视频文件特殊处理等。但我用浏览器可以正常访问 koa 视频文件,预览正常,服务端没错误。 还好写的不多,一早上就把代码迁过去了(幸好 koa 和 express 差别也不大,都是 js 的框架,也有渊源)。 但是这个 EPIPE 错误一直没有解决,心里头总觉得膈应。 有哪位大佬有解决方案的,敬请指教,非常感谢! 结论: api server 还是 express 吧。至少在 static 方面,我不知道如何解决 koa 的 EPIPE 问题。 | 
|  |      35jawnkuin      2019-09-01 04:54:43 +08:00 function compute | 
|      36crazymad      2019-09-02 09:04:58 +08:00 @monkingame 静态资源一般直接放 nginx 之类的服务器不就好了 | 
|  |      37monkingame OP @crazymad 谢谢。因为是在测试期间,我又懒,就随便搞个 static 中间件凑合着。 | 
|  |      38jiangzhuo      2019-09-02 11:41:43 +08:00 nestjs | 
|  |      39libook      2019-09-05 11:09:36 +08:00 开发的时候静态资源直接放 Nginx 吧,企业级线上方案都是用 CDN,用 Node.js 来 host 静态文件性价比太低。 要是只想写写 Web API 找个最简便的框架,Koa 是最合适的,Static 已经跟 Web API 关系不太大了;但不管用什么技术都得了解内部原理,就像以前经常有人拿 C#当 Java 用,就感到处处碰壁。 或者自己拿 Node.js 的原生 http 模块写 API 其实也挺快的,只需要看看 API 文档以及了解一下 Stream 就行了。 | 
|  |      40chenhui7373      2019-09-07 19:44:51 +08:00 cabloy | 
|      41hentaicracker      2019-09-17 21:19:17 +08:00 routing-controllers 了解一下 | 
|  |      42xcstream      2019-11-19 02:35:16 +08:00 express 对 async 支持不好 问号 |