zoukankan      html  css  js  c++  java
  • 我的模块加载系统 v22

    时隔差不多两个月,积累了许多改进,升级到v22。主要改进点如下:

    1. 进行瘦身,移除本地储存
    2. IE6789的HTML5新标签支持列表,添加一个 m标签
    3. loadJS内容方法,在动态插入script节点,发现最新的firefox做了些改动,如果head还没有解析完就插入节点,那么新script会触发onerror事件。补救措施,针对firefox使用html.insertBefore(node, head)。chrome不支持head.insertBefore(node, null),第二参数必须是节点,因此firefox外浏览器统一使用 head.insertBefore(node, head.firstChild)。
    4. getCurrentScript方法进行增强,现在支持对chrome取正在解析的节点,详见源码。如此一来,除safari外,都能立即确认模块ID与script节点的对应关系。
    5. 修正parseURL转"mass.draggable"为url出错的BUG。

    现在详解一下getCurrentScript引入的新hack,利用e.stack截取正在解析的节点的src,从而得到节点。首先随便搞个错误,比如a.b.c()。在opera12的控制台下,我们通过try catch截获的输出如下:

    getCurrentScript([arguments not available])@http://113.93.50.63/mass.js:424
    <anonymous function: $.define>([arguments not available])@http://113.93.50.63/mass.js:606
    @http://113.93.50.63/data.js:4

    chrome为:

    ReferenceError: a is not defined
        at getCurrentScript (http://113.93.50.63/mass.js:403:13)
        at window.define.$.define (http://113.93.50.63/mass.js:585:60)
        at http://113.93.50.63/data.js:4:1

    firefox为

    getCurrentScript@http://113.93.50.63/mass.js:403
    $.define@http://113.93.50.63/mass.js:585
    @http://113.93.50.63/query.js:4

    IE10为

    ReferenceError: “a”未定义
      at getCurrentScript (http://113.93.50.63/mass.js:403:13)
      at define (http://113.93.50.63/mass.js:585:9)
      at Global code (http://113.93.50.63/data.js:4:1)

    因此,我们只要截取最后一个@或at ,与表示行号的数字前的冒号之间的URL就是正在解析的节点的src了。具体实现看文章最后的源码。

    有关我框架的介绍与用法可参看这里(FQ,github)

    加载器的使用可见v19的介绍,纯正的AMD用法,没有什么不同。

    require("ready",function(){
    /*待到domReady完成,执行回调*/
       $.log("将日志打印到页面上",true)
    })

    源码

     
     
     
    标签: mass
  • 相关阅读:
    【Python学习之七】递归——汉诺塔问题的算法理解
    【Python学习之六】高阶函数2(map、reduce、filter、sorted)
    【Python学习之五】高级特性5(切片、迭代、列表生成器、生成器、迭代器)
    【Python学习之五】高级特性4(切片、迭代、列表生成器、生成器、迭代器)
    【Python学习之五】高级特性3(切片、迭代、列表生成器、生成器、迭代器)
    【Python学习之五】高级特性2(切片、迭代、列表生成器、生成器、迭代器)
    【Python学习之五】高级特性1(切片、迭代、列表生成器、生成器、迭代器)
    【Python学习之四】递归与尾递归
    Golang 调度器GPM原理与调度分配
    Mongo索引优化
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2872730.html
Copyright © 2011-2022 走看看