專(zhuān)利名稱(chēng):腳本加載方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù),尤其涉及一種腳本加載方法及裝置。
背景技術(shù):
隨著internet技術(shù)的廣泛應(yīng)用,Web技術(shù)已經(jīng)廣泛應(yīng)用于internet上,但是早期的Web應(yīng)用全部是靜態(tài)的超文本標(biāo)記語(yǔ)言(Hypertext Markup Language, HTML)頁(yè)面,用于將一些文本信息呈現(xiàn)給瀏覽者,這些信息是固定寫(xiě)在HTML頁(yè)面里的,該頁(yè)面不具備與用戶(hù)交互的能力,沒(méi)有動(dòng)態(tài)顯示的功能。現(xiàn)在的Web應(yīng)用已經(jīng)不是純靜態(tài)的網(wǎng)頁(yè)模式,而是包括網(wǎng)頁(yè)、程序、數(shù)據(jù)庫(kù)及其它數(shù)據(jù)存儲(chǔ)形式在內(nèi)的能夠?qū)崿F(xiàn)對(duì)信息的查詢(xún)、增刪改和交互操作的綜合應(yīng)用。JavaScript是一種廣泛用于客戶(hù)端Web開(kāi)發(fā)的腳本語(yǔ)言,常用來(lái)給HTML網(wǎng)頁(yè)添加動(dòng)態(tài)功能,比如響應(yīng)用戶(hù)的各種操作。Web應(yīng)用通常需要龐大的JavMcript前臺(tái)腳本來(lái)實(shí)現(xiàn)復(fù)雜的邏輯和效果,下載、解析和執(zhí)行JavMcript腳本需要耗損更多瀏覽器性能,同時(shí), 在全量腳本沒(méi)有加載完全前,Web應(yīng)用也不能立刻提供用戶(hù)交互能力。龐大的JavMcript 腳本會(huì)占用網(wǎng)絡(luò)帶寬資源,而且通常并不是所有的Jav必cript腳本會(huì)被立刻使用,而這些暫時(shí)無(wú)用的JavMcript腳本卻花費(fèi)的用戶(hù)的集中的時(shí)間和帶寬。針對(duì)這些問(wèn)題,現(xiàn)有技術(shù)提供了一種惰性加載JavMcript腳本的方法,通過(guò)自定義的Jav必cript腳本,在前臺(tái)已加載的初始腳本中預(yù)留回調(diào)函數(shù)的入口,當(dāng)業(yè)務(wù)邏輯功能需要(邏輯判斷或定時(shí)器觸發(fā))或用戶(hù)手動(dòng)觸發(fā)的時(shí)候,通過(guò)Ajax請(qǐng)求向服務(wù)器端請(qǐng)求并下載相應(yīng)功能的JavMcript腳本,返回到前臺(tái)瀏覽器后再進(jìn)行解析運(yùn)行。但是這種惰性加載的方法需要開(kāi)發(fā)初始腳本,且在程序開(kāi)發(fā)時(shí)就明確指定需要惰性加載哪個(gè)后臺(tái) JavaScript腳本文件,前后臺(tái)的約定性和耦合性較高,以致Web應(yīng)用開(kāi)發(fā)的通用性和靈活性都比較差。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種腳本加載方法及裝置,以提高Web應(yīng)用開(kāi)發(fā)的通用性和靈活性。本發(fā)明實(shí)施例提供一種腳本加載方法,包括當(dāng)接收到攜帶有調(diào)用方法的方法名稱(chēng)的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求時(shí),判斷腳本存儲(chǔ)單元中是否存在所述調(diào)用方法對(duì)應(yīng)的腳本;若所述腳本存儲(chǔ)單元中不存在所述腳本,則根據(jù)所述方法名稱(chēng)獲取所述調(diào)用方法對(duì)應(yīng)的腳本引用代碼;執(zhí)行所述腳本引用代碼,下載并解析所述腳本引用代碼對(duì)應(yīng)的腳本,執(zhí)行所述腳本中的所述調(diào)用方法。本發(fā)明實(shí)施例提供一種腳本加載裝置,包括判斷單元,用于當(dāng)接收到攜帶有調(diào)用方法的方法名稱(chēng)的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求時(shí),判斷腳本存儲(chǔ)單元中是否存在所述調(diào)用方法對(duì)應(yīng)的腳本;腳本引用代碼獲取單元,用于若所述腳本存儲(chǔ)單元中不存在所述腳本,則根據(jù)所述方法名稱(chēng)獲取所述調(diào)用方法對(duì)應(yīng)的腳本引用代碼;代碼執(zhí)行單元,用于執(zhí)行所述腳本引用代碼,執(zhí)行所述腳本引用代碼,下載并解析所述腳本引用代碼對(duì)應(yīng)的腳本,執(zhí)行所述腳本中的所述調(diào)用方法。由上述技術(shù)方案可知,本發(fā)明實(shí)施例提供的腳本加載方法及裝置,當(dāng)接收到攜帶有調(diào)用方法的方法名稱(chēng)的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求時(shí),判斷腳本存儲(chǔ)單元中是否存在該調(diào)用方法對(duì)應(yīng)的腳本,若不存在,則根據(jù)該方法名稱(chēng)獲取調(diào)用方法對(duì)應(yīng)的腳本引用代碼。再執(zhí)行該腳本引用代碼,下載并解析腳本引用代碼對(duì)應(yīng)的腳本,執(zhí)行該腳本中的調(diào)用方法。由于瀏覽器是以獲取調(diào)用方法對(duì)應(yīng)的腳本引用代碼的方式,通過(guò)執(zhí)行該腳本引用代碼最終實(shí)現(xiàn)調(diào)用方法的執(zhí)行,避免了在Web應(yīng)用程序開(kāi)發(fā)時(shí)就在網(wǎng)頁(yè)的初始腳本中預(yù)留回調(diào)函數(shù)的入口,且需明確指定需要惰性加載哪個(gè)腳本,而造成的前后臺(tái)的約定性和耦合性較高的缺陷, 提高了 Web應(yīng)用開(kāi)發(fā)的通用性和靈活性。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例一提供的腳本加載方法流程圖;圖2為本發(fā)明實(shí)施例二提供的腳本加載方法流程圖;圖3為本發(fā)明實(shí)施例三提供的腳本加載方法流程圖;圖4為本發(fā)明實(shí)施例四提供的腳本加載裝置結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例五提供的腳本加載裝置結(jié)構(gòu)示意圖;圖6為本發(fā)明實(shí)施例六提供的腳本加載裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。用戶(hù)通常通過(guò)瀏覽器來(lái)瀏覽網(wǎng)頁(yè),瀏覽器接收到頁(yè)面加載請(qǐng)求,加載該頁(yè)面加載請(qǐng)求對(duì)應(yīng)的網(wǎng)頁(yè),執(zhí)行網(wǎng)頁(yè)的源文件。源文件通常為HTML編寫(xiě)的代碼,源文件中可以嵌入有腳本引用代碼,以實(shí)現(xiàn)對(duì)腳本的加載。惰性加載(Lazy Loading)是Web開(kāi)發(fā)中的一種模式,即在默認(rèn)情況下部分頁(yè)面數(shù)據(jù)或者腳本不下載到瀏覽器,當(dāng)用戶(hù)觸發(fā)或應(yīng)用程序邏輯觸發(fā)時(shí),再向服務(wù)器請(qǐng)求下載響應(yīng)的數(shù)據(jù)。通過(guò)腳本的惰性加載,可以在需要執(zhí)行腳本時(shí)再將該腳本下載并執(zhí)行,避免網(wǎng)絡(luò)資源帶寬的占用。實(shí)施例一圖1為本發(fā)明實(shí)施例一提供的腳本加載方法流程圖。如圖1所示,本實(shí)施例提供的腳本加載方法具體可以應(yīng)用于腳本加載處理過(guò)程,尤其是可以應(yīng)用于瀏覽器對(duì)惰性加載的腳本的處理過(guò)程,腳本具體可以為JavMcript腳本。本實(shí)施例提供的腳本加載方法可以通過(guò)腳本加載裝置來(lái)執(zhí)行,該加載裝置中可以設(shè)置有瀏覽器,可以通過(guò)軟件和硬件的方式來(lái)實(shí)現(xiàn)。用戶(hù)通過(guò)瀏覽器瀏覽網(wǎng)頁(yè)時(shí),瀏覽器接收到頁(yè)面加載請(qǐng)求,加載網(wǎng)頁(yè),執(zhí)行網(wǎng)頁(yè)的源文件。若程序員在網(wǎng)頁(yè)開(kāi)發(fā)過(guò)程中設(shè)置該網(wǎng)頁(yè)的部分頁(yè)面數(shù)據(jù)和腳本為惰性加載,則在初始的網(wǎng)頁(yè)加載過(guò)程中,瀏覽器只將需要當(dāng)即下載的網(wǎng)頁(yè)數(shù)據(jù)和腳本下載到本地,存儲(chǔ)在腳本存儲(chǔ)單元中,而不將這些需要惰性加載的頁(yè)面數(shù)據(jù)和腳本下載到本地。腳本存儲(chǔ)單元具體可以設(shè)置在該加載裝置中也可以單獨(dú)設(shè)置。瀏覽器執(zhí)行網(wǎng)頁(yè)的源文件的過(guò)程中,當(dāng)網(wǎng)頁(yè)中的業(yè)務(wù)邏輯判斷觸發(fā)或定時(shí)觸發(fā), 或者被用戶(hù)手動(dòng)點(diǎn)擊觸發(fā)時(shí),在實(shí)現(xiàn)某個(gè)功能的過(guò)程中需要調(diào)用實(shí)現(xiàn)該功能的調(diào)用方法, 該調(diào)用方法具體可以為一個(gè)函數(shù),則瀏覽器生成用以指示調(diào)用該調(diào)用方法的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求,該業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求中攜帶有該調(diào)用方法的方法名稱(chēng)。本實(shí)施例提供的腳本加載方法具體包括步驟10、當(dāng)腳本加載裝置接收到攜帶有調(diào)用方法的方法名稱(chēng)的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求時(shí),判斷腳本存儲(chǔ)單元中是否存在所述調(diào)用方法對(duì)應(yīng)的腳本。具體的,調(diào)用方法通常記錄在腳本中,首先根據(jù)方法名稱(chēng)對(duì)腳本存儲(chǔ)單元中存儲(chǔ)的腳本進(jìn)行查詢(xún),判斷腳本存儲(chǔ)單元中是否存在該調(diào)用方法對(duì)應(yīng)的腳本,若該腳本存儲(chǔ)單元中存在該腳本,說(shuō)明該調(diào)用方法對(duì)應(yīng)的腳本在初始的頁(yè)面加載過(guò)程中已經(jīng)下載到了腳本存儲(chǔ)單元中。對(duì)該腳本進(jìn)行解析,執(zhí)行腳本中的調(diào)用方法,以實(shí)現(xiàn)相應(yīng)的功能。若該腳本存儲(chǔ)單元中不存在該腳本,說(shuō)明該調(diào)用方法對(duì)應(yīng)的腳本為惰性加載的腳本,即該腳本還未下載并存儲(chǔ)到腳本存儲(chǔ)單元中。步驟20、若所述腳本存儲(chǔ)單元中不存在所述腳本,則該腳本加載裝置根據(jù)所述方法名稱(chēng)獲取所述調(diào)用方法對(duì)應(yīng)的腳本引用代碼;若腳本存儲(chǔ)單元中不存在該腳本,則根據(jù)該方法名稱(chēng)獲取該調(diào)用方法對(duì)應(yīng)的腳本引用代碼。腳本引用代碼具體為一段代碼,通過(guò)執(zhí)行該代碼,可以對(duì)實(shí)現(xiàn)該腳本的下載及執(zhí)行。該腳本引用代碼可以從網(wǎng)頁(yè)對(duì)應(yīng)的源文件中獲取,也可以根據(jù)該方法名稱(chēng)生成,還可以設(shè)置方法名稱(chēng)與腳本引用代碼的映射關(guān)系表,以根據(jù)該方法名稱(chēng)獲取腳本引用代碼,腳本引用代碼的具體獲取方式不以本實(shí)施例為限。步驟30、執(zhí)行所述腳本引用代碼,下載并解析所述腳本引用代碼對(duì)應(yīng)的腳本,執(zhí)行所述腳本中的所述調(diào)用方法。瀏覽器執(zhí)行該腳本引用代碼,下載并解析腳本引用代碼對(duì)應(yīng)的腳本。具體可以通過(guò)向服務(wù)器發(fā)送超文本傳輸協(xié)議(Hyper Text Transfer Protocol,簡(jiǎn)稱(chēng)HTTP)請(qǐng)求的方式獲取該腳本。執(zhí)行該腳本中的調(diào)用方法,并向用戶(hù)顯示執(zhí)行結(jié)果,以實(shí)現(xiàn)相應(yīng)的業(yè)務(wù)邏輯功能。以下以JavMcript腳本為例對(duì)本實(shí)施例提供的腳本加載方法的實(shí)現(xiàn)過(guò)程做詳細(xì)說(shuō)明用戶(hù)通過(guò)瀏覽器瀏覽網(wǎng)頁(yè),瀏覽器執(zhí)行網(wǎng)頁(yè)的源文件,下載網(wǎng)頁(yè)數(shù)據(jù)和腳本,并將腳本存儲(chǔ)在腳本存儲(chǔ)單元中。當(dāng)用戶(hù)點(diǎn)擊觸發(fā)業(yè)務(wù)邏輯需要調(diào)用調(diào)用方法com. huawei. iread. helloffordQ時(shí),生成業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求。該業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求中攜帶有調(diào)
6用方法的方法名稱(chēng),為com. huawei. iread. helloWord,根據(jù)命名規(guī)則,記錄有該調(diào)用方法的 JavaScript腳本的腳本為com. huawei. iread. js,即方法名稱(chēng)的除最后一個(gè)字符段以外的字符段com. huawei. iread為調(diào)用方法對(duì)應(yīng)的JavMcript腳本的名稱(chēng)。根據(jù)該方法名稱(chēng)對(duì)腳本存儲(chǔ)單元中存儲(chǔ)的腳本進(jìn)行查詢(xún),若腳本存儲(chǔ)單元中不存在該JavMcript腳本,則根據(jù)該方法名稱(chēng)獲取該調(diào)用方法對(duì)應(yīng)的腳本引用代碼。具體地,腳本引用代碼可以通過(guò)kript標(biāo)記的方式引用服務(wù)器端的Javakript 腳本。具體格式如下〈script type = “ text/javascript“ src =“ ../script/com. huawei. iread. js" >其中,Script標(biāo)記中,type屬性用以指示腳本的MIME類(lèi)型。src屬性用以指示外部據(jù)P本的統(tǒng)一資源定位符(Uniform/Universal Resource Locator,簡(jiǎn)稱(chēng) URL)。com. huawei. iread. js即為調(diào)用方法對(duì)應(yīng)的Javakript腳本,URL為該Javakript腳本的存儲(chǔ)路徑。瀏覽器執(zhí)行該腳本引用代碼,下載并解析JavMcript腳本com. huawei. iread. js,執(zhí)行調(diào)用方法 com. huawei. iread. helloWord()。本實(shí)施例提供的腳本加載方法,當(dāng)接收到攜帶有調(diào)用方法的方法名稱(chēng)的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求時(shí),判斷腳本存儲(chǔ)單元中是否存在該調(diào)用方法對(duì)應(yīng)的腳本,若不存在,則根據(jù)該方法名稱(chēng)獲取調(diào)用方法對(duì)應(yīng)的腳本引用代碼。再執(zhí)行該腳本引用代碼,下載并解析腳本引用代碼對(duì)應(yīng)的腳本,執(zhí)行該腳本中的調(diào)用方法。由于瀏覽器是以獲取調(diào)用方法對(duì)應(yīng)的腳本引用代碼的方式,通過(guò)執(zhí)行該腳本引用代碼最終實(shí)現(xiàn)調(diào)用方法的執(zhí)行,避免了在Web應(yīng)用程序開(kāi)發(fā)時(shí)就在網(wǎng)頁(yè)的初始腳本中預(yù)留回調(diào)函數(shù)的入口,且需明確指定需要惰性加載哪個(gè)腳本,而造成的前后臺(tái)的約定性和耦合性較高的缺陷,提高了 Web應(yīng)用開(kāi)發(fā)的通用性和靈活性。實(shí)施例二圖2為本發(fā)明實(shí)施例二提供的腳本加載方法流程圖。如圖2所示,本實(shí)施例提供的腳本加載方法在圖1所述實(shí)施例的基礎(chǔ)上,較優(yōu)的,惰性加載的腳本對(duì)應(yīng)的腳本引用代碼可以記錄在網(wǎng)頁(yè)的源文件中。該腳本引用代碼中通過(guò)設(shè)置標(biāo)識(shí)的方式指示該腳本引用代碼引用的腳本為惰性加載。例如,以Javakript腳本為例,可以通過(guò)擴(kuò)展kript標(biāo)記附加信息的方式來(lái)實(shí)現(xiàn)對(duì)JavMcript腳本的惰性加載。kript標(biāo)記中可以定義defer屬性,defer屬性用以指示是否對(duì)腳本執(zhí)行進(jìn)行延遲,直到頁(yè)面加載為止。當(dāng)腳本引用代碼中包含有defer屬性,且 defer屬性的值為“defer”,則在頁(yè)面加載的過(guò)程中下載該腳本,但并不立即執(zhí)行該腳本, 直到頁(yè)面加載完畢,才執(zhí)行該腳本??梢灶A(yù)先設(shè)定當(dāng)defer屬性的值為除“defer”以外的其他值時(shí),指示惰性加載該腳本。該腳本引用代碼具體可以為〈script type = ” text/javascript “ defer =” a" src =” . . /script/com. huawei. iread. js〃 >在本實(shí)施例中,步驟10,當(dāng)接收到攜帶有調(diào)用方法的方法名稱(chēng)的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求時(shí),判斷腳本存儲(chǔ)單元中是否存在所述調(diào)用方法對(duì)應(yīng)的腳本之前,具體還可以包括如下步驟步驟40、當(dāng)接收到頁(yè)面加載請(qǐng)求時(shí),執(zhí)行所述頁(yè)面加載請(qǐng)求對(duì)應(yīng)的頁(yè)面的源文件中的代碼,其中,若識(shí)別到所述源文件的腳本引用代碼中包含有用以指示惰性加載的標(biāo)識(shí)時(shí),跳過(guò)所述腳本引用代碼。頁(yè)面加載請(qǐng)求即為用戶(hù)通過(guò)瀏覽器瀏覽網(wǎng)站時(shí)生成的請(qǐng)求瀏覽器加載網(wǎng)頁(yè)頁(yè)面的請(qǐng)求。當(dāng)瀏覽器接收到頁(yè)面加載請(qǐng)求時(shí),執(zhí)行該頁(yè)面加載請(qǐng)求對(duì)應(yīng)的頁(yè)面的源文件中的代碼,即進(jìn)行初始的頁(yè)面加載操作。在代碼的執(zhí)行過(guò)程中,若識(shí)別到腳本引用代碼中包含有用以指示惰性加載的標(biāo)識(shí),如defer = “a”,則說(shuō)明該腳本引用代碼中的腳本需要惰性加載,則跳過(guò)該腳本引用代碼不執(zhí)行。通過(guò)在腳本引用代碼中設(shè)置標(biāo)識(shí)以指示惰性加載,在網(wǎng)頁(yè)開(kāi)發(fā)時(shí)就可以將該腳本引用代碼記錄在源文件中,為后續(xù)的腳本引用代碼的獲取提供方便。在本實(shí)施例中,執(zhí)行所述頁(yè)面加載請(qǐng)求對(duì)應(yīng)的頁(yè)面的源文件中的代碼,具體還可以包括如下步驟若識(shí)別到所述源文件的腳本引用代碼中不包含用以指示惰性加載的所述標(biāo)識(shí)時(shí), 執(zhí)行所述腳本引用代碼,下載所述腳本引用代碼對(duì)應(yīng)的腳本,并將所述腳本存儲(chǔ)在所述腳本存儲(chǔ)單元中。在初始的頁(yè)面加載操作中,若識(shí)別到腳本引用代碼中不包含用以指示惰性加載的標(biāo)識(shí),即說(shuō)明該腳本引用代碼對(duì)應(yīng)的腳本可以當(dāng)即下載,則下載該腳本,并將該腳本存儲(chǔ)在腳本存儲(chǔ)單元中,以便當(dāng)業(yè)務(wù)邏輯功能觸發(fā)調(diào)用該腳本中的調(diào)用方法時(shí),可以對(duì)腳本存儲(chǔ)單元進(jìn)行查找以獲取相應(yīng)的腳本。步驟20,若所述腳本存儲(chǔ)單元中不存在所述腳本,則根據(jù)所述方法名稱(chēng)獲取所述調(diào)用方法對(duì)應(yīng)的腳本引用代碼,具體可以包括如下步驟步驟201、若所述腳本存儲(chǔ)單元中不存在所述腳本,則根據(jù)所述方法名稱(chēng)對(duì)源文件中的代碼進(jìn)行查找;步驟202、若所述源文件中存在與所述方法名稱(chēng)相匹配的腳本引用代碼,則獲取所述腳本引用代碼。上述實(shí)施方式中,惰性加載的腳本對(duì)應(yīng)的腳本引用代碼記錄在網(wǎng)頁(yè)的源文件中, 但在頁(yè)面的初始加載中并不執(zhí)行該腳本引用代碼。當(dāng)腳本存儲(chǔ)單元中不存在需調(diào)用的調(diào)用方法對(duì)應(yīng)的腳本時(shí),則可以根據(jù)該調(diào)用方法的方法名稱(chēng)對(duì)源文件中的代碼進(jìn)行查找,以獲得該腳本對(duì)應(yīng)的腳本引用代碼。實(shí)施例三圖3為本發(fā)明實(shí)施例三提供的腳本加載方法流程圖。如圖3所示,本實(shí)施例提供的腳本加載方法,步驟20,若所述腳本存儲(chǔ)單元中不存在所述腳本,則根據(jù)所述方法名稱(chēng)獲取所述調(diào)用方法對(duì)應(yīng)的腳本引用代碼,具體可以包括如下步驟步驟203、若所述腳本存儲(chǔ)單元中不存在所述腳本,則獲取映射表,其中,所述映射表中存儲(chǔ)有所述方法名稱(chēng)與所述腳本的腳本信息的映射關(guān)系,所述腳本信息包括腳本名稱(chēng)和存儲(chǔ)路徑;網(wǎng)頁(yè)的源文件中也可以通過(guò)其他方式指示惰性加載,如在源文件中不記錄需要惰性加載的腳本對(duì)應(yīng)的腳本引用代碼。由于源文件中不存在該腳本引用代碼,則在初始的頁(yè)面加載過(guò)程中,該腳本引用代碼不被執(zhí)行,即可實(shí)現(xiàn)對(duì)腳本的惰性加載,該方法實(shí)現(xiàn)簡(jiǎn)單。當(dāng)源文件中不存在該腳本引用代碼時(shí),獲取映射表。該映射表中存儲(chǔ)有方法名稱(chēng)與腳本的腳本信息的映射關(guān)系,該腳本信息包括腳本名稱(chēng)和存儲(chǔ)路徑。例如方法名稱(chēng)為 com. huawei. iread. hellofford,與據(jù)口本名稱(chēng) com. huawei. iread 禾口存fi者路徑../script/ 相對(duì)應(yīng)。步驟204、根據(jù)所述方法名稱(chēng)對(duì)所述映射表進(jìn)行查找,獲取所述方法名稱(chēng)對(duì)應(yīng)的腳本信息;步驟205、根據(jù)所述腳本信息構(gòu)建所述腳本引用代碼。根據(jù)方法名稱(chēng)可以獲取到腳本的腳本信息,又由于腳本信息中包括了腳本名稱(chēng)和存儲(chǔ)路徑,可以根據(jù)腳本名稱(chēng)和存儲(chǔ)路徑構(gòu)建腳本引用代碼。值得注意的是,在本實(shí)施例中,可以根據(jù)預(yù)先約定,通過(guò)根據(jù)腳本信息構(gòu)建腳本引用代碼的方式來(lái)獲取該腳本引用代碼。也可以首先根據(jù)方法名稱(chēng)對(duì)源文件進(jìn)行查詢(xún),若源文件中存在于該方法名稱(chēng)相匹配的腳本引用代碼時(shí),通過(guò)執(zhí)行步驟201和步驟202來(lái)實(shí)現(xiàn)腳本引用代碼的獲取,若源文件中不存在與方法名稱(chēng)相匹配的腳本引用代碼時(shí),可以通過(guò)本實(shí)施例提供的方法來(lái)獲取腳本引用代碼。實(shí)施例四圖4為本發(fā)明實(shí)施例四提供的腳本加載裝置結(jié)構(gòu)示意圖。如圖4所示,本實(shí)施例提供的腳本加載裝置具體可以實(shí)現(xiàn)本發(fā)明任意實(shí)施例提供的腳本加載方法的各個(gè)步驟,此不再贅述。本實(shí)施例提供的腳本加載裝置具體包括判斷單元12、腳本引用代碼獲取單元13 和代碼執(zhí)行單元14。判斷單元12用于當(dāng)接收到攜帶有調(diào)用方法的方法名稱(chēng)的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求時(shí),判斷腳本存儲(chǔ)單元11中是否存在所述調(diào)用方法對(duì)應(yīng)的腳本。腳本引用代碼獲取單元13用于若所述腳本存儲(chǔ)單元11中不存在所述腳本,則根據(jù)所述方法名稱(chēng)獲取所述調(diào)用方法對(duì)應(yīng)的腳本引用代碼,代碼執(zhí)行單元14用于執(zhí)行所述腳本引用代碼,執(zhí)行所述腳本引用代碼,下載并解析所述腳本引用代碼對(duì)應(yīng)的腳本,執(zhí)行所述腳本中的所述調(diào)用方法。本實(shí)施例提供的腳本加載裝置,判斷單元12當(dāng)接收到攜帶有調(diào)用方法的方法名稱(chēng)的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求時(shí),判斷腳本存儲(chǔ)單元11中是否存在所述調(diào)用方法對(duì)應(yīng)的腳本。若所述腳本存儲(chǔ)單元11中不存在所述腳本,腳本引用代碼獲取單元13則根據(jù)所述方法名稱(chēng)獲取所述調(diào)用方法對(duì)應(yīng)的腳本引用代碼,代碼執(zhí)行單元14執(zhí)行所述腳本引用代碼, 執(zhí)行所述腳本引用代碼,下載并解析所述腳本引用代碼對(duì)應(yīng)的腳本,執(zhí)行所述腳本中的所述調(diào)用方法。通過(guò)判斷單元12、腳本引用代碼獲取單元13和代碼執(zhí)行單元14的設(shè)置,以獲取調(diào)用方法對(duì)應(yīng)的腳本引用代碼的方式,通過(guò)執(zhí)行該腳本引用代碼最終實(shí)現(xiàn)調(diào)用方法的執(zhí)行,避免了在Web應(yīng)用程序開(kāi)發(fā)時(shí)就在網(wǎng)頁(yè)的初始腳本中預(yù)留回調(diào)函數(shù)的入口,且需明確指定需要惰性加載哪個(gè)腳本,而造成的前后臺(tái)的約定性和耦合性較高的缺陷,提高了 Web 應(yīng)用開(kāi)發(fā)的通用性和靈活性。實(shí)施例五圖5為本發(fā)明實(shí)施例五提供的腳本加載裝置結(jié)構(gòu)示意圖。如圖5所示,本實(shí)施例提供的腳本加載裝置在圖4所述實(shí)施例的基礎(chǔ)上,所述腳本引用代碼獲取單元13具體可以包括查找子單元131和代碼獲取子單元132。查找子單元131用于若所述腳本存儲(chǔ)單元11 中不存在所述腳本,則根據(jù)所述方法名稱(chēng)對(duì)源文件中的代碼進(jìn)行查找。代碼獲取子單元132用于若所述源文件中存在與所述方法名稱(chēng)相匹配的腳本引用代碼,則獲取所述腳本引用代碼。通過(guò)查找子單元131和代碼獲取子單元132的設(shè)置,可以從頁(yè)面的源文件中獲取該腳本引用代碼,提高了腳本引用代碼獲取的便捷性。在本實(shí)施例中,該腳本加載裝置具體還可以包括源文件執(zhí)行單元15,源文件執(zhí)行單元15用于當(dāng)接收到頁(yè)面加載請(qǐng)求時(shí),執(zhí)行所述頁(yè)面加載請(qǐng)求對(duì)應(yīng)的頁(yè)面的源文件中的代碼,其中,若識(shí)別到所述源文件的腳本引用代碼中包含有用以指示惰性加載的標(biāo)識(shí)時(shí),跳過(guò)所述腳本引用代碼。通過(guò)在腳本引用代碼中設(shè)置標(biāo)識(shí)以指示惰性加載,在網(wǎng)頁(yè)開(kāi)發(fā)時(shí)就可以將該腳本引用代碼記錄在源文件中,為后續(xù)的腳本引用代碼的獲取提供方便。在本實(shí)施例中,所述源文件執(zhí)行單元15還用于若識(shí)別到所述源文件的腳本引用代碼中不包含用以指示惰性加載的所述標(biāo)識(shí)時(shí),執(zhí)行所述腳本引用代碼,下載所述腳本引用代碼對(duì)應(yīng)的腳本,并將所述腳本存儲(chǔ)在所述腳本存儲(chǔ)單元11中。在初始的頁(yè)面加載操作中,若識(shí)別到腳本引用代碼中不包含用以指示惰性加載的標(biāo)識(shí),則下載該腳本,并將該腳本存儲(chǔ)在腳本存儲(chǔ)單元11中,以便當(dāng)業(yè)務(wù)邏輯功能觸發(fā)調(diào)用該腳本中的調(diào)用方法時(shí),可以對(duì)腳本存儲(chǔ)單元11進(jìn)行查找以獲取相應(yīng)的腳本。實(shí)施例六圖6為本發(fā)明實(shí)施例六提供的腳本加載裝置結(jié)構(gòu)示意圖。如圖6所示,本實(shí)施例提供的腳本加載裝置在圖4所述的實(shí)施例的基礎(chǔ)上,所述腳本引用代碼獲取單元13具體可以包括映射表獲取子單元133、腳本信息獲取子單元134和代碼構(gòu)建子單元135。映射表獲取子單元133用于若所述腳本存儲(chǔ)單元中不存在所述腳本,則獲取映射表,其中,所述映射表中存儲(chǔ)有所述方法名稱(chēng)與所述腳本的腳本信息的映射關(guān)系,所述腳本信息包括腳本名稱(chēng)和存儲(chǔ)路徑。腳本信息獲取子單元134用于根據(jù)所述方法名稱(chēng)對(duì)所述映射表進(jìn)行查找,獲取所述方法名稱(chēng)對(duì)應(yīng)的腳本信息。代碼構(gòu)建子單元135用于根據(jù)所述腳本信息構(gòu)建所述腳本引用代碼。若源文件中不存在該腳本引用代碼,可以通過(guò)構(gòu)建腳本引用代碼的方式來(lái)獲得該腳本引用代碼?;蛘?,若網(wǎng)頁(yè)開(kāi)發(fā)約定的形式即為不在源文件中記錄惰性加載的腳本對(duì)應(yīng)的腳本引用代碼,也可以通過(guò)構(gòu)建腳本引用代碼的方式來(lái)獲得該腳本引用代碼。本發(fā)明實(shí)施例提供的腳本加載方法及裝置,當(dāng)接收到攜帶有調(diào)用方法的方法名稱(chēng)的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求時(shí),判斷腳本存儲(chǔ)單元中是否存在該調(diào)用方法對(duì)應(yīng)的腳本,若不存在,則根據(jù)該方法名稱(chēng)獲取調(diào)用方法對(duì)應(yīng)的腳本引用代碼。再執(zhí)行該腳本引用代碼,下載并解析腳本引用代碼對(duì)應(yīng)的腳本,執(zhí)行該腳本中的調(diào)用方法。由于瀏覽器是以獲取調(diào)用方法對(duì)應(yīng)的腳本引用代碼的方式,通過(guò)執(zhí)行該腳本引用代碼最終實(shí)現(xiàn)調(diào)用方法的執(zhí)行,避免了在Web應(yīng)用程序開(kāi)發(fā)時(shí)就在網(wǎng)頁(yè)的初始腳本中預(yù)留回調(diào)函數(shù)的入口,且需明確指定需要惰性加載哪個(gè)腳本,而造成的前后臺(tái)的約定性和耦合性較高的缺陷,提高了 Web應(yīng)用開(kāi)發(fā)的通用性和靈活性。針對(duì)于硬件資源相對(duì)有限的移動(dòng)終端,可以采用本實(shí)施例提供的技術(shù)方案來(lái)實(shí)現(xiàn)對(duì)腳本的惰性加載,在實(shí)現(xiàn)復(fù)雜的Web應(yīng)用的基礎(chǔ)上,避免系統(tǒng)資源的浪費(fèi)和網(wǎng)絡(luò)帶寬的消耗。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。 最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
權(quán)利要求
1.一種腳本加載方法,其特征在于,包括當(dāng)接收到攜帶有調(diào)用方法的方法名稱(chēng)的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求時(shí),判斷腳本存儲(chǔ)單元中是否存在所述調(diào)用方法對(duì)應(yīng)的腳本;若所述腳本存儲(chǔ)單元中不存在所述腳本,則根據(jù)所述方法名稱(chēng)獲取所述調(diào)用方法對(duì)應(yīng)的腳本引用代碼;執(zhí)行所述腳本引用代碼,下載并解析所述腳本引用代碼對(duì)應(yīng)的腳本,執(zhí)行所述腳本中的所述調(diào)用方法。
2.根據(jù)權(quán)利要求1所述的腳本加載方法,其特征在于,若所述腳本存儲(chǔ)單元中不存在所述腳本,則根據(jù)所述方法名稱(chēng)獲取所述調(diào)用方法對(duì)應(yīng)的腳本引用代碼,包括若所述腳本存儲(chǔ)單元中不存在所述腳本,則根據(jù)所述方法名稱(chēng)對(duì)源文件中的代碼進(jìn)行查找;若所述源文件中存在與所述方法名稱(chēng)相匹配的腳本引用代碼,則獲取所述腳本引用代碼。
3.根據(jù)權(quán)利要求1或2所述的腳本加載方法,其特征在于,當(dāng)接收到攜帶有調(diào)用方法的方法名稱(chēng)的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求時(shí),判斷腳本存儲(chǔ)單元中是否存在所述調(diào)用方法對(duì)應(yīng)的腳本之前,還包括當(dāng)接收到頁(yè)面加載請(qǐng)求時(shí),執(zhí)行所述頁(yè)面加載請(qǐng)求對(duì)應(yīng)的頁(yè)面的源文件中的代碼,其中,若識(shí)別到所述源文件的腳本引用代碼中包含有用以指示惰性加載的標(biāo)識(shí)時(shí),跳過(guò)所述腳本引用代碼。
4.根據(jù)權(quán)利要求3所述的腳本加載方法,其特征在于,所述執(zhí)行所述頁(yè)面加載請(qǐng)求對(duì)應(yīng)的頁(yè)面的源文件中的代碼,還包括若識(shí)別到所述源文件的腳本引用代碼中不包含用以指示惰性加載的所述標(biāo)識(shí)時(shí),執(zhí)行所述腳本引用代碼,下載所述腳本引用代碼對(duì)應(yīng)的腳本,并將所述腳本存儲(chǔ)在所述腳本存儲(chǔ)單元中。
5.根據(jù)權(quán)利要求1所述的腳本加載方法,其特征在于,若所述腳本存儲(chǔ)單元中不存在所述腳本,則根據(jù)所述方法名稱(chēng)獲取所述調(diào)用方法對(duì)應(yīng)的腳本引用代碼,包括若所述腳本存儲(chǔ)單元中不存在所述腳本,則獲取映射表,其中,所述映射表中存儲(chǔ)有所述方法名稱(chēng)與所述腳本的腳本信息的映射關(guān)系,所述腳本信息包括腳本名稱(chēng)和存儲(chǔ)路徑; 根據(jù)所述方法名稱(chēng)對(duì)所述映射表進(jìn)行查找,獲取所述方法名稱(chēng)對(duì)應(yīng)的腳本信息; 根據(jù)所述腳本信息構(gòu)建所述腳本引用代碼。
6.一種腳本加載裝置,其特征在于,包括判斷單元,用于當(dāng)接收到攜帶有調(diào)用方法的方法名稱(chēng)的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求時(shí),判斷腳本存儲(chǔ)單元中是否存在所述調(diào)用方法對(duì)應(yīng)的腳本;腳本引用代碼獲取單元,用于若所述腳本存儲(chǔ)單元中不存在所述腳本,則根據(jù)所述方法名稱(chēng)獲取所述調(diào)用方法對(duì)應(yīng)的腳本引用代碼;代碼執(zhí)行單元,用于執(zhí)行所述腳本引用代碼,執(zhí)行所述腳本引用代碼,下載并解析所述腳本引用代碼對(duì)應(yīng)的腳本,執(zhí)行所述腳本中的所述調(diào)用方法。
7.根據(jù)權(quán)利要求6所述的腳本加載裝置,其特征在于,所述腳本引用代碼獲取單元包括查找子單元,用于若所述腳本存儲(chǔ)單元中不存在所述腳本,則根據(jù)所述方法名稱(chēng)對(duì)源文件中的代碼進(jìn)行查找;代碼獲取子單元,用于若所述源文件中存在與所述方法名稱(chēng)相匹配的腳本引用代碼, 則獲取所述腳本引用代碼。
8.根據(jù)權(quán)利要求6或7所述的腳本加載裝置,其特征在于,還包括源文件執(zhí)行單元,用于當(dāng)接收到頁(yè)面加載請(qǐng)求時(shí),執(zhí)行所述頁(yè)面加載請(qǐng)求對(duì)應(yīng)的頁(yè)面的源文件中的代碼,其中,若識(shí)別到所述源文件的腳本引用代碼中包含有用以指示惰性加載的標(biāo)識(shí)時(shí),跳過(guò)所述腳本引用代碼。
9.根據(jù)權(quán)利要求8所述的腳本加載裝置,其特征在于所述源文件執(zhí)行單元還用于若識(shí)別到所述源文件的腳本引用代碼中不包含用以指示惰性加載的所述標(biāo)識(shí)時(shí),執(zhí)行所述腳本引用代碼,下載所述腳本引用代碼對(duì)應(yīng)的腳本,并將所述腳本存儲(chǔ)在所述腳本存儲(chǔ)單元中。
10.根據(jù)權(quán)利要求6所述的腳本加載裝置,其特征在于,所述腳本引用代碼獲取單元包括映射表獲取子單元,用于若所述腳本存儲(chǔ)單元中不存在所述腳本,則獲取映射表,其中,所述映射表中存儲(chǔ)有所述方法名稱(chēng)與所述腳本的腳本信息的映射關(guān)系,所述腳本信息包括腳本名稱(chēng)和存儲(chǔ)路徑;腳本信息獲取子單元,用于根據(jù)所述方法名稱(chēng)對(duì)所述映射表進(jìn)行查找,獲取所述方法名稱(chēng)對(duì)應(yīng)的腳本信息;代碼構(gòu)建子單元,用于根據(jù)所述腳本信息構(gòu)建所述腳本引用代碼。
全文摘要
本發(fā)明實(shí)施例提供一種腳本加載方法及裝置,該腳本加載方法包括當(dāng)接收到攜帶有調(diào)用方法的方法名稱(chēng)的業(yè)務(wù)邏輯功能觸發(fā)請(qǐng)求時(shí),判斷腳本存儲(chǔ)單元中是否存在所述調(diào)用方法對(duì)應(yīng)的腳本;若所述腳本存儲(chǔ)單元中不存在所述腳本,則根據(jù)所述方法名稱(chēng)獲取所述調(diào)用方法對(duì)應(yīng)的腳本引用代碼;執(zhí)行所述腳本引用代碼,下載并解析所述腳本引用代碼對(duì)應(yīng)的腳本,執(zhí)行所述腳本中的所述調(diào)用方法。本發(fā)明實(shí)施例提供的腳本加載方法及裝置,避免了在Web應(yīng)用程序開(kāi)發(fā)時(shí)就在網(wǎng)頁(yè)的初始腳本中預(yù)留回調(diào)函數(shù)的入口,且需明確指定需要惰性加載哪個(gè)腳本,而造成的前后臺(tái)的約定性和耦合性較高的缺陷,提高了Web應(yīng)用開(kāi)發(fā)的通用性和靈活性。
文檔編號(hào)G06F17/30GK102567516SQ201110446680
公開(kāi)日2012年7月11日 申請(qǐng)日期2011年12月28日 優(yōu)先權(quán)日2011年12月28日
發(fā)明者孫尹 申請(qǐng)人:華為技術(shù)有限公司