天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

腳本安需導(dǎo)入(裝載)的三種模式的對(duì)比

何謂安需裝載?
    腳本程序一般都是下載后執(zhí)行,當(dāng)腳本庫非常龐大時(shí),一次性下載起來非常費(fèi)時(shí),傳統(tǒng)的解決方式是,按功能模塊把腳本寫在不同的文件中,頁面上手動(dòng)加入 script標(biāo)簽裝載指定內(nèi)容,但是這有一些缺點(diǎn),類庫的使用者需要知道沒個(gè)腳本之間的關(guān)系,順序要求等等,而不可能要求每個(gè)類庫使用者都對(duì)其非常熟悉,出錯(cuò)的可能性很大。于是很多框架開始支持導(dǎo)入指令,想使用什么一個(gè)導(dǎo)入函數(shù)就完了,不必一堆堆的script文件,不用小心翼翼的關(guān)注著他們的依賴關(guān)系。

安需裝載的困境:
      早期安需裝載(即時(shí)同步按需裝載)有一個(gè)致命的弱點(diǎn),瀏覽器阻塞問題。當(dāng)按需裝載某些類庫時(shí),通常通過XMLHttpRequest同步裝載腳本文件實(shí)現(xiàn),這種情況下,在資源下載完成之前,瀏覽器將停止響應(yīng)用戶事件、停止頁面重畫操作。如果網(wǎng)速很慢,這段時(shí)間將非常讓人討厭,就像是死機(jī)似的。

      以前的解決辦法是,將常用類庫資源直接打包到框架文件中,而按需導(dǎo)入就成了一個(gè)宣傳的幌子,沒有太多實(shí)際的價(jià)值。

安需裝載可分如下三種模式:


l 即時(shí)同步按需裝載 (阻塞,JSI、JSVM、dojo)。

最簡單的按需裝載實(shí)現(xiàn),通過XMLHttpRequest同步裝載腳本文件實(shí)現(xiàn)。問題是,瀏覽器使用這種方式同步獲取資源時(shí)將導(dǎo)致瀏覽器阻塞:停止響應(yīng)用戶事件、停止頁面重畫操作。所以,雖然編程最為簡單,但是用戶體驗(yàn)最差。

 

2 異步按需裝載(無阻塞,JSI2.0+)。

異步導(dǎo)入,不必多做解釋,用戶體驗(yàn)好,但是因?yàn)槠洚惒教卣鳎幚砥饋肀容^麻煩。

 

3 延遲同步按需裝載(無阻塞,JSI2.0+)。

JSI通過動(dòng)態(tài)預(yù)裝載功能實(shí)現(xiàn)的一種同步獲取資源的方法,雖然也是同步,但沒有阻塞,可以算時(shí)兼顧易用性和用戶體驗(yàn)的解決方按。缺點(diǎn)時(shí)有一定延遲,當(dāng)前腳本標(biāo)簽中不可用。

       

 

使用方法(JSI示例)
    以一個(gè)代碼語法著色程序?yàn)槔?

類庫位置:org/xidea/example/code/code.js

頁面位置:example/xxx.html

 

即時(shí)同步按需裝載

import("org.xidea.example.code.Code"); 

var code1 = new Code(); 

code1.id = "libCode"; 

code1.decorate();

 


異步按需裝載

$import("org.xidea.example.code.Code",function(Code){        

var code1 = new Code();        

code1.id = "libCode";        

code1.decorate();  

})    




延遲同步按需裝載(無阻塞,JSI2.0+)。

<script>"../scripts/boot.js"></script>    

<script>    

$import("org.xidea.example.code.Code",true);    

</script>    

    

<script>    

var code1 = new Code();    

code1.id = "pageCode";    

code1.decorate();    

</script>    




測(cè)試示例: 
地址:

http://jsintegration.sourceforge.NET/example/code.html

http://www.xidea.org/project/jsi/example/code.html 

    示例都是jsi的默認(rèn)示例,可以下載到本地運(yùn)行,下載后最好能放到一個(gè)能受到網(wǎng)速限制的服務(wù)器上,只有這樣才能看到阻塞的問題。

參考:
JSI 導(dǎo)入函數(shù): function $import(path, callbackOrLazyLoad, target ) 

 

JSI2 預(yù)覽版下載:http://groups.google.com/group/jsier/files

JavaScript技術(shù)腳本安需導(dǎo)入(裝載)的三種模式的對(duì)比,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 99九九精品国产高清自在线 | 国产99久久久国产精品免费看 | 91涩涩视频| 另类欧美尿交 | 丁香美女社区 | 无颜之月全集免费观看 | 成年私人影院网站在线看 | 在线观看国产视频 | 国产成人片视频一区二区青青 | 国产精品自在拍在线播放 | 一区二区三区无码高清视频 | 国产国产人免费观看在线视频 | 久爱精品亚洲电影午夜 | 国产精品成久久久久三级四虎 | 久久视频这里只精品6国产 久久视频在线视频观品15 | 国内免费视频成人精品 | 伊人久久精品99热超碰 | 99国产热视频在线观看 | 久久精品亚洲AV无码三区观看 | 被老师按在办公桌吸奶头 | 国产麻豆AV伦| 老师机影院 | 少妇久久久久久被弄高潮 | 性绞姿始动作动态图 | 4438成人情人网站 | 中文字幕亚洲第一页 | 黄色a一级视频 | 天堂Av亚洲欧美日韩国产综合 | 性生生活大片又黄又 | 中文字幕s级优女区 | 亚洲精品AV一区午夜福利 | 好看的电影网站亚洲一区 | BL文高H强交 | 欧美日韩永久久一区二区三区 | 国产日韩成人内射视频 | 4399亚洲AV无码V无码网站 | 亚洲成人免费看 | 入禽太深免费高清在线观看5 | 亚洲午夜精品aaa级久久久久 | 竹菊精品久久久久久久99蜜桃 | 少妇无码吹潮久久精品AV |