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

});

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 关于js中的全等和不全等,等于和不等于问题的关系,,关于JS中的全等和不全等、等于和不等于问题
  • Vue项目启动,nodejs启动vue项目,如何启动一个Vue.js项目
  • vue双向绑定和单向绑定,vue.js 双向绑定,Vue双向绑定详解
  • vue事件修饰符和按键修饰符,vue事件绑定修饰符都有哪些,Vue.js 事件修饰符的使用教程
  • vue中-model的作用,Vue中的v-model指令的作用是-,vue.js 实现v-model与{{}}指令方法
  • vue2.0双向绑定原理,vue.js 双向绑定
  • vue2.0双向绑定原理,vue.js 双向绑定,深入理解vue.js双向绑定的实现原理
  • vue.js路由跳转,vue-router路由跳转,Vue路由跳转的4种方式小结
  • vue.js打包,vue前端如何打包,详解Vue项目的打包方式
  • vue.js前后端分离,vue前后端分离web项目,Vue之前端体系与前后端分离详解
  • vue.js 遍历数组,vue中遍历数组中的一个对象中的值
  • vue.js 遍历数组,vue中遍历数组中的一个对象中的值,Vue中遍历数组的新方法实例详解
  • UglifyJsPlugin,,Uglifyjs(JS代码优化工具)入门 安装使用
  • seajs教程,seajs还有人用吗,Sea.JS知识总结
  • require的用法js,require.js
  • 留言与评论(共有 条评论)
       
    验证码: