0

我有一个 MVC 页面,其中包含许多 JavaScript 依赖项,我们称它们为depend-A 和depend-B,其中depend-B 依赖于depend-A。这些都包含在页面上包含的 MVC 中的不同包中。在通过 Google 的 pagespeed 工具运行它后,它建议我们应该异步包含 JS 以防止渲染阻塞。

由于依赖关系,它们需要按特定顺序加载,因此我研究了利用 LABJS 以正确的顺序异步加载它们,以防止渲染阻塞。

这可以通过包含捆绑包的 URL 来实现,但我无法在开发时在本地拥有 JS 文件的调试版本。

任何人都可以提出解决这个问题的方法,以便我们可以异步加载 JS 文件,但为了在本地维护调试版本?

这是我目前正在使用的。

<script src="~/Scripts/LAB.min.js"></script>
<script>
    $LAB
    .script("@Scripts.Url("~/bundles/jquery")").wait()
    .script("/scripts/fileone.js").wait()
    .script("/scripts/filetwo.js").wait(function() {
        FunctionInFileTwo();
    });
</script>

上面代码的页面源码如下。

<script src="/Scripts/LAB.min.js"></script>
<script>
    $LAB
    .script("/bundles/jquery?v=GnU3whLS74nHNYUsUJjcWJKdXvKBNbFqBrkQVKSNlKc1").wait()
    .script("/scripts/scripts/fileone.js").wait()
    .script("/scripts/scripts/filetwo.js").wait(function() {
        FunctionInFileTwo();
    });
</script>
4

1 回答 1

0

看起来没有任何干净的 API 可用于此。

Scripts.Render("~/bundles/yourbundle")返回一个IHtmlString必要的脚本标签 - 您可以创建一个从该字符串中清除脚本 src 并生成正确$LAB调用的方法。

Scripts.Manager.RenderExplicit(tagFormat, paths)接近了,您只需将更好的格式字符串作为第一个参数传递,但读取代码看起来它可以开始在列表中间逐字包含不同格式的脚本标签。

于 2016-09-13T13:11:48.903 回答