egg.js和nest.js改选择哪一个作为系统框架呢,大神们给点意见?
发布于 22 天前 作者 danielmlc 2592 次浏览 来自 问答

最近想用node.js重构公司后端。egg.js和nest.js改选择哪一个作为系统框架呢,大神们给点意见?

45 回复

egg.js 够用了。

新手适合egg

egg 有阿里兜底 适合企业应用

如果有 java 或者 .net 基础,或者学过 angular ,又或者是喜欢 tyoescript ,建议 nest.js 上手。

你们都不考虑loopback 吗

建议 nestjs ,长期项目+人员流动,就选nestjs,对团队好

我用egg,如果对ts偏爱,可以试试nest。。egg对ts支持不如nest FYI Web框架精选TOP10

来自✨ Node.js开源项目精选

egg相对来说更容易入门。但nestjs的代码组织方式更加优雅,结合TS可以编写出可读性很高的项目代码,更利于维护。

原始的express或者koa

@cnlile 确实没听过,最近社区 nest.js 呼声很高啊。

loopback 看到 restful JavaScript —— 基本上可以放弃了

egg.js +1 入门学习成本低。

公司能招到人才是王道。

egg.js +1 入门学习成本低。 用起来也是非常爽的

egg.js <br><br>来自<a href=“https://lzxb.github.io/react-cnode/” target="_blank">react-cnode手机版</a>

@zlnvsheng node.js 确实不好招人。 如果招java 转 node.js 比较好招,而且学习nest.js 2-3 周就可以上手了。

@gogogosns 招java 学nest.js 简单。 node.js 不好招人。

最近在用nest.js,对ts的支持更好,代码组织也会更好,公司的项目使用这个会比较好

    @zhhb
    
  @zhhb
  确实如此
  来自✨[react-cnode](https://github.com/MMGong/react-cnode)✨

    来自✨[react-cnode](https://github.com/MMGong/react-cnode)✨

不尝试一下AdonisJs么?

@wxs77577 adonisjs 凉凉了~ 之前看这俩框架的时候 nest 3k star adonis 4k 现在 adonis 4k多 , nest 已经 8k 多了 而且对 ts 不支持

@entrehuihui 不是趋势,所有后端框架的最终之路都是像 spring ,请看: php 里的laravel ruby 的 rails 现在 node.js 的 nest.js 在走这条路。

选择Koa哈哈

虽然在用egg 但是对它几乎不维护的egg插件有些反感

@konglover 项目小的话无所谓,如果项目大而复杂的话,建议了解下这个: https://cnodejs.org/topic/5b9a0164f1e8bc7579c78581

之前回复过这类问题,这边复制粘贴回复一下~

技术选型这件事,可以说是 仁者见仁智者见智,但也有一些考量在里面。我一般会考虑下面几个点:

功能

功能是什么?简单说,就是能否满足业务需求,不论 Node 框架 Express / Koa, Python 框架 Django / Tornado / Flask,又或者是 Java 框架 JFinal,都是为了满足业务需求而生。

所以呢,谈选型是要考虑场景的:

  • 静态服务器,http-server 一键启动就够了不是~
  • 接口服务器,业务不复杂的,Flask 其实要比 Tornado / Django 更简单、方便?
  • 运营后台类,主操作 CURD,如果尝试过,会发现 Django 也很方便,定义一下 model 基本就完事了~
  • 再复杂一些,逻辑不定,关系不一,需要独立开发,且很可能后续调整频繁,这时候就需要自行实现了

说了这么多,总结起来还是我常说的那句话,脱离场景谈选型,都是耍流氓

生态

周边生态这件事就很好理解了,就拿常用过的一些东东来说,

  • aliyun oss
  • wechat api
  • elasticsearch
  • socket.io
  • redis / mysql / mongodb
  • 模板渲染 / 认证 / 权限管理

业务相关的东西很多的,如果有已经完善的工具,开发可以做到事半功倍,越来越多的公司选择上云,对阿里云的依赖变多,有阿里系的产品支持,很多东西不用自己开发,又或者简单封装即可使用。

社区

fb 的项目和个人项目选择哪个?不用说,一定是倾向于知名团队的或者企业的,阿里在 Node 社区的贡献度,有目共睹(社区活跃的大佬也是成把抓,没事了私信一下说不定还能勾搭一下?)

阿里前端业务大多是基于 Egg.js 开发(可以去问 cnode / cnpmjs 的大佬),这方面,持续的投入是看得到的,至少不用担心改天不维护了~

issue 那边也经常看到 Egg 核心开发者大半夜还在讨论问题,帮忙查找问题的情况用到的同学应该比我更清楚~


Egg.js 为企业级框架和应用而生,我们希望由 Egg.js 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本。

综上,在需要自行开发的项目(我主导或者负责)里,从 1.x 开始,不论是个人还是公司项目,我 全部 使用了选择了 Egg。 目前来说依然觉得用的很开心,也很庆幸,并没有因为 KPI 问题而项目暂停?(笑),后续还是看场景,第一选择仍然是 Egg。


1.插件不更新问题,建议作者转移到这个社区维护的 ORG 里由大家一起维护吧~

https://github.com/eggjs-community/README

2.小项目无所谓 这个说法很不认同,双十一中运行的 Egg 项目很小喽?拿一个出来对比一下生产中运行的复杂度和需要应对的流量吗?

答案是:无意义。

  • 讨论项目大小,Office 那种才是真的大项目,然并卵,整个前端也没几个,如果有,欢迎拿出来大家膜拜一下~
  • 讨论应对流量,不好意思,拿架构图出来吧,真正的瓶颈从来都是 Database / Proxy / Cache / SLB,需要在框架层面讨论这个的,怕是没法大了。

@zuohuadong 呵呵。。。 原来 egg 所支撑的双十一还有阿里绝大部分的 Web 系统,只是小项目啊

干点什么呢?

为什么评论不了呀?

@zuohuadong 非也,Rails是鼻祖,Spring 是后来者,别搞混了

@atian25 BAT 真的用什么都成,node.js 原生也好,甚至直接C++ 开撸也罢。 腾讯互娱事业部,还有一堆 C++98 呢。 当然,社区也并不是非你即我,提个建议: egg 的 issues … 没 nest.js 回复及时。 另外 egg 第三方插件对 ts 支持确实不够友好。 大公司是可以不管不顾,说一句: 我们xx业务就在用 egg ,能吸引很多粉丝。但生态,对小公司来说,是命~ 能在这里问的肯定不是 BAT 等上百亿的互联网公司,那么——小公司,请给我一打 AOP ~

@YUFENGWANG 感谢更正~ Rails 这货是真被 Ruby 坑惨了~

看你想要什么了:

  1. 要稳定选egg,底层的 connect、koa 由 egg 团队成员维护。几十个基于 egg 的稳定运行的上层框架,不管是几千 pv 或者 几十亿 pv 的流量都能支撑。
  2. 要生态选egg,几百个 egg 插件,基于覆盖所有的应用场景。不管是微服务方案、传统方案、同构方案、GraphQL 等等都覆盖了。
  3. 要维护选egg,由于是底层框架的缘故,一般业务上一些能力都会反哺回来,形成良性循环。有问题也会及时回复,每天都有大量更新可看。
  4. 要star选 egg,目前准备破万,对于国内的 node 开源项目来说非常不容易。
  5. 要运维选egg,完整的日志方案,完善的生命周期,完善监控方案,上 Alinode、Docker 等等都行
  6. 要折腾选egg, typescript - https://github.com/midwayjs/midway aop - https://github.com/eggjs/egg-aop swagger - https://github.com/okoala/egg-swagger-doc2 graphql - https://github.com/eggjs/egg-graphql 同构 - https://github.com/alibaba/beidou 移动端 - https://github.com/eggjs/examples/tree/master/assets-with-umi 中后台 - https://github.com/eggjs/egg-ant-design-pro 等等还有许多官方插件正在开放中
  7. 要聊天选egg,各大钉钉、微信群,有问题在里面提问基本都能及时回复,国外的库问题基本是异步,而且有时差。

当然上面都是建议~

@zuohuadong 现在什么学java的学php的学前端的都在学nodejs nodejs真的要火一把了吗

node.js 有这么好嘛???

@zlnvsheng 在我看来,node.js 下一个强有力的竞争对手应该是 golang 。 node.js 值得吐槽的地方: express koa 更像是前端框架,而不适合做大后端。 nest.js 改变了这种局面,只可惜没普及。 现在区块链和微服务带火了 golang ,nest.js 如果能趁此机会拿下 php/swoole 和部分java 的市场份额,还是有一定机会的。 当然,语言只是工具,我们喜欢的,是 js 通吃的能力。

@author-hao node.js 本来设计不烂, 一是 前端 js 的强势。(浏览器只认 js) 二是 node.js 的库 既有C++ 实现,又有 js 实现十分灵活。 三是 大企业强有力的支持。

midyjs 底层eggjs 采用typescript 了解下 也是淘宝的

回到顶部