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
Uh oh!
There was an error while loading. Please reload this page.
-
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