现在又是函数当道的时代,我就干脆写了一个完全不碰装饰器、不搞反射、不搞 token 注册,只用函数和“引用”来做依赖注入的库。
目前在公司几个 bun 项目里已经跑了一阵子,感觉还挺顺手。思路有点像 Go 里的 wire —— JS 生态里用代码生成来做依赖注入的比较少,主要还是 Go 那边玩得多。我当时就是看 wire 生成的那些注入样板代码时,突然有了点灵感。
在这之前,我做 DDD 的时候是完全不用 DI 库、全靠手动注入的,结果光是各种组装和传参就写了七八百行,写到后面整个人都麻了(谁说 JS 不需要依赖注入的?)。最后索性把这套思路实现成了现在这个简单的 IoC 。
https://github.com/MunMunMiao/dn-ioc
然后用 AI 翻译了一版 go 版本的,还没在正式项目用上,等以后有机会吧
https://github.com/MunMunMiao/go-ioc

