JS模块加载器,媲美sea.js

我比较追求简单的代码实现复杂的效果,平时和工作中的代码编写风格尽量做到一行搞定绝对不用两行,之前了解过一些模块加载器,其实无非就是动态添加一些css、js引入,于是乎写了一个很简单好用的模块加载器,同样实现了这样的效果分享给大家:

<script>
//载入模块
function use(module, callback, charset){
    var i = 0, head = document.getElementsByTagName('head')[0];
    var module = module.replace(/\s/g, '');
    var iscss = /\.css$/.test(module);
    var node = document.createElement(iscss ? 'link' : 'script');
    var id = module.replace(/\.|\//g, '');
    if(iscss){
        node.type = 'text/css';
        node.rel = 'stylesheet';
    }
    if(charset){
        node.setAttribute("charset",charset);
    }
    node[iscss ? 'href' : 'src'] = /^http:\/\//.test(module) ? module : module;
    node.id = id;
    if(!document.getElementById(id)){
        head.appendChild(node);
    }
    if(callback){
//        if(document.all){
//            $(node).ready(callback);
//        } else {
//            $(node).load(callback);
//        }
         if (node.readyState){
            node.onreadystatechange = function(){
                if(node.readyState == "loaded" || node.readyState == "complete"){
                    node.onreadystatechange = null;
                    callback();
                }
            };
        }
        else {
            node.onload = function(){
                callback();
            };
        }
    }
}
use('http://cdn.loveqiao.com/jquery.js',function(){
    $('body').css('background','#fdf').append('jQuery加载成功...');
    use('http://www.loveqiao.com/css/public.css',function(){
        $('body').append('<br>css加载成功...')
    },'utf-8')

},'utf-8')
</script>

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>