正在写个项目, 模块一多心智负担较大.
略微吐槽一下,简直是现实版茴字有几种写法.
1.把中间件拆成 Middleware,Guards,Interceptors,Exception,Pipes, 并且他们都能获取请求上下文(Request, Response), 并且有不同的顺序, 但同类别内也有顺序, 并且生命周期是如此的繁琐.
https://docs.nestjs.com/faq/request-lifecycle
2.封装一个三方 API 花样太多了.
单独的 Service, Providers, Dynamic Module, ConfigurableModuleClass
这里面还有分 Sync 和 Async 导入, Global 模块.
3.模块系统是 Angular 那一套, 注册繁琐, 还会出现循环依赖.
心智负担比 Spring Boot 高太多了.
JS 的后端框架不像前端那样卷, 真希望能出个好用的.
![]() |
1
gaobh 9 天前
建议直接让 cursor 给你写哈哈
|
![]() |
2
SoyaDokio 9 天前
刚接触前段框架这一套,给我的感觉就是前端框架的写法太多太灵活,上手虽然没那么难,但搞懂真挺麻烦的。
|
![]() |
3
workg 9 天前
我感觉这种架构面向的是大型项目。平常 crud express 足够了
|
4
hefish 9 天前
op ,你还上不上 next.js , 客户等着交付呢。。。赶紧的。
|
![]() |
5
JiRouWaZi 9 天前
expressjs 公司内部定制一下 , 够了,在上个请求并发分流 全局 session , 其他看什么加什么得了 短小有力
|
8
andrew2558 9 天前
同感,感觉 next.js 太复杂,但又没有好的支持服务器渲染和静态生成的库。
|
![]() |
9
me1onsoda 9 天前 via Android
是啊,我就无法理解,JS 这么牛逼的语言,一个后端框架怎么就不能根据装饰器自动注册,非要手动 import
|
![]() |
11
jsq2627 9 天前 ![]() Nest.js 是用在大型后端项目上的,比如几十个人在同一个仓库上迭代,屎山要堆也堆在各自的 module / provider / controller 里面。
或者是做乙方,同样的产品针对不同的甲方要搞不同的定制化,这时候 nestjs 的 DI 就非常好用。 |
![]() |
12
chiaf 9 天前 via iPhone
@andrew2558
nest 非 next 😆 |
13
meteor957 9 天前
koa 完全够了
|
![]() |
14
wu67 9 天前 ![]() 要么 express, 要么 koa, 有心思搞 nest 那套我干嘛不上 Java 呢....
|
![]() |
15
IvanLi127 9 天前
我觉得挺好用的,不是小微项目,用这套挺舒服的。如果小项目并且只对数据库包一层逻辑,那就是过度抽象,得换其他的了。
要怪得怪做选型的失误或乱搞,Nest.js 没啥问题。 轻量的上 hono.js 或 fastify.js 吧,如果只有 web 端,上 trpc 做全栈更香。 |
16
DINGONE 9 天前 via iPhone ![]() spring boot 人称小 Nest.js
|
![]() |
17
easychen 9 天前
可以试试 AdonisJS
|
18
andrew2558 9 天前
@chiaf 尴尬了
|
![]() |
19
zhw2590582 9 天前 ![]() express 含金量并未下降
|
![]() |
20
Rust2015 9 天前
nest.js 难,那 spring boot 整合 vue ,那不是难的没边
|
![]() |
21
foru17 9 天前
我是前端出身,最近的两个大型项目后端都是用 NestJS 写了,符合工程化的选型,基础业务框架写好了,后面再写各种模块方便。就是互相依赖这个处理起来有点不爽。
|
![]() |
22
linshenqi 9 天前
我看成了 next.js
|
23
3085570450tt 9 天前
@easychen 这个框架真的不错,我试了 egg,express,koa 等等,最终选择了这个
|
24
Cbdy 9 天前
|
![]() |
25
shuimugan 9 天前
Nestjs 封装是有点过度了,既然是 TypeScript 这种语言加上 Node 的 runtime ,很多东西是可以做减法的。
我用的时候就做了很多减法,比如: service 全部用 static 函数,就不需要注入了,要 mock 直接 class.method = function(){},要是非 static 的就 class.prototype.method 重新赋值来覆盖; Providers 直接不用,官方案例简直是神经病连 HttpClient 都封装一层,它以为自己在用.NET 上吗,还不如开个文件在里面定义个常量然后导出,不也是全局唯一的吗; Guards 也放弃,哪来那么多策略,直接在 Middleware 里简单鉴权就行了,复杂的我宁愿单独写一个 api 网关; Modules 只拿来做业务模块区分,里面只引入控制器; 现在,我直接换 hono 了,搞个 module 文件夹自己分层就好了 |
![]() |
26
SingeeKing 9 天前
nest 确实有点过度封装
但是按照 IoC 思想的,似乎也只有它? |
![]() |
27
Akagi201 9 天前 ![]() 不喜欢 spring boot 的人同样不会喜欢 nest.
我自己 node.js 项目不会太复杂, 复杂项目会直接用 rust 来写, 为啥要用 node.js 写复杂后端项目啊. 逻辑是一样的, 我从来没用过 DI 这种东西. 现在的趋势(以及我个人一直的偏好)是简单化, 就像做 agent 开发, 不用 langchain, 直接用最简单的抽象, 基于 api 进行调用. 另外, 后端新手上来就用 nest 绝对不好, 绝对会让他觉得后端很难的印象. 其实很多抽象, 概念都没必要. 直接根据业务写代码即可. 我之前用 hono + bun 写了一个服务, 可以参考 https://github.com/Akagi201/hono-template |
![]() |
28
sagaxu 9 天前
你就说新不新吧
next nest 之后,下一个 hono? |
29
ghking6 9 天前
试试 midway 吧,和 Nest.js 定位一样,国产的,还是喜欢国人的审美,简单优雅,就像 vue 之与 react 一样。
|
![]() |
30
subframe75361 9 天前
Bun + Elysia ,写着挺爽的
|
31
DICK23 9 天前
bun+hono+zod+drizzle,一套从 model 定义到前端 api 调用都能完全类型提示。活的太累了,就需要 hono 这类工具来解放自己。
|
![]() |
32
amlee 9 天前
写小项目就用 epxress.js 或者新的 hono.js 一把梭。
写大项目后端别用 js 了 |
33
dayeye2006199 9 天前 via Android
这么写为啥用 js 呢…回去 java 不好吗
|
![]() |
34
zhangk23 9 天前
我有幸参加过三个月左右的 nestjs+angular 的项目,然后润了
评价为若至技术栈,又臭又长,纯骗经费用的 |
![]() |
35
xiaoshan5733 9 天前 ![]() 我也用不习惯 nestjs ,最后选了小巧的 fastify
|
![]() |
36
kenberkeley 9 天前 via iPhone ![]() 所以我用了轻量版的 routing-controllers ,一样的 declarator-based 语法,但没有了那些用不上的概念。
|
37
doujiangjiyaozha 9 天前
之前就听说 nestjs 的大名,折腾了下想丢到生产环境用用,配 docker,配数据库,配日志等等,用空余时间花了一个多星期,
对于前端来讲真的学习成本太高了,还有一堆规则,有这时间多摸下鱼不香吗😏 后面自己的项目果断 express,配合 serverless,直接写业务逻辑 |
![]() |
39
doommm 9 天前 ![]() @kenberkeley declarator-based ? decorator-based ?
|
![]() |
40
nl101531 8 天前 via iPhone
讨厌 Java ,理解 Java ,成为 Spring
|
![]() |
41
kenberkeley 8 天前 via iPhone
@doujiangjiyaozha 都上 Serverless 了还用 Express 😂
|
![]() |
42
yolio2003 8 天前
非常同意 next.js 太复杂的看法 水平有点菜 但是这是前端最火框架了。。。
|
![]() |
43
epiloguess 8 天前 ![]() 不想恶意攻击,但是评论区很多把 nestjs 看成 nextjs 的真的难绷,名字看错了就算了,内容也不看?
|
44
mark2025 8 天前
@me1onsoda 所有导入都显示声明好处是方便管理。如果想简单点(又不至于 express 那种简陋)、支持自动扫描可以试试国产的 midway.js
https://midwayjs.org/ or https://beta.midwayjs.org/ |
![]() |
45
thonatos 8 天前
|
![]() |
46
weixiangzhe 7 天前
fastify 感觉够使了
|
![]() |
47
funnyecho 7 天前
确实复杂度高,虽然每一层都是有意义的封装~
感觉,上手的时候只管 svc 层,后面发现需要 inject 啥的,逐步接触,慢慢堆会好一点。 项目开始一下子要完成层次划分、或者说让团队每个人都明白这种分层,就难搞一点了。 |
![]() |
48
TimPeake 7 天前
小项目 国产框架就够了.....之前用 egg.js 感觉挺好使的。
|
![]() |
49
jiangzm 7 天前
midwayjs
|
50
victimsss 7 天前
nestjs 还能接受 ,但是混用应用有点恶心
|
![]() |
51
DingJZ 7 天前
今年终于跳出 node ,用 ror 写了一个项目,太舒服了
|
52
gengjiawen 7 天前
试试 blitzjs ,我用了一年多,个人很满意,比较接近 ruby on rails
|
53
hwlv 6 天前
@doujiangjiyaozha express 怎么配合 serverless 用呢,可以分享下吗
|
![]() |
54
shellus 6 天前
Nest.js 确实是个很复杂的框架,简直是故意让人头疼。要我说,这么多中间件、服务、模块系统,真是折腾。为了封装个 API 竟然还要搞那么多花样,搞得像在玩魔方。还要弄不同的导入方式,真是让人抓狂。用这个框架不仅心智负担大,还得时刻提防循环依赖,简直是恶梦。
那些说它适合大型项目的,搞笑吧,Express 或者 Koa 都能轻松搞定,还需要用这种繁琐的框架吗?想要搞出个好用的后端框架,别学 Angular 那一套,把事情复杂化,只会让人更反感。 有这心思不如直接用 Java ,Spring Boot 起码还不至于这么折磨人。后端框架本来就不应该那么卷,搞得好像我们开发者是受虐狂一样。找个简单高效的用就行了,Nest.js 这种复杂的玩意儿,还是留给那些喜欢折腾的人吧。 |
![]() |
55
dreamerblue 6 天前
它受 ng 思想影( du )响( hai )很深,基于 Ng Style Module 的底层设计限制了很多东西,也让不少能力只能以 Module 补丁的形式打上去,变得异常复杂。我在公司的业务和个人项目还在用几年前写的框架 bwcxjs ,算是带了 DI 的声明式 Koa ,轻量小巧,多数时候够用。
|
![]() |
56
dudubaba 6 天前
是繁琐了些,但是个人觉得是最规范的针对前端 er 的后端框架,没有之一。
|
![]() |
57
Belmode 4 天前
nestjs 提供的开箱即用的东西太丰富了,到目前为止我还没有发现有哪个 JS 相关平台的 web 框架,能有 nestjs 做的这么细的。
绝大部分开发场景需要的依赖都有适配到,也兼容自身的 ts 类型系统做了 adapter ,我觉得还是挺友好的。 |
58
skkakaka2 1 天前
虽然但是,有些人连 nextjs nestjs 都搞不清楚分别是做什么的就开始吐槽了,其水平可见一斑
|