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

Node 后端使用 express 还是 koa?

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

    想把个人网站的后端换成 Node,但是对两个框架犹豫不决,哪个综合来看好点呢?或者企业用的比较多的是哪个?

    第 1 条附言  ·  277 天前
    统计提的比较多的几个:
    nest:7
    express:5
    koa:3
    egg:3
    69 回复  |  直到 2019-05-20 11:06:07 +08:00
    MicroPan
        1
    MicroPan   278 天前
    推荐 egg
    UIXX
        2
    UIXX   278 天前
    这个问题就相当于你去买电脑,问是买带外设的套装电脑好还是不带外设的独立主机好。

    express 跟 koa 在性能上并没有什么区别,只是在软件工程上面有着它们的设计倾向。
    一个是大而全,省事。一个是小而精,定制化容易。

    对于个人网站来说,两个都一样。
    polun
        3
    polun   278 天前
    会哪个用哪个;
    如果都不会,随便挑一个;
    如果都会,你应该自己可以决定。
    johnnyNg
        4
    johnnyNg   278 天前
    nestjs 吧,基于 express,
    whypool
        5
    whypool   278 天前
    nuxt
    tao1991123
        6
    tao1991123   278 天前
    eggjs
    tao1991123
        7
    tao1991123   278 天前
    喜欢 Typescript 和类 java 的依赖注入的话 试试 midwayjs
    love
        8
    love   278 天前
    @UIXX 这二个哪个是大而全?
    Blackricky
        9
    Blackricky   278 天前
    忘了在哪看到这句话了: express 全 fastify 快 nest.js 稳
    fakeshadow
        10
    fakeshadow   278 天前
    我觉得 fastify 蛮好用的
    kzfile
        11
    kzfile   278 天前
    曾经用 koa,现在直接 express,直接用现成的也没什么问题
    Karpov
        12
    Karpov   278 天前
    用过 express 还行。我反正是抄 real-world 的。node 后端它只有这么一种实现。
    MrCard
        13
    MrCard   278 天前
    看了大家的回复更想哭了。。。
    251243021
        14
    251243021   278 天前
    以前用 koa.觉得精简.后来出了 koa-router 时间.发现生态真心不能等.重新回到 express.发现都那样.如果喜欢 ts 都可以直接上 nest.js
    meteor957
        15
    meteor957   278 天前
    nest 可以看看
    des
        16
    des   278 天前
    推荐 nest
    des
        17
    des   278 天前
    个人网站啊,那随意
    YuxiangLuo
        18
    YuxiangLuo   278 天前
    http 和 net 选一个
    zander1024
        19
    zander1024   278 天前
    随便都一回事,要我建议别用 node
    66beta
        20
    66beta   278 天前 via Android
    个人网站干什么的,静态 blog 系统满足不了吗?
    WittBulter
        21
    WittBulter   278 天前
    @tao1991123 喜欢注入风格不妨看看我整理的这个 Guide: https://github.com/WittBulter/koa2-typescript-guide
    guiling
        22
    guiling   278 天前 via Android
    就你说的这两个的话用 express,node 早就支持 promise 了,其他跟 koa 没啥区别,就多几个内置中间件
    dr2009
        23
    dr2009   278 天前
    nest/egg
    Nasei
        24
    Nasei   278 天前
    我记得我还上学的时候, 学 node, 当时就有这俩框架了, 然后当时的教程说 koa 是新的, 要替代 express ... 看起来过了几年这事没实现啊
    stellar
        25
    stellar   277 天前 via iPhone
    fastify
    laogui
        26
    laogui   277 天前 via Android
    nest 实在太优雅了,强烈推荐。
    Sparetire
        27
    Sparetire   277 天前 via Android
    fastify,或者 nest+fastify
    viko16
        28
    viko16   277 天前 via Android
    投 eggjs
    tyrealgray
        29
    tyrealgray   277 天前 via Android
    Fastify 现在号称是最快的 nodejs 框架
    version
        30
    version   277 天前   ♥ 1
    写了 3 年的 nodejs
    我推荐还是 koa 大系统用 Fastify.
    别学 ts 语法

    写无状态服务用 koa 以后都是云函数服务
    然后写代码别 mvc 架构.多用 api Gateway 写法.也利于分部署部署
    别加载太多各种依赖..一个简单的 http 服务不需要那么多东西..
    处理好异常.数据库连接.那些就基本够了.

    如果这些都懂了..学门其它语言吧
    nodejs 不适合高并发业务.做做后台管理系统 api 还可以.不过普通小企业还是很适合的.创业公司.有钱和谐微服务转 go
    chengluyu
        31
    chengluyu   277 天前
    果断 fastify,带验证可以避免很多错误
    wee911
        32
    wee911   277 天前
    nest
    kethylar
        33
    kethylar   277 天前 via Android
    https://2018.stateofjs.com/back-end-frameworks/overview/
    为啥没人推荐 nextjs(不是 nestjs),谁能解解惑吗
    smallX
        34
    smallX   277 天前 via Android
    果断上 go
    crazyrock
        35
    crazyrock   277 天前
    越看越不靠谱。还有让转 Go 的
    guiling
        36
    guiling   277 天前 via Android
    @version node 不就是做高并发的么,怎么到你这儿就不适合了
    heimeil
        37
    heimeil   277 天前
    @kethylar nextjs 不是前端框架吗?基于 react 的
    FakeLeung
        38
    FakeLeung   277 天前
    @heimeil #37
    @whypool #5
    老铁,你们一个 react 一个 vue 的 ssr 框架,是认真的吗?
    GiantHard
        39
    GiantHard   277 天前
    写过 eggjs 之后,感觉还是 nest 比较适合我
    mingsz
        40
    mingsz   277 天前
    koa
    ilaipi
        41
    ilaipi   277 天前
    看了大家的回复,有点想试试 nest 了,但是看了一眼,优先 ts,感觉有点难以接受。我是不打算写 ts,不然当初也没必要从 java 转过来 node。有用 nest 不用 ts 的吗?
    nineyang
        42
    nineyang   277 天前
    没人推荐 sails 么
    nigelvon
        43
    nigelvon   277 天前
    长期维护的项目还是推荐基于 ts 的比如 nest,短期一次性项目 koa 吧。express 的中间件不是洋葱圈有点难受。
    thomaspaine
        44
    thomaspaine   277 天前
    @nineyang 看了下,感觉不灵活啊,还是 nestjs 好点
    Justin13
        45
    Justin13   277 天前 via Android
    koa2 啊
    thonatos
        46
    thonatos   277 天前
    这种问题最好的解法就是:都用一遍,哪个顺手用哪个。

    当然,我个人推荐 Egg.js ,什么依赖注入啊,不太感冒,没法儿,谁让我是 Java 黑呢
    cuzfinal
        47
    cuzfinal   277 天前
    用 nest
    CodingNaux
        48
    CodingNaux   277 天前 via iPhone
    不选 node
    version
        49
    version   277 天前
    @guiling 例如订单和数据库相关的事务方面的.nodejs 不适合做业务核心高并发的....做做分发前端渲染那些还可以.
    winnie2012
        50
    winnie2012   277 天前
    fastify
    version
        51
    version   277 天前
    @ilaipi 我也是 java 转 nodejs 也有 3 年了..nodejs 优势是比 java 强太多了...这样说可能很多人不爽我..不过我外包或者普通 crud 基本也是 nodejs 写的了..包括小游戏..普通接口压力.nodejs 还是很个给力的..一个没经验的 java 写的并发或者普通企业写的接口可能差过我 nodejs....现在 nodejs 对于大数据处理还是瓶颈很大..我 nodejs 原生+es6 我觉得非常完美的方案了..高并发核心模块用 rpc 转 go 来写..
    go 也是下一个趋势了.省内存.快捷..java 就算了.都是吹 ppt 的.我见多了.实际业务代码能力差的很..我对国人写 java 很伤心了.
    ilaipi
        52
    ilaipi   277 天前
    @version #51 握爪,我也是差不多 15 年转 node 的,现在公司项目全线 node。模块化拆分,独立发布我觉得都很方便了。

    go 目前还用不上,以后再说。

    我觉得确实是存在一批能力很差的生存在底层的程序员,业务代码能力非常差。

    不过 java 也有点优势。比如我们最近项目 mq 选型选了 rocketmq,买了阿里的服务,结果只有 java 的客户端比较完善,node 的客户端一塌糊涂,并且没有进展,绝望.jpg
    puilu
        53
    puilu   277 天前
    express 稳一点吧,那些口口声声要代替 express 的至今感觉都有气无力了。
    kingterrors
        54
    kingterrors   277 天前
    看样子没人用 hapi。。
    我公司项目都是 eggjs。基于 koa 封装的,比较容易上手。
    个人的话,我觉得随便哪个都行吧,看哪个 logo 好看就用哪个哈哈哈。
    marsgt
        55
    marsgt   277 天前
    印象里《 Node 实战》里有基础框架的横向对比,讲选型策略的时候给了些建议都挺实用
    version
        56
    version   277 天前
    @ilaipi 消息队列的还好..有 http 协议就自己封装一个 sdk 单例使用..我觉得就够了..如果不是特别多业务的.可以自己 redis 写.

    麻烦的是走 socket 协议的一些 rpc 断连就会出事.又或者重复发送.
    version
        57
    version   277 天前
    @kingterrors egg 是 kpi 的产物..看看他们的代码就好..
    自己用就还是自己搭建一个就够了.其实写个接口服务.不需要那么多东西的...

    hapi 就非常垃圾了.整一个 mvc 的做法.弄一套自己的标准..背离了用 nodejs 特性的初衷..
    写无服务的模块化才是未来的发展.哪个不爽重写就好.不用担心其它代码依赖
    ilaipi
        58
    ilaipi   277 天前
    @version #57 选 rocketmq 的原因主要是因为有延迟消息的功能。我们的业务场景里有很多需要一定时间后触发的。不想搞任务系统,我就想用 mq 来实现。
    ilaipi
        59
    ilaipi   277 天前
    @kingterrors #54 koa 和 express 貌似 log 都是需要自己加载中间件的
    Gea
        60
    Gea   277 天前
    nest
    busfool
        61
    busfool   277 天前
    只用过 express
    ngloom
        62
    ngloom   277 天前
    adonisjs...
    kingterrors
        63
    kingterrors   276 天前
    @ilaipi 所以我选择了 eggjs,封装好了很多,还能接入阿里云的 node 监控方便啦
    kingterrors
        64
    kingterrors   276 天前
    @version 哈哈,所以 hapi 我就用于自己测试瞎折腾,我是个好奇心重的人,一有啥新东西就想试试看看有没有什么惊奇的发现~~~
    用于生产环境我一般都是 eggjs,之前自己用 koa2 从 0 手工一步步搭起来,项目跑通了各种毛病,然后领导说你咋不用 eggjs,我就重构成 eggjs 了,因为,我开发时间也是比较紧张的。nodejs 开发经验不足的情况下在工作中也不敢瞎折腾了= =!
    OSF2E
        65
    OSF2E   276 天前
    version
        66
    version   276 天前
    @kingterrors 其实 eggjs 也没很多东西.基本封装个 class 都全了..不过要看自己经验了.. 阿里云 node 监控还是少用..性能比较低..它改了 nodejs 的底层..而且版本升级太慢...如果你要集群部署..用原生的好+es6 不要加其它编译了.
    nodejs 新版本启动基本也就 50m.压测后.gc 后也稳定 100m 的状态
    cl903254852
        67
    cl903254852   275 天前
    如果是新手 建议 Koa2,如果不是新手,建议 Nest
    UniKylin
        68
    UniKylin   267 天前
    推荐用 egg 吧
    chenhui7373
        69
    chenhui7373   252 天前
    @version koa 不是刀耕火种自己搞。。。我觉得还是用 Nestjs 省心。。。

    前辈有推荐的技术栈(技术架构)吗?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2279 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 30ms · UTC 12:53 · PVG 20:53 · LAX 04:53 · JFK 07:53
    ♥ Do have faith in what you're doing.