V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mebtte
V2EX  ›  Node.js

纯 JSON API 的话 Node.js 有什么服务框架可以推荐?

  •  
  •   mebtte · 2020-09-03 16:25:32 +08:00 · 6056 次点击
    这是一个创建于 1324 天前的主题,其中的信息可能已经有所发展或是发生改变。
    37 条回复    2020-10-14 17:30:31 +08:00
    coderxy
        1
    coderxy  
       2020-09-03 17:00:50 +08:00
    egg ?
    KuroNekoFan
        2
    KuroNekoFan  
       2020-09-03 17:04:38 +08:00   ❤️ 2
    别问,问就是 express
    wobuhuicode
        3
    wobuhuicode  
       2020-09-03 17:09:30 +08:00
    纯 JSON API 现在都是常规了吧。哪个服务框架不行?拿自己用习惯的来做就好了
    datou
        4
    datou  
       2020-09-03 17:40:46 +08:00
    express 就行
    cat
        5
    cat  
       2020-09-03 17:40:52 +08:00 via iPhone
    我也喜欢 egg
    Mashiro
        6
    Mashiro  
       2020-09-03 17:41:36 +08:00
    永远喜欢 NestJS
    mebtte
        7
    mebtte  
    OP
       2020-09-03 18:09:30 +08:00
    @KuroNekoFan @datou express 也太落后了, 已经喜欢 async/await, 再用回调已不行
    mebtte
        8
    mebtte  
    OP
       2020-09-03 18:22:21 +08:00
    @coderxy @Mashiro eggjs 和 nestjs 太重了, koa 很轻量, 但是什么都没有, 难选...
    coderxy
        9
    coderxy  
       2020-09-03 18:23:14 +08:00
    @mebtte 重的话还好吧。 我们最开始也是自己用 express koa 。但是啥都要自己搞,而且没有统一规范,大家写的随心所欲。 后来用了 egg,真香。。。
    cnscorpions
        10
    cnscorpions  
       2020-09-03 18:38:59 +08:00
    @mebtte express.js ,它还有一众派生框架,nest.js, hapi.js, fastify.js
    你说的 async/await,express + ts 不就行了,
    推荐下一个 express.js 单体应用模板 https://github.com/cnscorpions/expressjs-architecture-for-monolith-app
    ochatokori
        11
    ochatokori  
       2020-09-03 18:46:40 +08:00 via Android
    想用 ts 最好就用原生 ts 的,比如 nestjs
    千万不要用原生 js 魔改 ts,比如 egg

    功能最完善还是 eggjs,nestjs 比 koa 完善,但奈何 nestjs 的 ts 更香
    推荐 nestjs
    hronro
        12
    hronro  
       2020-09-03 18:55:30 +08:00 via iPhone
    嫌 nest 太重的话,可以试试 fastify
    Biebe
        13
    Biebe  
       2020-09-03 19:08:07 +08:00 via iPhone
    tsed
    gimp
        14
    gimp  
       2020-09-03 19:10:20 +08:00
    NestJS,更奔放些就 Express
    jiangzm
        15
    jiangzm  
       2020-09-03 19:39:49 +08:00   ❤️ 1
    @coderxy @cat egg 就是个废品, 阿里前端搞的很多工具和框架除了 antD 还行, 其他比如 dva 、roadhog 、umi 、egg 都是废。
    coderxy
        16
    coderxy  
       2020-09-03 19:43:09 +08:00   ❤️ 2
    @jiangzm 说废品怕是有失公允吧? 我们就是基于 egg 再封装的企业级 node 框架,上线 2 年来没啥毛病。说它废品的依据呢?
    ysc3839
        17
    ysc3839  
       2020-09-03 19:44:51 +08:00 via Android
    @mebtte express 也不是不能配合 async function 用呀?
    http://expressjs.com/en/advanced/best-practice-performance.html#use-promises
    catinsides
        18
    catinsides  
       2020-09-03 20:32:34 +08:00
    mebtte
        19
    mebtte  
    OP
       2020-09-03 20:57:21 +08:00
    @ysc3839 #17 这写法有点害怕
    longjiahui
        20
    longjiahui  
       2020-09-03 20:59:19 +08:00
    egggggggggggggggggggggggggggg!
    cat
        21
    cat  
       2020-09-03 23:04:02 +08:00
    @jiangzm 怎么个废法?
    lblblong
        22
    lblblong  
       2020-09-03 23:10:54 +08:00 via Android
    nest 或者 midway 吧
    lovedebug
        23
    lovedebug  
       2020-09-03 23:12:48 +08:00
    强推 nestjs,在项目中使用感觉有 spring 基础可以很容易理解
    yangheng4922
        24
    yangheng4922  
       2020-09-03 23:57:40 +08:00
    如果喜欢了 await 的话 thinkjs 挺不错的 开箱即用 该有的功能都有 TS 好像也支持
    npm
        25
    npm  
       2020-09-04 00:12:38 +08:00
    推荐 typescript 版的 egg.js
    ysc3839
        26
    ysc3839  
       2020-09-04 02:21:44 +08:00 via Android
    @mebtte 我觉得挺正常的,主要是 express 不会帮你 catch reject,所以手动 catch 一下并传递下去。
    Hanggi
        27
    Hanggi  
       2020-09-04 07:08:53 +08:00
    nestjs 重?你让其他语言框架怎么活?
    wszgrcy
        28
    wszgrcy  
       2020-09-04 08:23:45 +08:00 via Android
    说起 Json api 我还是忘不了 API json
    acthtml
        29
    acthtml  
       2020-09-04 09:12:29 +08:00   ❤️ 3
    kao/express 太单薄了,不能算框架,只能算个类库。如果从这两个开始起步的话,你还要很多基础性方案要设计,例如配置、日志、安全、路由、定时任务、校验、鉴权、单元测试、本地开发环境、部署、监控...等等
    上面的这些方案都是普遍性、基础性、通用性的,所以找一些具有上述解决方案的框架更加合适,例如 eggjs 或 nestjs 。

    eggjs 比较全面些,基本不需要在基础性工作上花上较多的时间,它最引以为傲的是渐进式的扩展性。

    nestjs 架构设计借鉴于 java sprint, 基础性工作没有 eggjs 完善,但它最大的优势是对 typescript 的完美支持,这在大型项目开发中的确能有不少帮助。

    最后总结:

    - 如果你熟悉 ts 和 java spring,那么 nestjs 会让你上手快点,也符合现在前端的潮流;
    - 如果你不熟悉 ts,也没写过 nodejs,那么 eggjs 可能更适合你,它有助于你集中精力在业务实现上而非基础性工作。
    marcong95
        30
    marcong95  
       2020-09-04 09:26:15 +08:00
    @wszgrcy #28 +1,最近 APIJSON 都没什么存在感,想他
    ShinChven
        31
    ShinChven  
       2020-09-04 09:50:37 +08:00 via Android
    安利 feathersjs 一键生成 restful crud
    linl1n
        32
    linl1n  
       2020-09-04 09:52:57 +08:00
    nestjs
    IssacTomatoTan
        33
    IssacTomatoTan  
       2020-09-04 10:06:09 +08:00 via Android
    喜欢 koajs 有需要什么才加什么。。
    mebtte
        34
    mebtte  
    OP
       2020-09-04 10:10:33 +08:00
    @ShinChven #31 我还以为叫 fatherjs
    libook
        35
    libook  
       2020-09-04 13:38:34 +08:00
    简单服务拿内置 http 模块手撸(比如 CI 相关的 hook ),复杂一些的 koa 一把梭,7 年时间自己已经积累了大量轮子,搭建新服务很快。

    “框架”有一千行的,有几十万行的,最终还是得看你需要哪些特性,要是单纯写个 REST+CURD 用不着什么复杂的框架,但如果是从.Net 和 Java Web 转行过来的还想用原来的习惯来开发就找些对标的框架。
    UniKylin
        36
    UniKylin  
       2020-09-04 15:06:30 +08:00
    egg
    ShinChven
        37
    ShinChven  
       2020-10-14 17:30:31 +08:00 via Android
    @mebtte "I am your father! | "
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2839 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:33 · PVG 19:33 · LAX 04:33 · JFK 07:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.