阿里 egg.js 香不香?

2020 年 6 月 14 日
 fxjson

作为一个后端研发,想了解下 node,于是试了下 egg,安装完之后吓一跳,项目的 node_modules 文件夹里面好几百个模块,当时吓一跳,大家平时开发用 egg 吗,还有别的轻量级框架木有

25443 次点击
所在节点    Node.js
153 条回复
syscall
2020 年 6 月 15 日
nestjs 、nextjs 、nuxtjs 、nustjs……这些名字增加心智负担,选个蛋
mywaiting
2020 年 6 月 15 日
有一说一,就 eggjs 这点代码,管它官方维护不维护,随意魔改都不是问题啊。只要我想用,我能用到天荒地老
shuangya
2020 年 6 月 15 日
@lupkcd 1.我没说 RN 怎么样。2.事实上大厂用 RN 的也不多。
@nianyu 1.有 RN 就不能有 weex ?什么逻辑?那有 angular 和 react 还搞个 vue 是不是很多余? 2.当时历史背景就是纯 H5 的应用性能低、体验差,别不承认。3.没人骂的东西才是真的凉了,骂 vue 的人多不多?骂 react 的多不多? 4.大项目的 issue 不可能 100%回复,维护者精力是有限的,你自己随便挑个知名的开源软件看看是不是几千个 open 状态的 issue,还有一堆开了很久没有回复的。
zhengjing
2020 年 6 月 15 日
koa 中小型项目完全足够了。
nianyu
2020 年 6 月 15 日
@shuangya 你说啥呢?谁也没说纯 h5 性能不行啊?关键有点样子的产品也没谁是纯 h5 做的。后来 fb 又出了 rn,出来多久了阿里开始搞 weex 。说别的没用我就为你几个事
1 你说的 weex 是底层,请问哪里底层了?为什么人家 rn 还是迭代,底层架构技术都要换了
2 为啥当时社区几千个 issues 不处理?各种 bug 也不处理
3 主要作者走之后你看看现在几个更新?
4 一个 kpi 产物主要作者在的时候都不响应社区反馈,为何当初一吹在吹 忽悠别人用?
5 你说其他开源项目也有一堆 issue 没处理,出了不维护的大多数作者团队还是在处理的只是精力有限一次处理不过来,不像大 weex 压根理都不理
6 别说为啥有 react 还有 vue,最起码人家生态是全的。一开始 weex 跟 rn 的生态就不是一个级别的,只有阿里在硬吹
joesonw
2020 年 6 月 15 日
egg.js 对于小团队上根本不好使, 还是 nest 好用. 对于大团队呢, 人家肯定也得自己弄一弄了.
shuangya
2020 年 6 月 15 日
@nianyu
1.weex 主要功能是把 JS 的模板渲染成原生组件,并提供和原生交互的 API 。实际上和小程序提供的能力高度重合。这不算“底层”范畴吗?
2.你只看到了没有处理的,看到处理了的 BUG 吗?都说了维护者精力有限,只能处理一部分。
3.主要作者走了是因为项目已经进入维护阶段了,换句话说就是逐步淘汰了,你还希望有多少更新?你会投精力到一个“逐步淘汰”的东西上?
4.别一天到晚把“KPI 产物”挂在嘴边,说了很多次在当时是有解决实际问题的。“不响应”是你只看到了没有被响应的,选择性忽视了响应到的。
5.同上。
6.说得好像 react 、vue 一出来生态就全的一样,谁家生态不是慢慢发展起来的?难道谁能东西还没做出来就把生态发展起来了?
OSF2E
2020 年 6 月 15 日
@shuangya #51

@Hanggi #56

事先声明,以下内容仅代表个人见解,为方便表述使用了一些可能会存在歧义的名词或者概念。

事先声明,一直对 vue 的创始人以及使用 vue 的技术群体充满了敬畏之情,万一说错了什么,敬请谅解。

JQuery/Vue/React/Angular 属于基于浏览器端 DOM/BOM 接口的“交互向”或者“视觉向”的前端应用开发框架,这四者可以作比较。

EggJS/NestJS 可以放在一起作比较,主要是在用来开发服务器端 NodeJS 环境下业务系统,统称为“数据向”的前端框架。

Redux 只能算是针对 React 某一部分功能的加强或者扩展,同样与 JQuery/Vue/React/Angular 不是一类产品。

如果把 JQuery/Vue/React/Angular 比作战斗机的话,egg/nestjs 就可以比作坦克,毕竟两者的战场完全不一样。

总之,不是一类的东西放在一起比较没有意义。

先比较 JQuery/Vue/React/Angular 四个框架之间的差异。

每一代浏览器端前端框架都解决了至少一个核心技术难点,就好比每一代战机都会在至少一个核心技术方面有重大突破一样,可能是发动机、隐身、雷达、武器等方面中的任何一种或者多种。

话题回到浏览器端前端框架的问题,这里说的“分代”,不是指的产品,而是指的产品背后的技术思想。

JQuery 所代表的的三代技术思想主要解决的是垮浏览器端 DOM 接口的兼容性问题。

Backbone 属于三代半,在 jq 的思想基础之上,实现了基于数据绑定思想的 MV*架构。

判定四代的标准是不依赖 jq 操作 DOM (但仍然要操作 DOM,也就是所谓的虚拟 DOM ),同时实现了基于数据绑定思想的各种 MV*架构。

发展初期的 Vue/React/Angular 站在同一起跑线上,均属于四代,但由于种种原因早已渐行渐远了。

Vue 核心思想就是速成,快速上手、高速开发。

Angular 在三四代技术思想之上,核心发展思想是创建规范化的前端工程开发流程,写出尽可能优秀的代码。换句话说就是开发前端应用的时候要有开发系统软件、桌面软件、服务器端业务系统一样的“硬姿势”,导致的结果就是开发工作颗粒度太细,开发效率低,学习曲线陡等问题,导致大多数开发者在潜移默化中把开发出良好用户体验的前端应用的目标调整成了写出符合 ng 标准的代码,代码质量确实提高了,但开发出来的东西用户不买账,或者开发出用户满意的东西工期太长。

可以看出 Angular 和 Vue 在某些层面是站在绝对的对立面的。

Angular 后续版本重点解决的是自身的性能问题,比如 ng8 引入,ng9 扶正的 Ivy 引擎,对于 API 用户来说没有思想上的改变。

Vue 的后续版本则是类似于 IE6789 风格的升级。

v16 之前的 react 核心技术思想是单向数据流,还有 JSX 勉强也算,redux 则不是 react 官方的东西。

为什么说 v16+的 React 属于五代技术思想?

v16 之后有三个很重要的东西,Fiber/Hook/Concurrent,网上有很多优秀的分析文章,这里不再赘述。

React 把近十几年优秀的前端开发思想集成到了一起,而非通过打包工具、第三方库、语法糖、接口等方式把这些思想层面简单粗暴的堆到一起,毕竟前端开发是门手艺活儿,手艺人需要的是灵活发挥的空间,以及齐全趁手的工具。

再就是与浏览器端 JS 开发的层叠样式设计开发、交互动画设计开发等方面的技术问题,开发流程、代码架构等思想上应该是统一的,React 实现了这一点。

这里扩展说一下,CSS 的布局思想由 BFC 发展到 FFC 再发展到 GFC,与 React 的单向数据流思想不谋而合。

更进一步说,UI 设计,布局设计,动画设计,交互设计,以及状态管理策略设计,应遵循单向数据流风格的开发流程,React 可以保证这一类型的开发流程的顺利递进,而 Vue/Angular 不行,它们只关心怎么写 JS/TS 代码。
hoythan
2020 年 6 月 15 日
有一说一,非常好用,开发巨快捷,运行起来也稳定。支撑过两千万 PV 项目,没出毛病。
hoythan
2020 年 6 月 15 日
@monkeyWie ...自己不会编辑器怪人家代码不行,你可真行。
shuangya
2020 年 6 月 15 日
@OSF2E 有一些道理。这几个框架可以拿来“分代”。但 JS 的范畴不止这些,每个方向都会有不同的划分。比如数据可视化方向的 echarts 、antv 等,图形方面的 WebGL 、WebGPU 等,引擎方面的 v8 、wasm 等,基本上各个方向都可以拿来分分。
事实上今天的前端,已经不能是传统意义上写写界面的“前端”了。所以,既要了解技术细节,又要选择性“忽略”技术细节。
OSF2E
2020 年 6 月 15 日
@shuangya

对,“一把梭”的前端技术时代已经过去了,算法向、视觉向、交互向、数据向、架构向、编译器向的前端工种以及前端产品以后会划分的越来越清晰。
nianyu
2020 年 6 月 15 日
@shuangya
1 我不觉得搭个 bridge 就算底层了
2 我搞个开源项目一共 1000 个反馈,我解决了 10 个也叫解决了,嗯真棒,反观其他项目 1000 个是解决不过来至少解决几百个
3 别说逐步淘汰这种话,我都说了作者再的时候跟进都不及时,况且为啥人家 rn 为啥一而再再而三的推翻之前架构不断重构?
4 同上
5 同上
6 因为 weex 一开始就没打算好好弄什么生态,干完一票就走人
shuangya
2020 年 6 月 15 日
@nianyu
1.按这个说法,React 的 Fiber 连 bridge 都算不上,那算是什么?底层的概念都是相对的。
2.麻烦你拿数据说话,有多少反馈,其中多少是有效的,多少是作者处理了的,多少是没有处理的。别一天到晚阴阳怪气。
3.FB 觉得 RN 没有到淘汰的时候,继续迭代有啥问题?阿里觉得 weex 到了淘汰的时候,停止更新又有啥问题?你咋不说 Linux 还在一直更新微软就放弃 XP 了呢?说得好像是个产品就一直有价值,就不能放弃一样。
6.怀着最大的恶意揣测别人也是够了,谁不希望自己的产品能有良好的生态,能够一直持续下去?如果 vue 今天没有做起来,相信你也会去踩一脚“因为它一开始就打算干一票走人”
SuYia
2020 年 6 月 15 日
但凡阿里相关都要扯上 KPI,框架都技术升级了,咱就不能升级一下喷点?
nianyu
2020 年 6 月 15 日
@shuangya 你觉得算底层就算呗,反正我不觉得这玩意是啥底层。就算 rn 没出来之前都有好几个类似的东西,而你上来张口闭口这玩意是底层 使命完成了自然淘汰。闭口不提完成了啥子使命?最火的时候要生态没生态 除了阿里内部其他公司有几个用的?跟 vue 是一回事?阿里吹真快把我逗死了。兄弟这玩意最火的时候都没建立起什么生态,他完成了啥子历史使命呢? 能不能告诉我? 别说什么纯 h5 性能差了?我上面都说了根本没几个纯 h5 的应用,很多功能都做不了还纯 h5 个屁啊。rn 出来之前都有 condava dcloud 出品的那个。后来 rn 出了。然后阿里就搞出个 weex,解决了啥啊?你告诉我呗。性能 生态被完爆。他咋就完成历史使命了呢? 搞出个没人用的东西然后不维护了 美名其曰完成了历史生命 哈哈
Hanggi
2020 年 6 月 15 日
@OSF2E 哈?你在说什么?你确定三种框架都用过吗?

别的不说了,总之,这年头千万不要说其他框架不行
shuangya
2020 年 6 月 15 日
@nianyu 别把无知当无谓。
当时的历史背景就是纯 H5 性能差。数据统计,淘宝的大促页面,weex 比纯 H5 平均渲染时间少了三分之一,这就是它的功劳。现在因为硬件和内核的发展,加上统一的小程序引擎,weex 的存在必要性大减,这就是“完成了当时的设计使命”。
Weex 的 UI 框架有 EEUI,并且兼容传统的 CSS 。开发框架有 Vue 、Rax,有图表库,有地图库,有原生 API 封装库。后续进入 Apache 孵化。这就是你所说的“没有生态”?
另外你把 RN 和 Weex 类比还可以,至少他们原理类似。但你把 Condava 拿出来对比就只是在彰显你的无知了。
别一副理所当然“我不知道就是没有”的样子。还是那句话,别把无知当无谓,自己不知道开口就喷。
hezhiming1993
2020 年 6 月 15 日
楼上吵死了🤐
hezhiming1993
2020 年 6 月 15 日
翻页搞起

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/681393

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX