首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Node.js
Express
PPA for Ubuntu
ppa:chris-lea/node.js
V2EX  ›  Node.js

有没有简单易行的 nodejs web 框架推荐?

  •  
  •   monkingame · 32 天前 · 3787 次点击
    这是一个创建于 32 天前的主题,其中的信息可能已经有所发展或是发生改变。

    要求很简单: 我想写一个 api server,能支持 async 操作,能最大程度兼容 expressjs。async 方便开发,避免回调嵌套;兼容 expressjs 可以尽可能利用更多的成熟模块。 egg.js 和 nest.js 稍微看过一点,我就是想写个简简单单的 api server,自己 post 过来参数自己解析处理( express 对 async 支持不好,否则就用他了),结果他们扔了一大堆概念下来,光熟悉框架就要好长时间,太重了。 谢谢!

    41 回复  |  直到 2019-09-17 21:19:17 +08:00
        1
    wukongkong   32 天前 via iPhone
    koa ?
        2
    mrcotter2013   32 天前 via Android
    Serverless 框架写 AWS Lambda,当然初期的学习成本还是有的
        3
    sker101   32 天前 via iPhone
    不觉得 express 对 async await 兼容有多差 一直写 try catch 不觉得难受吗
        4
    wdv2ly   32 天前 via Android   ♥ 1
    这种需求要什么框架,原生代码足够了
        5
    gimp   32 天前
        6
    cooi   32 天前
    我试过一个 adonisJs ,类似 rails 或者 laravel
    简单
        7
    ochatokori   32 天前 via Android
    同一楼 koa
    如果规模大一点的话可以试试 egg.js
    再大一点就 egg.js + typescript
        8
    shadowwalker2644   32 天前 via Android
    Fastify,兼容 express
        9
    alphanow   32 天前 via Android
    koajs 或者 sailsjs
        10
    wszgrcy   32 天前 via Android
    还没人说 nestjs 那么我来了
        11
    Oktfolio   32 天前
    koa
        12
    IamUNICODE   32 天前
    koa
    不过我这 express 也是用 async+await 组合
        13
    spark   32 天前   ♥ 1
    Koa,但其实要简单就 Express,Koa 还要加路由、模板
        14
    unclemcz   32 天前
    async 和框架关系不大,要看 nodejs 的版本。
        15
    telun   32 天前
    sails
        16
    sam014   32 天前
    之前 node 版本不支持 async/await 的时候用的框架用了 bluebird 做了处理
    目前的 LTS 10.16.3 应该不用考虑这个问题吧
        17
    liushuangbill   32 天前
    express,没感觉哪里对 async 支持不好。。。
        18
    miniwade514   32 天前
    koa. 如果连部署都懒得部署,直接用 Google 或者 AWS 的 Serverless 服务,写写函数就行了。
        19
    xiaoyiyu   32 天前
    connect 早期 express 就引用这个依赖做的
        20
    xiaoyiyu   32 天前
    @mrcotter2013 5.0 优化了,支持 promise 的错误处理
        21
    mikoshu   32 天前
    express 对 async 支持不好 不懂咋理解 是否可以给出情景或者示例~
        22
    userdhf   32 天前
    9102 年了都,express 还对 async 和 awaite 支持不好?
    koa 都要黄了吧?
        23
    menyakun   32 天前
    nestjs 来了
        24
    wozhizui   32 天前
    egg
        25
    sjtiande   32 天前
    nestjs
        26
    lllllliu   32 天前
    ThinkJS
        27
    Ixizi   32 天前 via Android
    vuejs
        28
    momocraft   32 天前
    写 api server 看 web framework 是不是方向有问题
        29
    Hanggi   32 天前
    typescirpt + koa 是正解。
        30
    StarkWhite   32 天前
    搭配 GraphQL 的一般都 6 得飞起:
    koa-graphql
    egg-graphql
    nestjs/graphql
    ...
    其它自行搜索
        31
    monkingame   32 天前
    感谢各位的热心指导,已经选择了 koa,其实和 express 差不多,不过 koa 似乎更简洁一些。
    而且就是个 API server,用不到那么多复杂的功能,一下午简单熟悉了下 koa,基本就能上手了。
    再次感谢!
        32
    enjoyCoding   30 天前
    @sker101 async await 不都是这样吗? 不用 express 也一样啊. 我记得之前看到一个 webpack 的插件 就是自动给 async 和 await 包裹 try catch 的。
        33
    zivyou   25 天前
    推荐 koa
        34
    monkingame   24 天前
    再次回复,又切回 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 问题。
        35
    jawnkuin   20 天前
    function compute
        36
    crazymad   19 天前
    @monkingame 静态资源一般直接放 nginx 之类的服务器不就好了
        37
    monkingame   19 天前
    @crazymad 谢谢。因为是在测试期间,我又懒,就随便搞个 static 中间件凑合着。
        38
    jiangzhuo   19 天前
    nestjs
        39
    libook   16 天前
    开发的时候静态资源直接放 Nginx 吧,企业级线上方案都是用 CDN,用 Node.js 来 host 静态文件性价比太低。

    要是只想写写 Web API 找个最简便的框架,Koa 是最合适的,Static 已经跟 Web API 关系不太大了;但不管用什么技术都得了解内部原理,就像以前经常有人拿 C#当 Java 用,就感到处处碰壁。

    或者自己拿 Node.js 的原生 http 模块写 API 其实也挺快的,只需要看看 API 文档以及了解一下 Stream 就行了。
        40
    chenhui7373   14 天前
    cabloy
        41
    hentaicracker   4 天前
    routing-controllers 了解一下
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1195 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 18:03 · PVG 02:03 · LAX 11:03 · JFK 14:03
    ♥ Do have faith in what you're doing.