4
扩展Knockout的功能时,何时适合使用自定义绑定vs扩展器与使用“fn”的自定义函数?选择一个而不是性能影响?使用自定义绑定,扩展器或自定义函数扩展敲击
扩展Knockout的功能时,何时适合使用自定义绑定vs扩展器与使用“fn”的自定义函数?选择一个而不是性能影响?使用自定义绑定,扩展器或自定义函数扩展敲击
当您尝试完成的功能涉及UI和数据时,您通常会希望选择自定义绑定,因此您需要访问元素并通常需要一些数据来控制对元素执行的操作。
在这一点上,扩展器和.fn
之间确实没有很大的区别。在通过.fn
获得共享功能之前,略微增加了扩展程序。
它通常不是问题,但扩展将只适用于observables和计算observables。如果使用.fn
,则需要将函数添加到ko.subscribable.fn
,以便它们都可用。但是,在某些情况下,您的功能可能仅适用于其中一种,因此使用ko.observable.fn
和ko.computed.fn
将是更好的选择。
我发现扩展.fn
是最干净的语法。如果你确定要返回this
或者新的类型,那么你可以轻松地支持链接。扩展程序更加明确一点,并确保类型的API表面区域保持精简(对于什么值得)。
嗨,@RPNiemeyer。 “你的意思是”扩展器更加明确一点,并确保类型的API表面区域保持精简(值得的值)“。 – 2016-06-06 22:24:49
@David - 扩展器是明确的,你必须调用'.extend'并传递特定的扩展器和数据。你清楚地明白你正在使用扩展器和哪一个。或者,当你更新一个'.fn'对象时,它会使所有实例都可用,这意味着,例如,基于扩展'.fn',可观察对象可能具有各种不同的新方法。 ,这可能会导致混淆(什么是内置的,什么是扩展?)。即使有这样的说法,由于我上面提到的原因,我总是希望扩展'.fn'。 – 2016-06-11 19:27:57