亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Lab.js初次使用筆記

2019-11-20 13:05:11
字體:
來源:轉載
供稿:網友

動態加載JS函數

一般性的,當我們需要加載js文件的時候都會使用script標簽來實現,類似于如下代碼:

復制代碼 代碼如下:

<script type="text/javascript" src="example.js"></script>

但是直接使用script標簽來加載js文件會有如下一些缺點:

1.嚴格的讀取順序。由于瀏覽器按照<script>在網頁中出現的順序,讀取Javascript文件,然后立即運行,導致在多個文件互相依賴的情況下,依賴性最小的文件必須放在最前面,依賴性最大的文件必須放在最后面,否則代碼會報錯。

2.性能問題。瀏覽器采用"同步模式"加載<script>標簽,也就是說,頁面會"堵塞"(blocking),等待javascript文件加載完成,然后再運行后面的HTML代碼。當存在多個<script>標簽時,瀏覽器無法同時讀取,必須讀取完一個再去讀取另一個,造成讀取時間大大延長,頁面響應緩慢。

這個時候我們就會想到去動態加載JS,動態加載js的實現方法類似于如下代碼

復制代碼 代碼如下:

/*
*@desc:動態添加script
*@param src:加載的js文件的地址
*@param callback:js文件加載完成之后需要調用的回調函數
*@demo:
addDynamicStyle('http://webresource.c-ctrip.com/code/cquery/LABjs/LAB.js', function () {
    alert('攜程服務器上的lab.js加載完成')
});
*/
function addDynamicJS(src, callback) {
    var script = document.createElement("script");
    script.setAttribute("type", "text/javascript");
    script.src = src[i];
    script.charset = 'gb2312';
    document.body.appendChild(script);
    if (callback != undefined) {
        script.onload = function () {
            callback();
        }
    }
}

這樣不會造成頁面堵塞,但會造成另外一個問題:這樣加載的Javascript文件,不在原始的DOM結構之中,因此在DOM-ready(DOMContentLoaded)事件和window.onload事件中指定的回調函數對它無效。

這個時候我們就會想到用一些外部函數庫來有效的管理JS加載問題。

下面進入正題說說LAB.js

LAB.js

如果我們使用傳統的方法來加載js的話,寫的代碼一般會如下方代碼所示風格。

復制代碼 代碼如下:

<script src="aaa.js"></script>
    <script src="bbb-a.js"></script>
    <script src="bbb-b.js"></script>
    <script type="text/javascript">
        initAaa();
        initBbb();
    </script>
    <script src="ccc.js"></script>
    <script type="text/javascript">
        initCcc();
    </script>

如果我們使用LAB.js的話,要實現上述代碼功能,則使用如下方式

復制代碼 代碼如下:

<!--先加載lab.js庫-->
    <script src="http://webresource.c-ctrip.com/code/cquery/LABjs/LAB.js"></script>
    <script type="text/javascript">
        $LAB
        .script("aaa.js").wait()//不帶參數的.wait()方法表示立即運行剛才加載的Javascript文件
        .script("bbb-a.js")
        .script("bbb-b.js")//依次加載aaa.js bbb-a.js bbb-b.js  然后執行initAaa initBbb
        .wait(function () {//帶參數的.wait()方法也是立即運行剛才加載的Javascript文件,但是還運行參數中指定的函數。
            initAaa();
            initBbb();
        })
        .script("ccc.js")//再加載ccc.js 加載完成ccc.js之后執行initCcc方法
        .wait(function () {
            initCcc();
        });
    </script>

可以同時運行多條$LAB鏈,但是它們之間是完全獨立的,不存在次序關系。如果你要確保一個Javascript文件在另一個文件之后運行,你只能把它們寫在同一個鏈操作之中。只有當某些腳本是完全無關的時候,你才應該考慮把它們分成不同的$LAB鏈,表示它們之間不存在相關關系。

一般性的使用示例

復制代碼 代碼如下:

$LAB
.script("script1.js") // script1, script2, and script3 相互不依賴, 可以按照任意的順序執行
.script("script2.js")
.script("script3.js")
.wait(function(){
    alert("Scripts 1-3 are loaded!");
})
.script("script4.js") //必須等待script1.js,script2.js,script3.js執行完畢之后才能執行
.wait(function(){script4Func();});

復制代碼 代碼如下:

$LAB
.script("script.js")   
.script({ src: "script1.js", type: "text/javascript" })
.script(["script1.js", "script2.js", "script3.js"])
.script(function(){
    // assuming `_is_IE` defined by host page as true in IE and false in other browsers
    if (_is_IE) {
        return "ie.js"; // only if in IE, this script will be loaded
    }
    else {
        return null; // if not in IE, this script call will effectively be ignored
    }
})

在控制臺看LAB.js的加載信息

如果你想調試或者說在控制臺看各個js加載信息的話,可以使用$LAB.setGlobalDefaults 方法,具體使用請看代碼示例。

復制代碼 代碼如下:

<!--先加載攜程的LAB庫  lab.js在網上也可以下載-->
    <script type="text/javascript" src="http://webresource.c-ctrip.com/code/cquery/LABjs/LAB.js" charset="gb2312"></script>

    <script type="text/javascript">

        $LAB.setGlobalDefaults({ Debug: true }) //打開調試

        $LAB
            //第一個執行鏈
           .script('http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js')
           .script('http://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js')

           //第二個執行鏈
           .wait(function () {
               //console.log(window.$)
               //console.log(window._)
           })

           //第三個執行鏈
           .script('http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/js/bootstrap.min.js')
           .script('http://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.pack.js')

           //第四個執行鏈
           .wait(function () {
               // console.log(plugin1Function)
               // console.log(plugin2Function)
           })

           //第五個執行鏈
           .script('js/aaa.js')
           .script('js/bbb.js')

           //第六個執行鏈
           .wait(function () {
               // console.log(module1Function)
               // console.log(module2Function)
           })
    </script>

這個時候打開控制臺,看信息,如下圖所示:

我相信你看到這兒肯定會為Lab.js的調試功能驚嘆不已。事實上Lab.js確實是挺強大的,我也只是了解它的一些淺顯的功能。先記下來,拿來分享一下同時也為了以后方便自己。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品永久免费视频| 欧美性xxxx极品hd欧美风情| 色噜噜亚洲精品中文字幕| 国产a∨精品一区二区三区不卡| 国产亚洲精品美女久久久久| 久久精品2019中文字幕| 91视频8mav| 国产日韩欧美日韩大片| 国产成人拍精品视频午夜网站| 亚洲伊人久久大香线蕉av| 秋霞av国产精品一区| 91久热免费在线视频| 欧美激情第一页xxx| 久久99青青精品免费观看| 国产精品视频一区国模私拍| 国产成人精品免费久久久久| 毛片精品免费在线观看| 91日本在线观看| 亚洲精品网址在线观看| 亚洲国产一区自拍| 国产精品久久久久久久9999| 综合网日日天干夜夜久久| 欧美黄色性视频| 欧美一级电影免费在线观看| 色综合久综合久久综合久鬼88| 69精品小视频| 日韩中文字幕久久| 538国产精品视频一区二区| 成人日韩av在线| 日韩精品视频在线免费观看| 日本aⅴ大伊香蕉精品视频| 超碰91人人草人人干| 91精品综合久久久久久五月天| 2021久久精品国产99国产精品| 欧美一级淫片videoshd| 中文字幕日本欧美| 伊人青青综合网站| 日本欧美一二三区| www.欧美精品一二三区| 久久精品视频99| 永久555www成人免费| 国产伦精品免费视频| 色综合伊人色综合网| 日韩成人在线播放| 国产精品视频免费在线| 国产一区二区三区高清在线观看| 国产在线一区二区三区| 国产精品久久9| 精品中文字幕在线| 成人免费看吃奶视频网站| 97超碰色婷婷| 成人性教育视频在线观看| 97超级碰碰碰| 亚洲精品国产精品乱码不99按摩| 91成品人片a无限观看| 91精品国产91久久久久久最新| 国产精品美女网站| 7m第一福利500精品视频| 日韩午夜在线视频| 欧美日韩激情网| 国内精品久久久久| 欧美高清激情视频| 成人免费福利视频| 国产精欧美一区二区三区| 91最新国产视频| 这里精品视频免费| 日韩有码视频在线| 欧美第一页在线| 热久久免费国产视频| 亚洲天堂av综合网| 久久综合久中文字幕青草| 亚洲精品国产精品国产自| 成人在线精品视频| 精品国产一区久久久| 亚洲www永久成人夜色| 久久激情视频久久| 国产噜噜噜噜噜久久久久久久久| www.久久草.com| 日韩第一页在线| 日韩免费在线免费观看| 亚洲一区999| 亚洲级视频在线观看免费1级| 国产精品视频一区二区三区四| 国产精品日日做人人爱| 久久青草精品视频免费观看| 在线观看日韩视频| 热久久视久久精品18亚洲精品| 日韩在线播放一区| 精品亚洲永久免费精品| 亚洲天堂免费在线| 91精品视频大全| 亚洲欧美制服丝袜| 国产精品欧美一区二区| 国产福利视频一区二区| 丝袜美腿精品国产二区| 欧美视频中文字幕在线| 久久久久99精品久久久久| 日韩电影中文 亚洲精品乱码| 亚洲淫片在线视频| 欧美日韩免费在线观看| 97在线视频观看| www国产精品com| 97免费在线视频| 精品亚洲一区二区三区| 国产亚洲精品成人av久久ww| 91久久精品在线| 久久久久国产精品免费网站| 欧美性理论片在线观看片免费| 国产精品天天狠天天看| 精品亚洲国产视频| 亚洲国产精品成人一区二区| 久久精品国亚洲| 欧美三级欧美成人高清www| 成人动漫网站在线观看| 九九热r在线视频精品| 精品久久久久久亚洲精品| 一本色道久久88综合亚洲精品ⅰ| 日韩av中文字幕在线免费观看| 深夜成人在线观看| 亚洲国产精品久久久久秋霞不卡| 精品国产乱码久久久久酒店| 国产拍精品一二三| 精品国产成人在线| 欧美成人一区在线| 日韩中文字幕不卡视频| 亚洲免费电影在线观看| 日韩在线精品一区| 欧美在线视频观看免费网站| 久久精品电影网站| 视频在线观看99| 欧美刺激性大交免费视频| 国产精品美女在线| 中文字幕自拍vr一区二区三区| 精品亚洲一区二区三区在线播放| 亚洲韩国日本中文字幕| 黑人狂躁日本妞一区二区三区| 午夜精品久久久99热福利| 97国产精品视频人人做人人爱| 亚洲国产另类久久精品| zzijzzij亚洲日本成熟少妇| 欧美国产日韩一区二区在线观看| 国产精品福利无圣光在线一区| 色阁综合伊人av| 午夜精品久久久久久久久久久久| 成人黄色生活片| 国产97人人超碰caoprom| 97在线精品国自产拍中文| 国产一区二区三区在线播放免费观看| 国产精品人成电影| 久久久爽爽爽美女图片| 久久精品国产综合| 国产欧美日韩中文字幕在线| 国模精品视频一区二区| 91在线|亚洲| 91亚洲精华国产精华| 粉嫩老牛aⅴ一区二区三区| 欧美日韩在线观看视频小说| 伊人成人开心激情综合网| 久久久久久久久久久久av| 日韩精品在线第一页| 亚洲一区av在线播放| 久久97久久97精品免视看| 色yeye香蕉凹凸一区二区av| 在线播放国产精品|