如何停止两次 Knockout 3.2 库加载

How to stop Knockout 3.2 library loading twice

我遇到的问题是

等绑定表达式
<div data-bind="text: $data.Property"></div>

- 其中 Property 是一个可观察的 - 导致显示 knockout 的可观察函数的实际文本,而不是 Property 应该表示的值。这已在此处解决

该问题的原因是加载了重复的基因敲除库文件。 "UPDATE:" 部分和链接的 SO 问题的答案包含一些相关细节。

我现在需要知道如何防止敲除库被加载两次。 强调 loaded 而不是执行。 到目前为止,我还没有找到任何可以完全回答这个问题的东西。

RequireJS:由站点使用,但不由正在调查的页面使用。

SignalR:被页面使用。我对 SignalR 有点陌生,所以我不能说这导致多个负载的可能性有多大。

Ajax:也被使用,但它用于接收JSON数据。

只有 1 个对敲除库的显式引用。

查看网络选项卡,第一个文件是从 IE 的 speculative download 功能加载的。第二个文件来自主解析器。第一个文件下载完整,然后第二个文件下载完整。

我一直没能想出的方法是:

此时可以接受上述解决方案之一。任何人都可以提供见解、建议或知道解决方案吗?

我终于弄明白了。问题是脚本在页面中列出的顺序。 ASP.NET MVC 5 支持可渲染的命名部分。在这种情况下 scripts:

布局-

@RenderSection("scripts", required: false)

Views/Partial 观看次数 -

@section scripts {
    // script includes ...
}

在我的例子中,部分视图不包含 scripts 部分中的脚本,导致它们被预解析器和主解析器 parsed/downloaded。

以正确的顺序将所有脚本添加到 scripts 部分解决了这个问题。顺序由脚本的依赖项决定。