Requirejs 具有yepnope的多个条件
我使用yepnope.js作为加载的资源。我只想在加载了JS模块的所有依赖项后,在该模块中执行代码。我不想加载已经加载的JS依赖项 假设我有依赖项D1.js和D2.js。我试过了Requirejs 具有yepnope的多个条件,requirejs,yepnope,labjs,Requirejs,Yepnope,Labjs,我使用yepnope.js作为加载的资源。我只想在加载了JS模块的所有依赖项后,在该模块中执行代码。我不想加载已经加载的JS依赖项 假设我有依赖项D1.js和D2.js。我试过了 yepnope({ load: ['D1.js', 'D2.js], complete: function() { //execute my code here } }); 这是可行的,但是,每次都会加载资源,即使它们以前已经加载过 如果我做了多个这样的测试: yepnope(
yepnope({
load: ['D1.js', 'D2.js],
complete: function() {
//execute my code here
}
});
这是可行的,但是,每次都会加载资源,即使它们以前已经加载过
如果我做了多个这样的测试:
yepnope([{
test: $().d1,
nope: 'D1.js'
},
{
test: $().d2,
nope: 'D2.js'
}]);
现在还不清楚将整个完成的函数放在何处——加载所有资源后运行的函数
是否可以使用yepnope执行此操作,或者是否需要使用其他组件
谢谢。回调将在执行相应的脚本(而不仅仅是加载)后运行。所有脚本都按顺序运行,因此如果您在最后一个对象上放置
回调
或complete
属性,它将最后运行。假设您需要有条件地加载jquery.js、jquery.jgrowl.js和jquery.powertip.js。
您希望以下代码能够正常工作:
yepnope([{
test: typeof(window.jQuery) === 'undefined' ||
jQuery.fn.jquery.match(/^1\.[0-9]+/) < 1.7,
yep: '//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js'
},
{
test: typeof(window.jQuery) === 'undefined'
|| typeof(window.jQuery.fn.jGrowl) === 'undefined',
yep: ['//cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.2.12/jquery.jgrowl.min.js',
'//cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.2.12/jquery.jgrowl.css'],
complete: function() {
console.log('completed loading jGrowl (should fire first, or not at all)');
}
},
{
test: typeof(window.jQuery) === 'undefined'
|| typeof(window.jQuery.fn.powerTip) === 'undefined',
yep: ['//cdnjs.cloudflare.com/ajax/libs/jquery-powertip/1.1.0/jquery.powertip.js',
'//cdnjs.cloudflare.com/ajax/libs/jquery-powertip/1.1.0/jquery.powertip.min.css'],
complete: function() {
console.log('completed loading powertip');
jQuery.jGrowl("Growling!");
}
}
]);
yepnope([{
测试:typeof(window.jQuery)=='undefined'||
jQuery.fn.jQuery.match(/^1\[0-9]+/)<1.7,
是:“//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js”
},
{
测试:typeof(window.jQuery)==“未定义”
||typeof(window.jQuery.fn.jGrowl)==“未定义”,
是:['//cdnjs.cloudflare.com/ajax/libs/jquery jgrowl/1.2.12/jquery.jgrowl.min.js',
“//cdnjs.cloudflare.com/ajax/libs/jquery jgrowl/1.2.12/jquery.jgrowl.css'],
完成:函数(){
日志('已完成加载jGrowl(应首先启动,或根本不启动)';
}
},
{
测试:typeof(window.jQuery)==“未定义”
||typeof(window.jQuery.fn.powerTip)==“未定义”,
是:['//cdnjs.cloudflare.com/ajax/libs/jquery-powertip/1.1.0/jquery.powertip.js',
“//cdnjs.cloudflare.com/ajax/libs/jquery-powertip/1.1.0/jquery.powertip.min.css'],
完成:函数(){
console.log('completed loading powertip');
jQuery.jGrowl(“咆哮!”);
}
}
]);
但是,如果在jquery.powertip.js已加载但jquery.jgrow.js未加载的页面上运行,这将抛出一个错误,因为会立即触发“complete”回调,而不是在加载完所有文件后
下面的fiddle演示了yepnope 1.5.4中的此错误:
还要注意的是,在yepnope的当前主干(主分支)中,这个bug消失了。
它可能与以下票证有关(从未向后移植到1.5.4):
false
,则不会加载脚本。这几乎就是yepnope的全部功能;)——至于load
属性,我们确实进行了一些检查,以避免两次加载脚本,但我不建议构建完全依赖该功能的解决方案,因为您可能会在其他地方迷失方向。