Yepnope.js是一个超高速的加载器,根据条件异步加载资源,允许你只加载使用过的资源(css和js)。
yepnope.js的一个典型实例:
yepnope({
test : Modernizr.geolocation,
是的:“normal.js”,
否:['polyfill.js ',' wrapper.js']
});
此示例指示如果Modernizr.geolocation为true,则加载normal.js,如果为false,则加载polyfill.js和wrapper.js。
yepnope完整语法:
yepnope([{
Test: /*布尔(ish)输入条件*/,
Yep:/* array(of string)| string-当条件为真时加载的资源*/,
no:/* array(of string)| string-当条件为false时加载的资源*/,
both:/* array(of strings)| string-无论条件是否为真,都会加载该条件*/,
load:/* array(of strings)| string-无论条件是否为真,都将被加载*/,
回调:/*函数(测试结果,key) |对象{key: fn}回调函数*/,
Complete: /* function加载完成后要执行的函数*/
},]);
为什么使用yepnope:
Gzip之后只有1.6K,比大多数资源加载器都小。
可以加载CSS和JS。
Yepnope已经通过了作者能找到的所有浏览器的测试。
Yepnope将资源加载和执行完全分开,这样就可以控制资源的执行顺序。
提供友好的API,促进资源的逻辑组合。
模块化设计,可以自行扩展功能(见后面的前缀和过滤器)
鼓励按需加载资源。
融入现代生活
默认情况下,它总是按照资源列表的顺序(您提供的文件列表的顺序)执行。
可以处理资源回退,并且仍然优先并行下载依赖脚本。通过查看代码更容易理解:
yepnope([
{
load:' http://Ajax . Google APIs . com/Ajax/libs/jquery/1 . 5 . 1/jquery . min . js ',
完成:函数(){
如果(!window.jQuery ) {
Yep nope(' local/jquery . min . js ');
}
}
},
{
load : 'jquery.plugin.js ',
完成:函数(){
jQuery(function () {
jQuery( 'div ')。插件();
});
}
}
]);
而其他加载器可能必须这样处理它:
some loader(' http://Ajax . Google APIs . com/Ajax/libs/jquery/1 . 5 . 1/jquery . min . js ',function(){
如果(!window.jQuery ) {
some loader(' local/jquery . min . js ',' jquery . plugin . js ');
/*注意这一点和yepnope的区别。yepnope加载失败后,只需要重新加载备用资源,不会影响依赖该资源的其他文件的执行*/
}否则{
some loader(' jquery . plugin . js ');
}
});
yepnope的不足
它不总是最快的。经过labjs等优化后,加载速度可能会比yepnope更好,但你需要根据自己的实际情况考虑使用哪种加载器。
为资源设置特定的缓存头是很重要的。
不像RequireJS等类库有自己的生成工具和丰富的API,yepnope只实现了基本的loader功能。
默认情况下,它总是按照您提供的资源列表的顺序执行,这可能会影响速度。
yepnope使用实例:
直接传入字符串
Yep nope('/URL/to/your/script . js ');
传入一个Object对象。
yepnope( {
加载:“/url/to/your/script.js”
} );
回调函数实例(回调函数中的url表示加载的资源文件名;表示resulttest参数的结果;使用键映射时,键表示文件名的缩写)
yepnope( {
测试:窗口。JSON,
load:“/URL/to/your/script . js”,
回调:函数(url,结果,关键字){
//无论何时运行,您的脚本都刚刚执行。
alert( 'script.js已加载!');
}
} );
complete函数实例
yepnope( {
测试:窗口。JSON,
不是:“json2.js”,
完成:函数(){
var数据=窗口。JSON . parse(' { ' JSON ':' string ' } ');
}
} );
Key maping实例
yepnope( {
test : Modernizr.geolocation,
是:{
rstyles' : 'regular-styles.css '
},
不:{
mstyles' : 'modified-styles.css ',
geo poly ':' geolocation-poly fill . js '
},
回调:函数(url,结果,关键字){
if ( key==='地缘政治'){
alert('这是地理定位聚合填充!');
}
}
} );
当然,回调函数你也可以这样写:
yepnope( {
test : Modernizr.geolocation,
是:{
rstyles' : 'regular-styles.css '
},
不:{
mstyles' : 'modified-styles.css ',
geo poly ':' geolocation-poly fill . js '
},
回拨:{
rstyles ':函数(网址,结果,关键字){
警报('这是常规款式!');
},
mstyles ':函数(网址,结果,关键字){
警报('这是修改过的款式!');
},
'地缘政治:函数(网址,结果,关键字){
警报('这是地理定位聚合填充!');
}
},
完成:函数(){
警报('所有内容都已加载到该测试对象中!');
}
} );
yepnope官方提供的3个Prefixes
css!前缀:可以加载任何后缀的文件作为钢性铸铁文件
yepnope( 'css!mystyles.php?version=1532’);
预载!前缀:预加载资源到缓存中,但不执行(下次负荷时候才执行)
yepnope( {
加载:"预加载!' jquery.1.5.0.js ',
回调:函数(网址,结果,关键字){
window.jQuery//未定义
是的没有(jquery。1 .5 .0 .js);
window.jQuery//对象
}
} );
ie!前缀:判断是否工业管理学(工业工程)浏览器(除ie!外,还支持ie5,ie6,ie7,ie8,ie9,iegt5,iegt6,iegt7,iegt8,ielt7,ielt8,及雅思9分这几种前缀)
yepnope({
load: ['normal.js ',' ie6!ie7!ie-patch.js'] //仅ie6或ie7(在修补程序上)
});
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。