gpt4 book ai didi

javascript - KnockoutJS 是 "global safe"吗?

转载 作者:行者123 更新时间:2023-11-28 18:31:33 30 4
gpt4 key购买 nike

the KnockoutJS library依赖于全局 ko 对象之外的任何全局状态吗?或者有时它可能会从 javascript 环境的全局状态(即浏览器中的 window. 对象)添加/删除其他项目

我这么问是因为我正在创建一个将部署到网站/CMS 环境中的软件。我希望该软件是独立的,而不依赖外部 CDN 资源。我想在这个软件中使用 KnockoutJS,并确保我对 KnockoutJS 的使用不会与网站/CMS 环境正在使用的 KnockoutJS 的任何实例发生冲突。我不想有条件地加载外部 KnockoutJS 资源,因为我想确保正在运行的 Knockout 软件的版本是我认为的版本。

我对 jQuery 有类似的要求 - 我知道我通过修改 jQuery 库以导出不同的全局变量来实现这一点 - 即 var myJquery=...。我想对 Knockout 的 ko 变量做同样的事情——但是如果 KnockoutJS 依赖于全局状态,那么这将无法正常工作。

最佳答案

Does the KnockoutJS library rely on any global state other than the global ko object?

几乎没有。除了导出就只剩下两点kowindow据我所知:

  1. 在一些地方,它会检查(最低版本)window.jQuery 是否存在。并在内置功能上使用它。
  2. 在某些地方(例如 the component default loader ),它会检查 require 库是否存在并使用它们(以与库无关的方式)。

但是 KO 不会修改 window (除了添加 ko )在任何地方,据我所知。

I'd like to use KnockoutJS in this piece of software, and ensure my use of KnockoutJS doesn't conflict with any instances of KnockoutJS the web site/CMS environments are using.

那是另一个问题了。让应用程序的多个部分都使用 KnockoutJS 而彼此不了解有两个主要问题:

  1. 共享 DOM,但它们可能会发生冲突。最简单的例子是 CMS 可能运行 ko.applyBindings关于body ,因此任何想要使用不同版本的 KO 处理其 DOM 部分的插件都会遇到问题。在这里不可能给出一般性建议,这一切都取决于上下文和具体情况。
  2. 正在加载两个单独版本的 Knockout。显然,如果您什么都不做,加载的第二个版本将覆盖 window.ko 。不过,应该有解决方法,但您可能必须深入研究 KO's source code 。基本上,您在最后一段中提到了这一点。

关于javascript - KnockoutJS 是 "global safe"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37900814/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com