Saturday, September 22, 2012

[JS] Optimize yepnope resource loader

My script for increase performance of using yepnope resource loader.

source code
var resourcer={
    timeout:1000,
    load:function(name,callback){
        resourcer[name](name,callback);
    },
    callback:function(test,name,callback){  // test=test script is loaded
        if(typeof(callback)=='function'){
            if(!testsetTimeout(function(){resourcer.load(name,callback)},resourcer.timeout);
            else callback();
        }
    },
    'respond':function(name,callback){
        yepnope({
            test:!Modernizr.mq('only all'),  // you need Modernizr js in case check is support some features or write by yourself.
            yep:'respond.min.js',
            complete:function(){
                resourcer.callback(window.respond,name,callback);
            }
        });
    },
    'PIE':function(name,callback){
        yepnope({
            test:!!$.browser.msie && parseFloat($.browser.version)<9,  // browser checking (using jquery)
            yep:['PIE.js','PIE.dynamic.js'],
            complete:function(){
                resourcer.callback(window.PIE,name,callback);
            }
        });
    },
    'facebook':function(name,callback){
        yepnope({
            load:'//connect.facebook.net/en_US/all.js',
            complete:function(){
                resourcer.callback(window.FB,name,callback);
            }
        });
    }
};

example
resourcer.load('respond');
resourcer.load('PIE');
resourcer.load('facebook',function(){
    FB.init(....);
});

note: if anyone use & found problem please post to let's me know, thanks.

No comments:

Post a Comment