首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YepNope -等待直到加载依赖关系

YepNope -等待直到加载依赖关系
EN

Stack Overflow用户
提问于 2013-02-17 17:05:33
回答 1查看 997关注 0票数 2

在ASP.NET主页中,我使用YepNope无条件和异步地加载jQuery (从Google加载本地回退)和一些脚本,这些脚本在站点的所有页面上都使用。在MasterPage中,我在关闭正文标记(以及加载在所有页面上使用的脚本的YepNope脚本下面)之前创建了一个ContentPlaceHolder,用于单个页面上使用的脚本。由于jQuery应该在站点的每个页面上都可用,所以不应该单独地在有特定脚本使用它的页面上加载它。

我遇到的问题是,我不能在加载jQuery的yepnope脚本中使用回调或完成函数,因为这是在MasterPage上,而这些单独的页面脚本仅在页面上使用或添加,但是我需要能够延迟单个页面脚本的执行,直到yepnope (出现在页面脚本之上)已经加载了在其中使用的任何依赖项(例如jQuery)。

我能想到两种选择-

1-使页面上使用的脚本成为外部文件,并使用语法加载该脚本-

代码语言:javascript
复制
yepnope('/url/to/your/script.js'); 

代码语言:javascript
复制
yepnope({ load: '/url/to/your/script.js' });

我不太喜欢这个想法,因为它为几行javascript引入了额外的HTTP请求,不会在任何其他页面上使用。

2-在另一个yepnope测试对象块中再次加载jQuery,使用完整的函数结束页面脚本(调用complete而没有测试似乎会在加载之前立即执行该函数),并依赖以下内容-

我要求一个文件两次,而它只加载一次?根据普遍的需求,在yepnope 1.5+中,我们增加了一个特性,即已经被请求的脚本在第二次被请求时不会被重新执行。当您处理不太复杂的服务器端模板系统时,这可能会有所帮助,而您真正关心的就是您所有的依赖项都可用。

在页面中,我大概可以从Google加载相同版本的jQuery,基于上面的内容实际上不会加载两次,然后将页面脚本加载到从yepnope测试对象的完整函数调用的匿名函数中。

从好的方面来看,这意味着页面不再依赖于从jQuery加载的MasterPage,但负面的是(即使YepNope现在不再加载脚本两次),如果将来在页面中更改版本而不发生相同的情况,我们将加载jQuery的多个版本。从维护的角度来看,我不认为这是一个好主意,特别是假设(我觉得您应该总是这样做),另一个开发人员将是一个进行更改的开发人员。

它看起来也不特别优雅。

总的来说,我几乎肯定会使用第一个选项,但我想知道是否有一种方法可以延迟或推迟页面上的脚本,直到异步加载完成,而且这不能作为加载资源的YepNope测试对象的一部分来完成。

其他开发人员如何处理这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-17 22:05:34

我想出了一个我很喜欢的解决方案。

在MasterPage YepNope测试对象中添加代码-

代码语言:javascript
复制
complete: function() {
                if (window.pageFunctions !== null && typeof (window.pageFunctions) === "function") {
                    window.pageFunctions();
                }
            }

如果我想添加任何依赖于加载在JavaScript中的依赖项的MasterPage代码或函数,我只需将它们包装在一个名为"pageFunctions“的函数中,如下所示-

代码语言:javascript
复制
<script type="text/javascript">
    function pageFunctions() {
        $(document).ready(function () {
            ...
        });
    }
</script>

我仍然对其他(可能更好)的解决方案感兴趣,所以我将把这个问题保留几天。

作为解决方案,我也希望对此发表评论。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14923645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档