• 自定义异步加载资源插件


    /* 已加载文件缓存列表,用于判断文件是否已加载过,若已加载则不再次加载*/
    var classcodes =[];
    window.Import={
        /*加载一批文件,_files:文件路径数组,可包括js,css,less文件,succes:加载成功回调函数*/
        LoadFileList:function(_files,succes){
            var FileArray=[];
            if(typeof _files==="object"){
                FileArray=_files;
            }else{
                /*如果文件列表是字符串,则用,切分成数组*/
                if(typeof _files==="string"){
                    FileArray=_files.split(",");
                }
            }
            if(FileArray!=null && FileArray.length>0){
                var LoadedCount=0;
                for(var i=0;i< FileArray.length;i++){
                    loadFile(FileArray[i],function(){
                        LoadedCount++;
                        if(LoadedCount==FileArray.length){
                            succes();
                        }
                    })
                }
            }
            /*加载JS文件,url:文件路径,success:加载成功回调函数*/
            function loadFile(url, success) {
                if (!FileIsExt(classcodes,url)) {
                    var ThisType=GetFileType(url);
                    var fileObj=null;
                    if(ThisType==".js"){
                        fileObj=document.createElement('script');
                        fileObj.src = url;
                    }else if(ThisType==".css"){
                        fileObj=document.createElement('link');
                        fileObj.href = url;
                        fileObj.type = "text/css";
                        fileObj.rel="stylesheet";
                    }else if(ThisType==".less"){
                        fileObj=document.createElement('link');
                        fileObj.href = url;
                        fileObj.type = "text/css";
                        fileObj.rel="stylesheet/less";
                    }
                    success = success || function(){};
                    fileObj.onload = fileObj.onreadystatechange = function() {
                        if (!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {
                            success();
                            classcodes.push(url)
                        }
                    }
                    document.getElementsByTagName('head')[0].appendChild(fileObj);
                }else{
                    success();
                }
            }
            /*获取文件类型,后缀名,小写*/
            function GetFileType(url){
                if(url!=null && url.length>0){
                    return url.substr(url.lastIndexOf(".")).toLowerCase();
                }
                return "";
            }
            /*文件是否已加载*/
            function FileIsExt(FileArray,_url){
                if(FileArray!=null && FileArray.length>0){
                    var len =FileArray.length;
                    for (var i = 0; i < len; i++) {
                        if (FileArray[i] ==_url) {
                            return true;
                        }
                    }
                }
                return false;
            }
        }
    };
    var FilesArray=["./jquery-3.2.1.js"];
    Import.LoadFileList(FilesArray,function(){
        /*这里写加载完成后需要执行的代码或方法*/
        Import.LoadFileList(['./index.js'],function () {
            
        })
    });
    

      

  • 相关阅读:
    ES各种错误解决
    ES 父子文档查询
    logstash jdbc 各种数据库配置
    ruby 疑难点之—— attr_accessor attr_reader attr_writer
    ruby 疑难点之—— yield 和 yield self
    aggregation 详解2(metrics aggregations)
    logstash multiline 把文件处理为单个 event
    aggregation 详解4(pipeline aggregations)
    aggregation 详解3(bucket aggregation)
    C++内存字节对齐规则
  • 原文地址:https://www.cnblogs.com/webSong/p/7397395.html
Copyright © 2020-2023  润新知