Replies: 1 comment 3 replies
-
不是,为啥贴了前端标签? |
Beta Was this translation helpful? Give feedback.
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hono有点类似express.js,只有路由能力,以及中间件功能。
这种甚至不能称得上框架,只能是一个库,很多功能需要从头造起,其中一个就是依赖注入。例如我们追踪整条请求链路,一般会为每个请求创建唯一id,这个id伴随整个请求周期,而且会经过很多业务代码、函数;如果都要显示传id,十分枯燥、烦琐。
现有依赖注入方式大都通过装饰器注入,装饰器仅在运行时检查,依赖能否注入,需要运行起来才知道;Reader Monad可以认为是编译期的依赖注入,类型安全的依赖注入。
reader可以等价于一元函数:
(r: T) => R
。所谓依赖注入,也就是在r
这个巨大环境变量下操作着业务。这里我用typescript实现了一个简易版的reader monad:
上文的
testHandler
使用helper.bindFrom(getHandler)
,这里不用显式传参给getHandler
就能获取getHandler
的结果。也就是我们通过bindFrom
就能实现依赖调用问题。以上的代码都不需要显示传参,一切都包含在
helper
里,它自动处理了这一切。实现代码:https://github.com/kalxd/lickitung/blob/master/src/lib/reader.ts
Beta Was this translation helpful? Give feedback.
All reactions