关于LABJS

LABjs语法结构分析

LABjs作为一个非常优秀的JavaScript加载工具,广受欢迎,在解决浏览器兼容性,异步加载,延迟加载对于研究资源加载有非常好的启发,下面是对其源码简单的语法结构分析:

(function({
  (function(global{
    /*
        cache 字符串静态变量 提高压缩率
        */
    /*
        无状态变量 用于所有的LABjs实例
        */
    /*
        浏览器能力检测
        */
    /*
        检测函数
        */    var canonical_uricheck_chain_group_scripts_ready,create_sandboxcreate_script_load_listeneris_arrayis_func,merge_objsrequest_scriptscript_excuted;
    is_func function({};
    is_array function({};
    /*
        url parser
        */
    canonical_uri function({};
    /*
        合并对象属性
        */
    merge_objs function({};
    /*
        功能函数开始
        */
    /*
        检测chain中有预备可执行的script
        */
    check_chain_group_scripts_ready function({};
    /*
        创建script load事件监听
        */
    create_script_load_listener function({};
    /*
        script执行句柄
        */
    script_excuted function({};
    /*
        下载script
        */
    request_script function({};
    /*
        功能函数结束
        */
    /*
        LABjs(sandbox) API开始
        */
    create_sandbox function({
      /*
              chain API开始
              */      var create_chaininstanceAPI;
      create_chain function({
        var chainAPI;
        chainAPI {
          scriptfunction({
            return chainAPI;
          },
          waitfunction({
            return chainAPI;
          }
        };
        /*
                    chain API
                    */
        return {
          scriptchainAPI.script,
          waitchainAPI.wait,
          setOptionsfunction({
            return chainAPI;
          }
        };
      };
      /*
              chain API结束
              */
      /*
              LABjs(sandbox) API
              */
      instanceAPI {
        scriptfunction({
          return create_chain().script.apply(nullarguments);
        },
        waitfunction({
          return create_chain().wait.apply(nullarguments);
        },
        sandboxcreate_sandbox
      };
      return instanceAPI;
    };
    /*
        LABjs(sandbox) API结束
        */
    /*
        生成LABjs(sandbox) API实例$LAB
        */
    global.$LAB create_sandbox();
  })(this);
}).call(this);

coffeescript:

((global)->
    ###
    cache 量 
    ###
    
    ###
    量 的LABjs
    ###
    
    ###
    
    ###
    
    ###
    
    ###
    is_func=->
    is_array=->
    ###
    url parser
    ###
    canonical_uri=->
    ###
    
    ###
    merge_objs=->
    
    ###
    
    ###
    ###
    测chain的script
    ###
    check_chain_group_scripts_ready=->
    ###
    建script load
    ###
    create_script_load_listener=->
    ###
    script
    ###
    script_excuted=->
    ###
    载script
    ###
    request_script=->
    ###
    
    ###
    ###
    LABjs(sandboxAPI
    ###
    create_sandbox=->
        ###
        chain API
        ###
        create_chain=->
            chainAPI={
                script:->
                    chainAPI
                wait:->
                    chainAPI
            }
            ###
            chain API
            ###
            {
                script:chainAPI.script
                wait:chainAPI.wait
                setOptions:->
                    chainAPI
            }
        ###
        chain API
        ###
        ###
        LABjs(sandboxAPI
        ###
        instanceAPI={
            script:->
                create_chain().script.apply null,arguments
            wait:->
                create_chain().wait.apply null,arguments
            sandbox:create_sandbox   
        }
        instanceAPI
    ###
    LABjs(sandboxAPI
    ###
    ###
    成LABjs(sandboxAPI例$LAB
    ###
    global.$LAB=create_sandbox()
    return
@

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值