为什么不用koa
多数新兴node.js框架都是基于koa,不得不承认它十分优秀。至于为什么不直接使用,有如下原因:
1. context委托太杂
对于刚接触koa的新手来说,路由中使用的context包含了各种来自request
和response
的属性和方法,如ctx.type
,ctx.set
,ctx.get
等一堆快捷操作。属性多,又爱使用简写,不熟练的开发者很难快速搞清楚它们的作用以及隶属于req还是res
2. 类型提示不完善
虽然koa本身提供了@types/koa
的库,但是对于中间件就无能为力了。挂载中间件后,context并不能提示出中间件提供的额外能力,以至于开发时很容易写错方法名和参数。部分中间件选择在全局向context注入类型,但其实这样很不好,因为即使你在某个路由中没有挂载这个中间件,也依然会有提示
3. 缺乏终端能力
koa目前只能使用在编写api的场景,但如果你有一些cli的操作或者定时任务,就不得不集成第三方库。第三方库很难与koa完美融合,以至于一些逻辑没法复用,维护成本也更大
为什么不用nest.js
nest算是一个很火的框架,拥有丰富的功能。至于为什么不直接使用,有如下原因:
1. 装饰器太多
nest太依赖这玩意了,基本处于无装饰器不编程
的状态。合理地使用装饰器可以让代码变得简洁,但是有一堆装饰器出现在某个方法上,对我而言就是灾难。装饰器的一个致命缺陷是没有类型提示,以及它还不是正式特性。
2. 设计模式太重
源自Java的Spring
框架,看起来也像前端的Angular
框架,有一种你不懂设计模式那你就是废物的感觉。有这写模板代码的功夫,还不如直接上Java了。
3. 概念太多
filters, guards, interceptors, pipes... 抱歉真的学不动了