yepnope.js使用详解及示例分享
yepnope.js的一个典型实例:
yepnope({ test:Modernizr.geolocation, yep:"normal.js", nope:["polyfill.js","wrapper.js"] });
此实例表示如果Modernizr.geolocation为真的时候加载normal.js,为假则加载polyfill.js及wrapper.js。
yepnope完整语法:
yepnope([{ test:/*boolean(ish)输入条件*/, yep:/*array(ofstrings)|string-条件为真时加载的资源*/, nope:/*array(ofstrings)|string-条件为假时加载的资源*/, both:/*array(ofstrings)|string-条件无论真假都加载*/, load:/*array(ofstrings)|string-条件无论真假都加载*/, callback:/*function(testResult,key)|object{key:fn}回调函数*/, complete:/*function加载完成后执行的函数*/ },...]);
为什么使用yepnope:
Gzip后只有1.6K比大多数的资源加载器都小
可以加载CSS及JS
yepnope通过了作者能找到的所有的浏览器的测试
yepnope完全分离资源加载和执行,这样你可以控制资源的执行顺序
提供友好的API和促进资源的逻辑组合
模块化设计,你可以自己扩充功能(见稍后的Prefixes及filters)
鼓励按需加载资源
集成在Modernizr中
默认总是按照资源列表(你所提供的文件列表顺序)顺序执行
可处理资源回退(fallback),且仍优先并行下载依赖的脚本,看下代码更容易理解:
yepnope([ { load:"http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js", complete:function(){ if(!window.jQuery){ yepnope("local/jquery.min.js"); } } }, { load:"jquery.plugin.js", complete:function(){ jQuery(function(){ jQuery("div").plugin(); }); } } ]);
而其他加载器则可能必须这样处理:
someLoader("http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js",function(){ if(!window.jQuery){ someLoader("local/jquery.min.js","jquery.plugin.js"); /*注意这点和yepnope的区别,yepnope加载失败后仅需重新加载备用资源即可,不会影响依赖此资源的其他文件执行*/ }else{ someLoader("jquery.plugin.js"); } });
yepnope的不足
并不总是最快的,像labjs等优化后可能加载速度优于yepnope,但需要根据你的实际情况考虑使用哪个加载器
需要给资源设置一定的缓存头(这一点很重要)
并不像RequireJS等类库有自己的生成工具及丰富的API,yepnope仅实现了基本加载器功能
默认总是按照你提供的资源列表顺序执行,这一点有可能会影响速度
yepnope使用实例:
yepnope("/url/to/your/script.js");
yepnope({ load:"/url/to/your/script.js" });
回调函数实例(回调函数中url表示加载的资源文件名;result表示test参数的结果;key表示使用keymaping时候的文件名缩写)
yepnope({ test:window.JSON, load:"/url/to/your/script.js", callback:function(url,result,key){ //wheneverthisruns,yourscripthasjustexecuted. alert("script.jshasloaded!"); } });
complete函数实例
yepnope({ test:window.JSON, nope:"json2.js", complete:function(){ vardata=window.JSON.parse("{"json":"string"}"); } });
Keymaping实例
yepnope({ test:Modernizr.geolocation, yep:{ "rstyles":"regular-styles.css" }, nope:{ "mstyles":"modified-styles.css", "geopoly":"geolocation-polyfill.js" }, callback:function(url,result,key){ if(key==="geopoly"){ alert("Thisisthegeolocationpolyfill!"); } } });
当然回调函数你还可以这样写:
yepnope({ test:Modernizr.geolocation, yep:{ "rstyles":"regular-styles.css" }, nope:{ "mstyles":"modified-styles.css", "geopoly":"geolocation-polyfill.js" }, callback:{ "rstyles":function(url,result,key){ alert("Thisistheregularstyles!"); }, "mstyles":function(url,result,key){ alert("Thisisthemodifiedstyles!"); }, "geopoly":function(url,result,key){ alert("Thisisthegeolocationpolyfill!"); } }, complete:function(){ alert("Everythinghasloadedinthistestobject!"); } });
yepnope官方提供的3个Prefixes
yepnope("css!mystyles.php?version=1532");
yepnope({ load:"preload!jquery.1.5.0.js", callback:function(url,result,key){ window.jQuery;//undefined yepnope(jquery.1.5.0.js); window.jQuery;//object } });
yepnope({ load:["normal.js","ie6!ie7!ie-patch.js"]//ie6orie7only(onpatch) });
相关文章
- js Date 使用详解[通俗易懂]
- 【说站】js中this的使用场景
- 前端开发之mock.js使用——前后端分离,生成随机数据
- JS实现将人民币数字转换成大写形式详解编程语言
- js文件中使用el表达式问题详解编程语言
- 使用js加载器动态加载外部Javascript文件详解编程语言
- 建立一个node.js服务器(使用express搭建第一个Web环境)详解编程语言
- 使用html+css+js实现魔性的舞蹈详解编程语言
- 使用html+css+js实现日历与定时器,看看今天的日期和今天剩余的时间。详解编程语言
- JS判断字符串是否包含某字符串 indexOf()方法使用详解编程语言
- Headroom.js插件使用方法详解编程语言
- Java-使用js进行编码,后台解码。详解编程语言
- Node.js在Linux上的部署与使用(nodelinux部署)
- 使用Node.js高效连接MySQL(nodejs连接mysql)
- 使用JS操作MySQL数据库(jsmysql数据库)
- nodejs使用Node.js优雅地整合MongoDB(mongodb整合)
- Oracle中使用JS变量管理数据(oracle使用js变量)
- js正则使用方法
- js中{},[]中括号,大括号使用详解
- js正则表达式的使用详解
- js使用eval解析json(js中使用json)
- js使用递归解析xml
- 使用原生JS实现弹出层特效
- Node.js中使用事件发射器模式实现事件绑定详解
- Node.js中使用Buffer编码、解码二进制数据详解