html5中文学习网

您的位置: 首页 > 网站及特效实例 > javascript特效 » 正文

yepnope.js使用详解及示例分享_javascript技巧_

[ ] 已经帮助:人解决问题

yepnope.js的一个典型实例:j9qHTML5中文学习网 - HTML5先行者学习网

yepnope({ test : Modernizr.geolocation, yep : 'normal.js', nope : ['polyfill.js', 'wrapper.js']});

此实例表示如果Modernizr.geolocation为真的时候加载normal.js,为假则加载polyfill.js及wrapper.js。j9qHTML5中文学习网 - HTML5先行者学习网

yepnope完整语法j9qHTML5中文学习网 - HTML5先行者学习网

yepnope([{ test : /* boolean(ish) 输入条件    */, yep : /* array (of strings) | string - 条件为真时加载的资源 */, nope : /* array (of strings) | string - 条件为假时加载的资源 */, both : /* array (of strings) | string - 条件无论真假都加载 */, load : /* array (of strings) | string - 条件无论真假都加载 */, callback : /* function ( testResult, key ) | object { key : fn } 回调函数 */, complete : /* function 加载完成后执行的函数 */}, ... ]);

为什么使用yepnopej9qHTML5中文学习网 - HTML5先行者学习网

Gzip后只有1.6K比大多数的资源加载器都小j9qHTML5中文学习网 - HTML5先行者学习网
可以加载CSS及JSj9qHTML5中文学习网 - HTML5先行者学习网
yepnope通过了作者能找到的所有的浏览器的测试j9qHTML5中文学习网 - HTML5先行者学习网
yepnope完全分离资源加载和执行,这样你可以控制资源的执行顺序j9qHTML5中文学习网 - HTML5先行者学习网
提供友好的API和促进资源的逻辑组合j9qHTML5中文学习网 - HTML5先行者学习网
模块化设计,你可以自己扩充功能(见稍后的Prefixes及filters)j9qHTML5中文学习网 - HTML5先行者学习网
鼓励按需加载资源j9qHTML5中文学习网 - HTML5先行者学习网
集成在 Modernizr 中j9qHTML5中文学习网 - HTML5先行者学习网
默认总是按照资源列表(你所提供的文件列表顺序)顺序执行j9qHTML5中文学习网 - HTML5先行者学习网
可处理资源回退(fallback),且仍优先并行下载依赖的脚本,看下代码更容易理解:j9qHTML5中文学习网 - HTML5先行者学习网

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();   });  } }]);

而其他加载器则可能必须这样处理:j9qHTML5中文学习网 - HTML5先行者学习网

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的不足j9qHTML5中文学习网 - HTML5先行者学习网

并不总是最快的,像labjs等优化后可能加载速度优于yepnope,但需要根据你的实际情况考虑使用哪个加载器j9qHTML5中文学习网 - HTML5先行者学习网
需要给资源设置一定的缓存头(这一点很重要)j9qHTML5中文学习网 - HTML5先行者学习网
并不像RequireJS等类库有自己的生成工具及丰富的API,yepnope仅实现了基本加载器功能j9qHTML5中文学习网 - HTML5先行者学习网
默认总是按照你提供的资源列表顺序执行,这一点有可能会影响速度j9qHTML5中文学习网 - HTML5先行者学习网

yepnope使用实例:j9qHTML5中文学习网 - HTML5先行者学习网

直接传入字符串j9qHTML5中文学习网 - HTML5先行者学习网

yepnope( '/url/to/your/script.js' );

传入一个Object对象j9qHTML5中文学习网 - HTML5先行者学习网

yepnope( {   load : '/url/to/your/script.js'   } );

回调函数实例(回调函数中url表示加载的资源文件名;result表示test参数的结果;key表示使用 key maping 时候的文件名缩写)j9qHTML5中文学习网 - HTML5先行者学习网

yepnope( {  test : window.JSON,  load : '/url/to/your/script.js',  callback : function ( url, result, key ) {   // whenever this runs, your script has just executed.   alert( 'script.js has loaded!' );  } } );

complete函数实例j9qHTML5中文学习网 - HTML5先行者学习网

yepnope( {  test : window.JSON,  nope : 'json2.js',  complete : function () {   var data = window.JSON.parse( '{ "json" : "string" }' );  } } );

Key maping实例j9qHTML5中文学习网 - HTML5先行者学习网

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( 'This is the geolocation polyfill!' );   }  } } );

当然回调函数你还可以这样写:j9qHTML5中文学习网 - HTML5先行者学习网

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( 'This is the regular styles!' );   },   'mstyles' : function ( url, result, key ) {    alert( 'This is the modified styles!' );   },   'geopoly' : function ( url, result, key ) {    alert( 'This is the geolocation polyfill!' );   }  },  complete : function () {   alert( 'Everything has loaded in this test object!' );  } } );

yepnope官方提供的3个Prefixesj9qHTML5中文学习网 - HTML5先行者学习网

css! Prefix:可以加载任何后缀的文件作为css文件j9qHTML5中文学习网 - HTML5先行者学习网

yepnope( 'css!mystyles.php?version=1532' );

preload! Prefix:预加载资源到缓存中,但不执行(下次load时候才执行)j9qHTML5中文学习网 - HTML5先行者学习网

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 }} );

ie! Prefix(es):判断是否IE浏览器(除ie!外,还支持 ie5, ie6, ie7, ie8, ie9, iegt5, iegt6, iegt7, iegt8, ielt7, ielt8, 及 ielt9这几种Prefix)j9qHTML5中文学习网 - HTML5先行者学习网

yepnope({ load: ['normal.js', 'ie6!ie7!ie-patch.js'] // ie6 or ie7 only (on patch)});

j9qHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助