关于未来,哪个框架会成为最流行的?

2022-08-26 17:00:40 +08:00
 hoseawu
本人用过 express ,nestjs ,目前工作是做 nestjs 开发的。
很想知道行业趋势将如何去抉择,什么框架会成为最流行的呢?
就本人用过的框架而言
nestjs+ts 的开发非常舒服,但是确实对于一个小项目来说过于繁琐了。
express 倒是方便,但也确实大项目写到后期维护很是问题。
5420 次点击
所在节点    Node.js
5 条回复
shuimugan
2022-08-26 18:25:11 +08:00
选大而全的。

大而全框架带来的是一整套的成熟的解决方案,不需要自己东拼西凑搞半成品,比如当年屌炸天的 Ruby on Rails ,指导了多少框架,前端工程化惊为天人,缓存利用到极致,ORM 设计更是被现在的框架各种抄。简陋的框架只会让别人去拼凑,最佳实践都很少,也不利于开阔视野。看看 python web 那些从 Flask 转到 Django 的就懂了,还有现在的 FastAPI ,流行度比 Sanic 高多了。

排除单独吹 Serverless 的,因为各大云厂商 Serverless 都支持跑 docker 镜像,自己拿 pkg 打成单个可执行丢 slim/alpine 镜像就搞定了,也就几十 MB ,冷启动快得一批,而且 Deno 接下来重点也在兼容 Node.js ,到时又会多一个打包成可执行文件的方案。再看看云厂商那蹩脚的 layer 层设计,让你把 node_modules 放那里,一堆碎片文件妨碍启动速度,不靠谱,狗看了都摇摇头,搞不好还是网络加载的。

单独面向微服务的也可以排除了,比如 Moleculer ,这年头微服务直接上 k8s 然后纯 http 互相调用,无状态简单得一批,可观察性也好,工具链也成熟,还能精细控制流量。

排除 Midway.js ,阿里的开源大家都懂的,三年前我第一个 Node.js 项目用它就碰到一些弱智 bug ,懒得再看了。

排除没用 TypeScript 的,Sails/Hapi 拜拜。

AdonisJS 的纯 TypeScript 版出来太晚了,挺像 Laravel ,PHP 转型到 Node.js 的会喜欢,不过很多 PHP 都觉得转 go 会更好。

所以没什么好选的了,早知道,还是原道,哦,还是 NestJS 。
xieren58
2022-08-26 23:06:03 +08:00
个人使用, 感觉 Moleculer 比 NestJS 好用.
hutoer
2022-08-27 11:23:55 +08:00
我也感觉 Moleculer 比 NestJS 好用。

容易上手的微服务体系
通过 MQ (多种)支持事件驱动、解耦服务、负载均衡等
支持服务注册 /发现、日志、跟踪、度量、缓存等
容错功能(熔断,限流,重试,超时,回退)
自带 API 网关
自带 CRUD 模块,可以快速产生 RESTful API
插件化体系,常用模块都有集成
支持多语言:javascript/typescript (主要开发语言)、java (完成度很高)、其他语言(不成熟,python go c# 等 client 可以用)

其实大多数团队的项目都是小项目(特指资源需求),2-3 台普通服务器( 32 核、64G 内存这种)就搞定了。一定要硬上 k8s ,就像 https://twitter.com/dexhorthy/status/856639005462417409

k8s 用了 5 年了吧,几十台服务器,几百个服务,部署调优还是很耗费时间。小项目(服务器要求小于 10 台),我觉得 Moleculer + docker compose 就很好了,简单够用,持有成本低(硬件成本、部署维护成本)。
libook
2022-08-29 16:06:51 +08:00
选型要看项目时下的需求可状况,没有一招打天下的框架,而且随着需求变化、项目发展,未来还可能会换架构。

有时候简单为服务我会直接用 Node.js 官方 HTTP API 手撸。

复杂点的我以前习惯用 koa 组合各种三方或自造的组件,来应对框架自带组件不能满足需求需要自己造组件的尴尬场景。

个人认为现在大趋势是 Service Mesh ,也就是说框架会越来越弱化除了业务逻辑以外的部分,那些部分会使用云原生中间件和服务治理架构来解决。
zhennann
2022-09-09 12:30:34 +08:00
如果后端主要是 CRUD+权限,那么可选框架不要太多。如果后端还要做流程审批,那么,java 端选 Activiti ,node 端选 CabloyJS

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

https://www.v2ex.com/t/875641

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

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

© 2021 V2EX