yepnope.js使用详解及示例分享

yepnope.js使用详解及示例分享

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(在修补程序上)

});

yepnope.js使用详解及示例分享