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

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

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

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

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

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