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

现在 node 做后端一般用什么框架

  •  
  •   SaintSeiya · 259 天前 · 13809 次点击
    这是一个创建于 259 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想做个小东西,也就写一些接口,不知道现在还流不流行 express 和 koa 了
    第 1 条附言  ·  258 天前
    多谢大家,看了下 egg 和 nestjs 准备挑一个用用
    64 条回复    2020-01-20 23:54:24 +08:00
    ran1ever
        1
    ran1ever   259 天前
    Mark 一哈 我也准备搞搞这个
    TomatoYuyuko
        2
    TomatoYuyuko   259 天前
    之前面过的几家打听都是 koa,不知道是不是偏差
    ares586
        3
    ares586   259 天前
    我个人站用的是 koa2,现在培训班也讲 egg.js
    baleeny
        4
    baleeny   259 天前
    流行吧,我们公司还是 express
    lotosbin
        5
    lotosbin   259 天前
    banchen
        6
    banchen   259 天前
    egg,midway
    johnnyNg
        7
    johnnyNg   259 天前
    nestjs
    crs0910
        8
    crs0910   259 天前   ❤️ 1
    leeggco
        9
    leeggco   259 天前
    express
    enjoyCoding
        10
    enjoyCoding   259 天前
    express koa egg
    Cbdy
        11
    Cbdy   259 天前 via Android
    express
    fivelonglong
        12
    fivelonglong   259 天前
    egg.js
    NasirQ
        13
    NasirQ   259 天前
    egg 吧...大厂维护比较好些
    birjemin
        14
    birjemin   259 天前
    egg.js 吧,大厂后面好乘凉,如果选用国外的也行,遇到问题,看你英文水平了。
    Colorful
        15
    Colorful   259 天前
    我最近在用 loopback,觉得还不错。
    coconut5
        16
    coconut5   259 天前
    koa2
    PixelMage
        17
    PixelMage   259 天前
    必须 nest,你对比一下 egg nest 等框架的星数就知道了。
    lookas2001
        18
    lookas2001   258 天前 via Android
    egg (koa)
    FaiChou
        19
    FaiChou   258 天前
    restify
    mytharcher
        20
    mytharcher   258 天前   ❤️ 3
    一直在用 express,其实比较想迁移到 koa 的,毕竟多了原生异步中间件和更自由执行中间件顺序的特性,但想想其实大多数情况这个特性也没那么必要,除此以外 (req, res, next) 和 ({ req, res }) 真没多大区别。据说 express v5 以后也会原生支持异步中间件,只是 tj 大神离开 Node.js 社区后一直是 alpha 版不知道什么时候升。另外就是我一直懒得写一个 koa 下和 https://github.com/mytharcher/rainbow 一样好用的路由自动配置中间件,所以就一直没迁😂。

    也看过 eggjs 和 nestjs,不想用的原因还是一样,实在不想这么麻烦的定义 controller 和路由,我个人认为天生这俩东西就应该绑定到一起,没必要写 controller 的时候还要再去定义一次路径,否则每次要找定义了什么路径还要去文件里面找。

    其实还是因为 express 本身足够灵活,ORM 层 sequelize 也比较成熟了,所以针对很多简单的 RESTful 应用,最重要的就是设计好数据库,其他常用的东西简单封装一下就能用了,完全没有那么麻烦。尤其是如果对 RESTful 理解比较深的话,总是能总结出一些统一的设计范式,自然的就形成约定了。比如我们团队写了好几个 Node.js 后端项目之后,逐渐的就总结出一些常规且固定的用法,形成了一套针对 express 的基础扩展包 https://github.com/mytharcher/express-utils。这里其实已经无关 express 还是 koa 了,主要看你们团队对于数据库设计和接口设计的理解,形成统一的规范就用什么都行。最后估计到某一天我也会按我们现有的方式把我们的扩展包进化成完整约定的另一套框架吧,哈哈。
    janxin
        21
    janxin   258 天前
    nestjs 推荐一下
    mytharcher
        22
    mytharcher   258 天前
    @mytharcher
    扩展包链接(上面忘加空格识别有问题): https://github.com/mytharcher/express-utils
    xlh001
        23
    xlh001   258 天前
    egg
    IamUNICODE
        24
    IamUNICODE   258 天前
    express,koa 只用过 1,egg 也不错
    CaanDoll
        25
    CaanDoll   258 天前
    js egg
    CaanDoll
        26
    CaanDoll   258 天前
    ts nest
    Liutos
        27
    Liutos   258 天前
    egg-js
    iugo
        28
    iugo   258 天前
    我们以前用 koa2, 现在使用函数云如 AWS Lambda, 就不用框架了.

    框架只是给个规范, 如果团队已经形成一套规范, 框架什么的就很随意了.

    当然, 库是肯定要用的.
    tonyleen
        29
    tonyleen   258 天前
    restify
    kayv
        30
    kayv   258 天前   ❤️ 1
    必须 ts nest,一本正经的后端
    noobma
        31
    noobma   258 天前
    nestjs
    acthtml
        32
    acthtml   258 天前
    express, koa 只能算是类库,eggjs 算是框架。
    heasy
        33
    heasy   258 天前
    国内的话推荐 eggjs,国外的话推荐 nestjs
    lemon6
        34
    lemon6   258 天前
    koa2
    SaintSeiya
        35
    SaintSeiya   258 天前
    @mytharcher 多谢老哥
    lihongming
        36
    lihongming   258 天前
    老外已经开始流行 serverless 了,可惜 AWS 进不了中国
    liangfengbo
        37
    liangfengbo   258 天前
    用 koa2 写了个学习项目: https://github.com/LFB/nodejs-koa-blog 欢迎一起学习~
    npm
        38
    npm   258 天前
    推荐 egg.js
    MYDTX
        39
    MYDTX   258 天前
    ts
    ericls
        40
    ericls   258 天前 via iPhone
    最近用 net 写了一个 挺好用
    wunonglin
        41
    wunonglin   258 天前
    nestjs
    MrBrand
        42
    MrBrand   258 天前
    我的博客服务端用的 koa2 准备用 nestjs 改造下,主要是想学习使用 ts 哈哈
    lizheming
        43
    lizheming   258 天前
    @mytharcher 可以考虑下 ThinkJS,基于 Koa2 的,文件即路由 ~
    kidult
        44
    kidult   258 天前
    推荐 nestjs,感觉还是在写 java ..
    nianyu
        45
    nianyu   258 天前
    只推荐 nest 或者轻量级的 express .
    egg 什么的一边去吧
    hillwall
        46
    hillwall   258 天前
    nest,ts 一把梭
    iYoloyolo
        47
    iYoloyolo   258 天前
    daruk 试一试
    jiangzm
        48
    jiangzm   258 天前
    轻量一点的 koa 和 express,别用 egg
    wangyzj
        49
    wangyzj   258 天前
    koa2
    不喜欢 egg 那种大集合
    zy445566
        50
    zy445566   258 天前
    果断 koa2,自己想怎么改就怎么改
    tao1991123
        51
    tao1991123   258 天前
    eggjs
    wee911
        52
    wee911   258 天前
    nest.js 必须这个
    WittBulter
        53
    WittBulter   258 天前   ❤️ 15
    1. Express 生态圈比较成熟,可用的中间件和设施也是最多的,但是比较臃肿而且最佳实践见仁见智,算是个比较中庸的选择。大家也比较熟就不多说了。

    2. Koa2 是我比较喜欢的设计理念,相对小巧,算是只有主菜,套餐自由组合。值得一提的是很多时候不需要那么多中间件比如在微服务或是 Serverless 上写东西更值得推荐,自由度很高。可惜社区太薄弱,参与贡献的人很少,很多设施更新很慢。如果你有一些很酷的想法或者想为 NodeJS HTTP 框架添加一些东西,为这款源码简短的框架写周边服务是再好不过的了。

    3. Fastify 是在性能上更优秀的库。我只在写一些极小的逻辑时才会用,基本只会在 Serverless 上使用。不过它的设计很巧妙,源码可以多读,给了我很大启发。它性能真的很高(作为 http 服务来说),如果你很看重性能可以尝试。

    4. Sails 是我早期在项目中用过最多的框架。Sails 是仿造 Rails 的 NodeJS 实现,总体来说算是实现了 Rails 的大部分设计,风格上保持主厨精选和约定优于配置,在这个框架下工作会非常的省心,效率非常高且优雅。缺陷也很明显:`waterline` 速度被人诟病已久,而且优于要做很多活所以性能较差,但大约和 Express 处于一个量级。很多地方源码的实现很脏,和 TS 结合不算友好,近年来的更新有些慢。如果你喜欢 magic 喜欢 ruby 风格可以试试。

    5. NestJS 本质上是一个更加全面的 routing-controller,设计上也大幅度借鉴了 Angular 和 routing-controller,不过只是一个骨架,可以结合 Express 或 Fastify,算是目前和 TS 结合的最好的框架。缺陷还是在 TS 的 ORM 数据验证这一块,由于没有自己实现所以推荐了 routing-controller 作者写的 class-validate,这个库的更新很慢而且问题比较多而且使用起来堆栈很高不是很理想,另外此框架是 IoC 类型所以代码量稍高,不过如果你喜欢大而全喜欢 TS 又喜欢写测试,这个框架是最推荐使用的。

    6. zeit/micro 是我见过 NodeJS 中最微型 Http 库,麻雀虽小五脏俱全,也受到很多人的热捧。非常推荐在微服务中使用,以前是 zeit 在 Serverless 上的首选,现在优于 now 的发展当然不需要了,也一直是我的最爱,代码量极低、小巧、高性能、设计优雅。社区有不少与此相关的周边库,作者也更新的快,非常值得信赖。不足的地方是文档少 (功能少所以文档少),如果没有一定的 NodeJS 基础会有些云里雾里。

    7. Hapi、Restify 等等这几个是我比较讨厌的,就不细说了,免得它们又有新用户。

    综合评价:
    性能偏执压测之子请选择 Fastify,
    宗教信徒快乐编程请选择 Sails,
    大道至简高人雅士请选择 zeit/micro,
    社区中坚力求变法请选择 Koa2,
    遵循法度统筹兼顾请选择 NestJS,
    以上都不是没有特别喜好请选择 Express。
    fsdrw08
        54
    fsdrw08   258 天前 via Android
    nestjs,只用过这个,搭配 angular 使用很省心
    SaintSeiya
        55
    SaintSeiya   258 天前
    @WittBulter 可以的老哥,多谢建议
    Rorysky
        56
    Rorysky   258 天前   ❤️ 1
    nest nust next
    jprovim
        57
    jprovim   258 天前
    hantsy
        58
    hantsy   258 天前   ❤️ 1
    中庸的角度,Express 是首选,生态圈成熟,各种需要的东西都能找到,自己装配。
    快捷的,面向企业程序,Microservice:Nestjs,loopback,功能全面,拿来就用。
    codz
        59
    codz   258 天前
    mark,学习. nestjs 待学.
    chrunlee
        60
    chrunlee   256 天前
    没人用 thinkjs 么?
    meijie
        61
    meijie   254 天前
    meijie
        62
    meijie   254 天前
    seandor
        63
    seandor   252 天前
    没人用 graphql 吗
    yafoo
        64
    yafoo   251 天前 via Android
    iijs,我正在开发一个自己的 mvc 框架
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4519 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 02:51 · PVG 10:51 · LAX 19:51 · JFK 22:51
    ♥ Do have faith in what you're doing.