the KnockoutJS library是否依赖于全局ko
对象以外的任何全局状态?或者是否有时间可以从javascript环境的全局状态(即浏览器中的window.
对象)添加/减去其他项目
我问,因为我正在创建一个将部署到网站/ CMS环境中的软件。我希望这个软件是自包含的,而不是依赖外部CDN资源。我想在这个软件中使用KnockoutJS,并确保我使用KnockoutJS不会与网站/ CMS环境使用的任何KnockoutJS实例冲突。我不想有条件地加载外部KnockoutJS资源,因为我想确保Knockout my 软件的版本正在运行我认为它是什么。
我对jQuery有类似的要求 - 我知道我通过修改jQuery库来导出不同的全局变量来实现这一点 - 即var myJquery=...
。我想用Knockout的ko
变量做同样的事情 - 但是如果KnockoutJS依赖于全局状态,那么这将无法正常工作。
答案 0 :(得分:3)
KnockoutJS库是否依赖于全局ko对象以外的任何全局状态?
几乎没有。除了我知道的ko
到window
之外,还有两点:
但KO不会修改 window.jQuery
(除了添加window
)在任何地方,AFAIK。
我想在这个软件中使用KnockoutJS,并确保我使用KnockoutJS不会与网站/ CMS环境正在使用的任何KnockoutJS实例发生冲突。
这是另一个问题。让应用程序的多个部分都使用KnockoutJS而不了解彼此有两个主要问题:
ko
上运行ko.applyBindings
,因此任何想要使用不同版本的KO处理其部分DOM的插件都会出现问题。这里不可能提供通用建议,这一切都归结为背景和细节。body
。虽然应该有解决方法,但您可能需要深入研究KO's source code。基本上,你在最后一段中提到了这一点。