llej 最近的时间轴更新
llej

llej

V2EX 第 451595 号会员,加入于 2019-11-07 10:12:36 +08:00
今日活跃度排名 470
对于依赖注入的思考-二
程序员  •  llej  •  4 小时 51 分钟前  •  最后回复来自 llej
18
对于依赖注入的思考
程序员  •  llej  •  7 小时 12 分钟前  •  最后回复来自 zhuangzhuang1988
21
如何实现一个小体积的 js docker 镜像
  •  2   
    JavaScript  •  llej  •  152 天前  •  最后回复来自 mark2025
    25
    llej 最近回复了
    4 小时 51 分钟前
    回复了 llej 创建的主题 程序员 对于依赖注入的思考-二
    @galenjiang 是的,你描述的比我清晰多了,所以这样最后还是绕回了显式传递参数
    5 小时 22 分钟前
    回复了 llej 创建的主题 程序员 对于依赖注入的思考-二
    @galenjiang 你说的这个异步解决办法是有效的,但这就导致了你的 useConfig 无法被随意组合了,因为组合后又需要像这样包裹一层来调用,等于有了某种传染性
    5 小时 24 分钟前
    回复了 llej 创建的主题 程序员 对于依赖注入的思考-二
    @galenjiang 不是说 useConfig 很难,而是说这样组合起来到处随便用很难,他只能在组件创建的时候用。

    setTimeou 以及请求等异步调用的回掉中是不能使用 inject 的,因为异步执行的时候他没法判断是在那个组件的调用栈中,进而无法找到对应组件树提供的值
    5 小时 59 分钟前
    回复了 llej 创建的主题 程序员 对于依赖注入的思考-二
    @galenjiang 另外 metadata 还有装饰器这些东西我总感觉有点画蛇添足
    6 小时 11 分钟前
    回复了 llej 创建的主题 程序员 对于依赖注入的思考-二
    @galenjiang 你可以看下我 4 楼和八楼的回复,另外你的说法我是认可的
    6 小时 38 分钟前
    回复了 llej 创建的主题 程序员 对于依赖注入的思考-二
    @nomagick 一边玩去吧,你的理解没错,我只是在讨论一些稍有不同的情况
    6 小时 41 分钟前
    回复了 llej 创建的主题 程序员 对于依赖注入的思考-二
    @netabare 嗯,依赖注入其实不是问题,但是想要组合式的使用依赖注入(例如 vue 中定义一个 cont use
    Config=()=>inject("config
    ") 然后随意的在任意地方使用这个 useConfig 都能正确的注入值是很难的,需要 cls 或者代数效应这样的方案
    6 小时 46 分钟前
    回复了 llej 创建的主题 程序员 对于依赖注入的思考-二
    @subframe75361 异步调用这块我之前我忘记写了,正是因为异步这个问题的存在才导致只能使用妥协的办法:传递上下文变量
    6 小时 47 分钟前
    回复了 llej 创建的主题 程序员 对于依赖注入的思考-二
    @subframe75361 没仔细了解过他的实现,猜测应该和 vue 差不多吧,就是在即将执行组件初始化函数之前将上下文设置为一个全局变量,于是组件函数执行的时候就可以获取到那个上下文,问题就是组件函数内异步调用是不行的,例如 vue 组件 setup 模式 中使用 settimeout 延迟过一会再使用 inject() 就会失败,但如果浏览器也支持 cls 的话,就可以实现异步调用也能获取正确的值
    8 小时 11 分钟前
    回复了 llej 创建的主题 程序员 对于依赖注入的思考-二
    @kk2syc 具体是指什么,react 和 vue 他们的 hook ?
    这样是没法解决异步函数调用的问题的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   889 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 16ms · UTC 18:03 · PVG 02:03 · LAX 10:03 · JFK 13:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.