国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載方法及系統(tǒng)的制作方法

      文檔序號(hào):6363092閱讀:325來源:國(guó)知局
      專利名稱:一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載方法及系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本申請(qǐng)涉及計(jì)算機(jī)技術(shù),特別是涉及一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載方法及系統(tǒng)。
      背景技術(shù)
      JavaScript是一種基于對(duì)象和事件驅(qū)動(dòng)并具有相對(duì)安全性的客戶端腳本語言。JavaScript被廣泛用于客戶端Web開發(fā),常用來給HTML網(wǎng)頁添加動(dòng)態(tài)功能,比如響應(yīng)用戶的各種操作。在基于JavaScript語言的項(xiàng)目開發(fā)中,需要調(diào)用外部文件的數(shù)據(jù)包,但是JavaScript語言在設(shè)計(jì)之初存在一個(gè)缺陷,就是在引入外部文件的數(shù)據(jù)包時(shí)需要通過在html文檔中手寫標(biāo)簽的形式載入。然后通過寫回調(diào)函數(shù)的形式來控制執(zhí)行順序,以使各個(gè)JavaScript文件的數(shù)據(jù)包可以按照一定的順序和邏輯執(zhí)行。目前有一些JavaScript庫就實(shí)現(xiàn)了各自的“包管理”機(jī)制,比如YUILoader和Yepnope等,這些方法中開發(fā)人員使用一個(gè)類或方法的前提是,必須預(yù)先了解所述類或方法是在哪個(gè)數(shù)據(jù)包中實(shí)現(xiàn)的。因此在項(xiàng)目開發(fā)的程序編寫中,編寫類和方法的函數(shù)之前,需要先手動(dòng)編寫代碼,將所述類和方法的函數(shù)對(duì)應(yīng)的數(shù)據(jù)包從某個(gè)目錄下加載到項(xiàng)目中。此時(shí)就要求開發(fā)人員需要預(yù)先知道類或方法的函數(shù)名與數(shù)據(jù)包的對(duì)應(yīng)關(guān)系,所述對(duì)應(yīng)關(guān)系是函數(shù)名對(duì)應(yīng)數(shù)據(jù)包的存儲(chǔ)位置,此配置過程使得項(xiàng)目開發(fā)的時(shí)間大大增加,并且影響了項(xiàng)目開發(fā)的效率。并且數(shù)據(jù)庫將常會(huì)維護(hù)和升級(jí),此時(shí)就可能導(dǎo)致數(shù)據(jù)包存儲(chǔ)目錄的變更,如果開發(fā)人員不知道新的存儲(chǔ)目錄,而仍然使用舊的存儲(chǔ)目錄加載數(shù)據(jù)包,就會(huì)導(dǎo)致程序運(yùn)行錯(cuò)誤。

      發(fā)明內(nèi)容
      本申請(qǐng)?zhí)峁┝艘环N項(xiàng)目開發(fā)中數(shù)據(jù)包的加載方法及系統(tǒng),以解決人工加載數(shù)據(jù)包影響項(xiàng)目開發(fā)時(shí)間和效率的問題。為了解決上述問題,本申請(qǐng)公開了一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載方法,包括:載入種子文件和配置文件,其中,所述種子文件提供了程序預(yù)解析的功能,所述項(xiàng)目配置文件中配置了函數(shù)與數(shù)據(jù)包的映射關(guān)系,一個(gè)函數(shù)名唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)包名;根據(jù)種子文件對(duì)程序主邏輯進(jìn)行預(yù)解析;根據(jù)所述配置文件,自動(dòng)查找與程序中各個(gè)函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中。相應(yīng)的,本申請(qǐng)還公開了一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載系統(tǒng),包括:載入模塊,用于載入種子文件和配置文件,其中,所述種子文件提供了程序預(yù)解析的功能,所述項(xiàng)目配置文件中配置了函數(shù)與數(shù)據(jù)包的映射關(guān)系,一個(gè)函數(shù)名唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)包名;預(yù)解析模塊,用于根據(jù)種子文件對(duì)程序主邏輯進(jìn)行預(yù)解析;第一加載數(shù)據(jù)包模塊,用于根據(jù)所述配置文件,自動(dòng)查找與程序中各個(gè)函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中。與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn):本申請(qǐng)?zhí)峁┝艘环N項(xiàng)目開發(fā)中數(shù)據(jù)包的加載方法及系統(tǒng),在程序配置完成后,載入種子文件和配置文件,其中,所述種子文件提供了程序預(yù)解析的功能,所述項(xiàng)目配置文件中配置了函數(shù)與數(shù)據(jù)包的映射關(guān)系,一個(gè)函數(shù)名唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)包名。根據(jù)種子文件對(duì)程序主邏輯進(jìn)行預(yù)解析,根據(jù)所述配置文件,自動(dòng)查找并加載與程序中各個(gè)函數(shù)具有映射關(guān)系的數(shù)據(jù)包??梢宰詣?dòng)加載所需的數(shù)據(jù)包,無需人工配置加載數(shù)據(jù)包,減少了項(xiàng)目開發(fā)的時(shí)間,提高了項(xiàng)目開發(fā)的效率。并且配置文件中配置了唯一的函數(shù)名對(duì)應(yīng)唯一的數(shù)據(jù)包,不需按照存儲(chǔ)目錄來加載,因此即使數(shù)據(jù)庫因維護(hù)、升級(jí)而導(dǎo)致數(shù)據(jù)包的存儲(chǔ)目錄發(fā)生變更,也不會(huì)影響數(shù)據(jù)包的加載,保證了程序的正確運(yùn)行。其次,數(shù)據(jù)包之間在項(xiàng)目實(shí)現(xiàn)中還可能存在固有的依賴關(guān)系,若沒有將具有依賴關(guān)系的數(shù)據(jù)包都加載到項(xiàng)目中,也可能導(dǎo)致程序運(yùn)行的失敗。因此本申請(qǐng)?jiān)诜N子文件中配置了數(shù)據(jù)包之間在項(xiàng)目實(shí)現(xiàn)中的依賴關(guān)系,可以將已加載數(shù)據(jù)包所以來的其他數(shù)據(jù)包都加載到項(xiàng)目中,省去了現(xiàn)有技術(shù)中人工查找數(shù)據(jù)包之間依賴關(guān)系的繁瑣過程,更進(jìn)一步的節(jié)省項(xiàng)目開發(fā)的時(shí)間,保證了程序的正確運(yùn)行。


      圖1是本申請(qǐng)實(shí)施例所述一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載方法流程圖;圖2是本申請(qǐng)優(yōu)選實(shí)施例所述一種項(xiàng)目開發(fā)中程序主邏輯數(shù)據(jù)包的加載方法流程圖;圖3是本申請(qǐng)優(yōu)選實(shí)施例所述一種項(xiàng)目開發(fā)中數(shù)據(jù)包中程序主邏輯的數(shù)據(jù)包加載方法流程圖;圖4是本申請(qǐng)實(shí)施例所述一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載系統(tǒng)結(jié)構(gòu)圖。
      具體實(shí)施例方式為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
      對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說明?,F(xiàn)有技術(shù)中,在項(xiàng)目開發(fā)的編寫程序函數(shù)之前,需要先手動(dòng)編寫代碼,將所述函數(shù)對(duì)應(yīng)的數(shù)據(jù)包從某個(gè)目錄下加載到項(xiàng)目中。此時(shí)就要求開發(fā)人員需要預(yù)先知道類或方法的函數(shù)名與數(shù)據(jù)包的對(duì)應(yīng)關(guān)系,并且知道數(shù)據(jù)包的存儲(chǔ)位置,此配置過程使得項(xiàng)目開發(fā)的時(shí)間大大增加,并且影響了項(xiàng)目開發(fā)的效率。并且數(shù)據(jù)庫將常會(huì)維護(hù)和升級(jí),此時(shí)就可能導(dǎo)致數(shù)據(jù)包存儲(chǔ)目錄的變更,如果開發(fā)人員不知道新的存儲(chǔ)目錄,而仍然使用舊的存儲(chǔ)目錄加載數(shù)據(jù)包,就會(huì)導(dǎo)致程序運(yùn)行錯(cuò)誤。本申請(qǐng)?zhí)峁┮环N項(xiàng)目開發(fā)中數(shù)據(jù)包的加載方法,可以自動(dòng)加載所需的數(shù)據(jù)包,無需人工配置加載數(shù)據(jù)包,減少了項(xiàng)目開發(fā)的時(shí)間,提高了項(xiàng)目開發(fā)的效率。并且配置文件中配置了唯一的函數(shù)名對(duì)應(yīng)唯一的數(shù)據(jù)包,不需按照存儲(chǔ)目錄來加載,因此即使數(shù)據(jù)庫因維護(hù)、升級(jí)而導(dǎo)致數(shù)據(jù)包的存儲(chǔ)目錄發(fā)生變更,也不會(huì)影響數(shù)據(jù)包的加載,保證了程序的正確運(yùn)行。參照?qǐng)D1,其給出了本申請(qǐng)實(shí)施例所述一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載方法流程圖。
      步驟11,載入種子文件和配置文件,其中,所述種子文件提供了程序預(yù)解析的功能,所述項(xiàng)目配置文件中配置了函數(shù)與數(shù)據(jù)包的映射關(guān)系,一個(gè)函數(shù)名唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)包名;在開發(fā)項(xiàng)目配置程序代碼時(shí),會(huì)預(yù)先配置種子文件和配置文件的語句,因此在程序都配置完成后,會(huì)先載入種子文件和配置文件。其中,種子文件中提供了程序預(yù)解析的功能。所述項(xiàng)目配置文件中配置了函數(shù)與數(shù)據(jù)包的映射關(guān)系,一個(gè)函數(shù)名唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)包名。步驟12,根據(jù)種子文件對(duì)程序主邏輯進(jìn)行預(yù)解析;根據(jù)種子文件中程序預(yù)解析的功能,對(duì)項(xiàng)目程序的主邏輯進(jìn)行預(yù)解析,所述預(yù)解析待執(zhí)行的代碼,就是模擬運(yùn)行待執(zhí)行的代碼。所述預(yù)解析是通過一個(gè)復(fù)雜的正則表達(dá)式進(jìn)行函數(shù)的源碼匹配來實(shí)現(xiàn)的,這種實(shí)現(xiàn)方法代碼簡(jiǎn)潔、執(zhí)行效率高,基本不會(huì)因?yàn)轭A(yù)解析對(duì)程序性能造成影響。步驟13,根據(jù)所述配置文件,自動(dòng)查找與程序中各個(gè)函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中。種子文件提供了程序預(yù)解析的功能,因此會(huì)模擬運(yùn)行待執(zhí)行的代碼,模擬運(yùn)行中會(huì)運(yùn)行到某個(gè)函數(shù),然后根據(jù)配置文件中函數(shù)與數(shù)據(jù)包的映射關(guān)系,自動(dòng)查找與該函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,將所述數(shù)據(jù)包加載到項(xiàng)目中,在正式運(yùn)行程序時(shí),就可以使用該函數(shù)執(zhí)行相應(yīng)的功能了。因?yàn)榕渲梦募械挠成潢P(guān)系是將函數(shù)名與數(shù)據(jù)包名相對(duì)應(yīng),一個(gè)函數(shù)名唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)包名,因此通過某函數(shù)的函數(shù)名可以對(duì)應(yīng)數(shù)據(jù)包名,進(jìn)而就可以找到對(duì)應(yīng)的數(shù)據(jù)包。此種方法不需要按照數(shù)據(jù)包的存儲(chǔ)目錄來加載數(shù)據(jù)包,因而即使數(shù)據(jù)包的存儲(chǔ)目錄發(fā)生改變,也不會(huì)影響到數(shù)據(jù)包的加載。綜上所述,本申請(qǐng)所述的方法在程序配置完成后,載入種子文件和配置文件,其中,所述種子文件提供了程序預(yù)解析的功能,所述項(xiàng)目配置文件中配置了函數(shù)與數(shù)據(jù)包的映射關(guān)系,一個(gè)函數(shù)名唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)包名。根據(jù)種子文件對(duì)程序主邏輯進(jìn)行預(yù)解析,根據(jù)所述配置文件,自動(dòng)查找并加載與程序中各個(gè)函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包。可以自動(dòng)加載所需的數(shù)據(jù)包,無需人工配置加載數(shù)據(jù)包,減少了項(xiàng)目開發(fā)的時(shí)間,提高了項(xiàng)目開發(fā)的效率。并且配置文件中配置了函數(shù)與數(shù)據(jù)包的映射關(guān)系,唯一的函數(shù)對(duì)應(yīng)唯一的數(shù)據(jù)包,不需按照存儲(chǔ)目錄來加載,因此即使數(shù)據(jù)庫因維護(hù)、升級(jí)而導(dǎo)致數(shù)據(jù)包的存儲(chǔ)目錄發(fā)生變更,也不會(huì)影響數(shù)據(jù)包的加載,保證了程序的正確運(yùn)行。本申請(qǐng)?zhí)峁┝?Autoload即自動(dòng)加載數(shù)據(jù)包的功能,針對(duì)函數(shù)的數(shù)據(jù)包存儲(chǔ)路徑變更的情況,仍然可以自動(dòng)加載到該數(shù)據(jù)包。優(yōu)選的,步驟12,所述根據(jù)種子文件對(duì)程序主邏輯進(jìn)行預(yù)解析之后,還包括:掃描程序主邏輯中的各個(gè)模塊,查找所述模塊中的函數(shù)。步驟12中對(duì)程序主邏輯進(jìn)行預(yù)解析,及模擬運(yùn)行待執(zhí)行的代碼,因此接下來會(huì)掃描程序主邏輯中的各個(gè)模塊,查找各個(gè)模塊中的函數(shù)。優(yōu)選的,步驟13根據(jù)所述配置文件,自動(dòng)查找與程序中各個(gè)函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中,包括:步驟131,針對(duì)程序主邏輯中某一模塊的函數(shù),根據(jù)配置文件中該函數(shù)名唯一對(duì)應(yīng)的數(shù)據(jù)包名,查找該數(shù)據(jù)包并將所述數(shù)據(jù)包加載到項(xiàng)目中;上述步驟中查找到程序主邏輯中各個(gè)模塊的函數(shù)后,針對(duì)程序主邏輯中某一模塊的函數(shù),可以根據(jù)配置文件中函數(shù)和數(shù)據(jù)包的對(duì)應(yīng)關(guān)系,查找到該函數(shù)名唯一對(duì)應(yīng)的數(shù)據(jù)包名,進(jìn)而在系統(tǒng)中搜索該數(shù)據(jù)包,查找到以后,可以將該數(shù)據(jù)包加載到項(xiàng)目中。步驟132,繼續(xù)加載程序主邏輯中其他模塊的函數(shù)對(duì)應(yīng)的數(shù)據(jù)包,直至程序主邏輯中所有模塊的函數(shù)對(duì)應(yīng)的數(shù)據(jù)包都加載完畢。然后繼續(xù)查找程序主邏輯中其他模塊的函數(shù),根據(jù)配置文件對(duì)應(yīng)的數(shù)據(jù)包中函數(shù)和數(shù)據(jù)包的對(duì)應(yīng)關(guān)系,查找到該函數(shù)名唯一對(duì)應(yīng)的數(shù)據(jù)包名,進(jìn)而在系統(tǒng)中搜索到該數(shù)據(jù)包并加載到項(xiàng)目中,直至所有數(shù)據(jù)包加載完畢。例如,某一項(xiàng)目中包含5個(gè)模塊,首先掃描模塊1,模塊I中包含4個(gè)函數(shù),按照先后順序依次加載這4個(gè)函數(shù)對(duì)應(yīng)的數(shù)據(jù)包后,可以繼續(xù)掃描其他4個(gè)模塊,加載這4個(gè)模塊中各個(gè)函數(shù)對(duì)應(yīng)的數(shù)據(jù)包,直至所有5個(gè)模塊中函數(shù)對(duì)應(yīng)的數(shù)據(jù)包都加載完畢即可。具體實(shí)施中,本申請(qǐng)的一種實(shí)現(xiàn)方式叫做Sandbox (安全沙箱),Sandbox提供了對(duì)全局函數(shù)_31^010&(1()的支持(以兩個(gè)下劃線為前綴),這個(gè)函數(shù)可以返回一個(gè)映射表,在這個(gè)映射表中給出了類或方法的函數(shù)名和數(shù)據(jù)包名的映射關(guān)系,一個(gè)函數(shù)名唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)包名。通過定義_3機(jī)010&(1()全局函數(shù),可以針對(duì)所有可能用到的類或方法的函數(shù),配置和函數(shù)對(duì)應(yīng)的數(shù)據(jù)包。所述的配置文件就是在其中配置好T_aut0l0ad()全局函數(shù)中函數(shù)名和數(shù)據(jù)包名的唯一對(duì)應(yīng)關(guān)系。例如,一種編程實(shí)現(xiàn)方式為:
      function —autoload(){ return {
      'MyClass I': 'MyClass l.js', 'A.B.C.D'i'MyClassl.js',
      'MyClass2': 'MyClass2.j s',
      ’X.Y.Z':'MyClass2.js’
      };
      }優(yōu)選的,所述種子文件中配置了數(shù)據(jù)包之間在項(xiàng)目框架實(shí)現(xiàn)中的依賴關(guān)系,所述的方法還包括:根據(jù)所述種子文件,自動(dòng)查找已加載數(shù)據(jù)包所依賴的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中,直至所有數(shù)據(jù)包加載完畢。種子文件中還配置了數(shù)據(jù)包之間在項(xiàng)目框架實(shí)現(xiàn)中的依賴關(guān)系,即在項(xiàng)目框架實(shí)現(xiàn)中,例如,項(xiàng)目框架中包含5個(gè)模塊,模塊I包含4個(gè)數(shù)據(jù)包,模塊2中包含6個(gè)數(shù)據(jù)包。而在項(xiàng)目實(shí)現(xiàn)時(shí)模塊I和模塊2之間具有關(guān)聯(lián),為實(shí)現(xiàn)此關(guān)聯(lián)就需要數(shù)據(jù)包X,而模塊I的數(shù)據(jù)包2需要依賴數(shù)據(jù)包y,才能在項(xiàng)目中實(shí)現(xiàn)它的相應(yīng)功能。因此針對(duì)已經(jīng)根據(jù)配置文件加載的數(shù)據(jù)包,即已加載數(shù)據(jù)包,可以根據(jù)種子文件中的配置,自動(dòng)查找該數(shù)據(jù)包所依賴的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中,直至所有數(shù)據(jù)包加載完畢。例如,種子文件中配置:數(shù)據(jù)包I依賴數(shù)據(jù)包2,數(shù)據(jù)包2依賴數(shù)據(jù)包3 ;根據(jù)配置文件中配置:程序中的函數(shù)X對(duì)應(yīng)數(shù)據(jù)包I。預(yù)解析程序主邏輯時(shí),模擬運(yùn)行到函數(shù)X,此時(shí)會(huì)自動(dòng)查找并將數(shù)據(jù)包I加入到項(xiàng)目中。然后根據(jù)種子文件,其中配置了數(shù)據(jù)包I依賴數(shù)據(jù)包2,自動(dòng)查找并將數(shù)據(jù)包2加入到項(xiàng)目中。繼續(xù)判斷是否有未加載的數(shù)據(jù)包,此時(shí)種子文件中配置了數(shù)據(jù)包2依賴數(shù)據(jù)包3,就可以自動(dòng)查找并將數(shù)據(jù)包3加入到項(xiàng)目中。再判斷是否有未加載的數(shù)據(jù)包,此時(shí)所有數(shù)據(jù)包都加載完畢了。針對(duì)Sandbox這種實(shí)現(xiàn)方式,Sandbox實(shí)現(xiàn)了 “動(dòng)態(tài)構(gòu)建模塊樹”的功能來實(shí)現(xiàn)數(shù)據(jù)包的加載。也就是說,基于Sandbox編寫項(xiàng)目程序代碼時(shí),不需要預(yù)先在程序代碼中定義好數(shù)據(jù)包的依賴關(guān)系。因?yàn)橐呀?jīng)在Sandbox的種子文件中預(yù)先配置了數(shù)據(jù)包之間的依賴關(guān)系,因此若已加載的數(shù)據(jù)包依賴了其他的數(shù)據(jù)包,Sandbox會(huì)自動(dòng)去加載它所依賴的數(shù)據(jù)包。具體實(shí)現(xiàn)時(shí),每個(gè)包的主邏輯代碼可以都閉包在一個(gè)函數(shù)中,如下列的編程實(shí)現(xiàn)方式:
      Sandbox.add(function(S) {
      //這個(gè)數(shù)據(jù)包的主邏輯。
      },{
      requires: ['a.js'] //這個(gè)數(shù)據(jù)包 依賴的另外一個(gè)數(shù)據(jù)包。
      };所述“動(dòng)態(tài)構(gòu)建模塊樹”的功能就是不會(huì)立即執(zhí)行數(shù)據(jù)包的邏輯,而是先將邏輯保存到一個(gè)棧內(nèi),然后加載對(duì)應(yīng)的數(shù)據(jù)包,等所有依賴的數(shù)據(jù)包文件都加載完成后,再根據(jù)依賴關(guān)系順次執(zhí)行每個(gè)包的邏輯。此時(shí)可以保證程序執(zhí)行時(shí)的邏輯順序不出現(xiàn)問題,先執(zhí)行所依賴數(shù)據(jù)包中的邏輯,再執(zhí)行主邏輯。優(yōu)選的,所述直至所有數(shù)據(jù)包加載完畢之后,還包括:根據(jù)種子文件對(duì)已加載數(shù)據(jù)包中程序的主邏輯進(jìn)行預(yù)解析;上述步驟中將程序主邏輯對(duì)應(yīng)的所有數(shù)據(jù)包都加載完畢后,為了實(shí)現(xiàn)數(shù)據(jù)包中程序的功能,可以根據(jù)種子文件中程序預(yù)解析的功能,對(duì)已經(jīng)加載的數(shù)據(jù)包的程序進(jìn)行預(yù)解析,模擬運(yùn)行待執(zhí)行的代碼。根據(jù)所述配置文件,自動(dòng)查找與數(shù)據(jù)包程序中函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載項(xiàng)目中。根據(jù)配置文件中函數(shù)與數(shù)據(jù)包的映射關(guān)系,一個(gè)函數(shù)名唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)包名,因此通過某函數(shù)的函數(shù)名可以對(duì)應(yīng)數(shù)據(jù)包名,可以自動(dòng)查找與該函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,然后將所述數(shù)據(jù)包加載到項(xiàng)目中。此種方法不需要按照數(shù)據(jù)包的存儲(chǔ)目錄來加載數(shù)據(jù)包,因而即使數(shù)據(jù)包的存儲(chǔ)目錄發(fā)生改變,也不會(huì)影響到數(shù)據(jù)包的加載。根據(jù)配置文件將程序中函數(shù)對(duì)應(yīng)的數(shù)據(jù)包都加載完畢后,還可以根據(jù)種子文件中配置的數(shù)據(jù)包之間的依賴關(guān)系,查找已加載數(shù)據(jù)包所依賴的其他數(shù)據(jù)包,直至所有數(shù)據(jù)包加載完畢?,F(xiàn)有技術(shù)中的“包管理”機(jī)制只實(shí)現(xiàn)了傳統(tǒng)的數(shù)據(jù)包載入,即先手動(dòng)引入數(shù)據(jù)包,再使用這個(gè)數(shù)據(jù)包中定義的類或函數(shù)。本申請(qǐng)將可以手動(dòng)引入數(shù)據(jù)包這一步操作省略掉,在編寫程序時(shí)直接調(diào)用“未知的”類或方法,對(duì)程序的預(yù)解析中可以自動(dòng)加載“未知的”類或方法的數(shù)據(jù)包。舉例來說,現(xiàn)有技術(shù)的YUILoader方法中,當(dāng)頁面引入了庫文件之后,要調(diào)用方法Y.Node.getDOMNode (),需要編寫如下的程序:
      YUI().use('node',function(Y) {
      //Y.Node.getDOMNode方法的定義在模塊node中,因此要先引用node //即 use('node'),類似 import 'node'
      Y.Node.getDOMNode();//然后調(diào)用這個(gè)方法
      });由上述可知,此處是手動(dòng)載入了 node`,而本申請(qǐng)進(jìn)一步簡(jiǎn)化了這步操作,若基于Sandbox來寫代碼,頁面引入了庫文件后,編寫如下的程序即可:
      Sandbox.ready(function(S) {
      //直接調(diào)用這個(gè)“未知’’方法,不用手動(dòng)載入`實(shí)現(xiàn)這個(gè)方法的包或外部
      文件
      Y.Node.getDOMNodeQ;
      });參照?qǐng)D2,其給出了本申請(qǐng)優(yōu)選實(shí)施例所述一種項(xiàng)目開發(fā)中程序主邏輯數(shù)據(jù)包的加載方法流程圖。步驟201,編寫程序代碼時(shí),首先編寫載入種子文件和配置文件的語句;步驟202,繼續(xù)編寫程序主邏輯中的相關(guān)函數(shù)和其他代碼;步驟203,載入種子文件對(duì)程序主邏輯進(jìn)行預(yù)解析;步驟204,載入程序主邏輯各個(gè)函數(shù)對(duì)應(yīng)的數(shù)據(jù)包;步驟205,判斷是否有未載入的數(shù)據(jù)包;此時(shí)可以依據(jù)種子文件中數(shù)據(jù)包之間的依賴關(guān)系,將已加載數(shù)據(jù)包依賴的其他數(shù)據(jù)包都加載項(xiàng)目中。若是,則執(zhí)行步驟206,若否,則執(zhí)行步驟207。步驟206,加載該數(shù)據(jù)包;步驟207,程序主邏輯的數(shù)據(jù)包加載完畢??梢灶A(yù)解析已加載的數(shù)據(jù)包中程序的主邏輯,即圖3的過程,圖3過程執(zhí)行完畢后,后續(xù)可以執(zhí)行程序主邏輯。參照?qǐng)D3,其給出了本申請(qǐng)優(yōu)選實(shí)施例所述一種項(xiàng)目開發(fā)中數(shù)據(jù)包中程序主邏輯的數(shù)據(jù)包加載方法流程圖。步驟301,針對(duì)已加載的數(shù)據(jù)包,預(yù)解析數(shù)據(jù)包中程序的主邏輯;步驟302,加載主邏輯中函數(shù)對(duì)應(yīng)的數(shù)據(jù)包;步驟303,判斷是否有未載入的數(shù)據(jù)包;此時(shí)可以依據(jù)種子文件中數(shù)據(jù)包之間的依賴關(guān)系,將已加載數(shù)據(jù)包依賴的其他數(shù)據(jù)包都加載項(xiàng)目中。若存在,則執(zhí)行步驟304,若不存在,則執(zhí)行步驟305。步驟304,加載該數(shù)據(jù)包;步驟305,數(shù)據(jù)包程序主邏輯的數(shù)據(jù)包加載完畢。后續(xù)可以執(zhí)行數(shù)據(jù)包程序的主邏輯。數(shù)據(jù)包之間在項(xiàng)目實(shí)現(xiàn)中還可能存在固有的依賴關(guān)系,若沒有將具有依賴關(guān)系的數(shù)據(jù)包都加載到項(xiàng)目中,也可能導(dǎo)致程序運(yùn)行的失敗。因此本申請(qǐng)?jiān)诜N子文件中配置了數(shù)據(jù)包之間在項(xiàng)目實(shí)現(xiàn)中的依賴關(guān)系,可以將已加載數(shù)據(jù)包所以來的其他數(shù)據(jù)包都加載到項(xiàng)目中,省去了現(xiàn)有技術(shù)中人工查找數(shù)據(jù)包之間依賴關(guān)系的繁瑣過程,更進(jìn)一步的節(jié)省項(xiàng)目開發(fā)的時(shí)間,保證了程序的正確運(yùn)行。本申請(qǐng)以JavaScript為基礎(chǔ),在客戶端瀏覽器中創(chuàng)新性的實(shí)現(xiàn)了 autoload機(jī)制,運(yùn)行環(huán)境可以是在客戶端瀏覽器中,兼容IE6-1E9,F(xiàn)irefox3.0+, Chrome5+、Safari4+和0pera9+等主流瀏覽器。參照?qǐng)D4,其給出了本申請(qǐng)實(shí)施例所述一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載系統(tǒng)結(jié)構(gòu)圖。相應(yīng)的,本申請(qǐng)還提供了一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載系統(tǒng),包括:載入模塊11、預(yù)解析模塊12和第一加載數(shù)據(jù)包模塊14,其中,載入模塊11,用于載入種子文件和配置文件,其中,所述種子文件提供了程序預(yù)解析的功能,所述項(xiàng)目配置文件中配置了函數(shù)與數(shù)據(jù)包的映射關(guān)系,一個(gè)函數(shù)名唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)包名;預(yù)解析模塊12,用于根據(jù)種子文件對(duì)程序主邏輯進(jìn)行預(yù)解析;第一加載數(shù)據(jù)包模塊14,用于根據(jù)所述配置文件,自動(dòng)查找與程序中各個(gè)函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中。優(yōu)選的,所述的系統(tǒng)還包括:掃描并查找模塊13,用于掃描程序主邏輯中的各個(gè)模塊,查找所述模塊中的函數(shù)。優(yōu)選的,第一加載數(shù)據(jù)包模塊14,包括:第一加載子模塊141,用于針對(duì)程序主邏輯中某一模塊的函數(shù),根據(jù)配置文件中該函數(shù)名唯一對(duì)應(yīng)的數(shù)據(jù)包名,查找該數(shù)據(jù)包并將所述數(shù)據(jù)包加載到項(xiàng)目中;第二加載子模塊142,用于繼續(xù)加載程序主邏輯中其他模塊的函數(shù)對(duì)應(yīng)的數(shù)據(jù)包,直至程序主邏輯中所有模塊的函數(shù)對(duì)應(yīng)的數(shù)據(jù)包都加載完畢。優(yōu)選的,所述的系統(tǒng)還包括:第二加載數(shù)據(jù)包模塊15,用于根據(jù)所述種子文件,自動(dòng)查找已加載數(shù)據(jù)包所依賴的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中,直至所有數(shù)據(jù)包加載完畢。預(yù)解析數(shù)據(jù)包模塊16,用于根據(jù)所述種子文件對(duì)已加載數(shù)據(jù)包中程序的主邏輯進(jìn)行預(yù)解析。
      第三加載數(shù)據(jù)包模塊17,用于根據(jù)所述配置文件,自動(dòng)查找與數(shù)據(jù)包程序中函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載項(xiàng)目中。對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或
      者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)......”限定的要素,
      并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。以上對(duì)本申請(qǐng)所提供的一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載方法及系統(tǒng),進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式
      及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
      權(quán)利要求
      1.一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載方法,其特征在于,包括: 載入種子文件和配置文件,其中,所述種子文件提供了程序預(yù)解析的功能,所述項(xiàng)目配置文件中配置了函數(shù)與數(shù)據(jù)包的映射關(guān)系,一個(gè)函數(shù)名唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)包名; 根據(jù)種子文件對(duì)程序主邏輯進(jìn)行預(yù)解析; 根據(jù)所述配置文件,自動(dòng)查找與程序中各個(gè)函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)種子文件對(duì)程序主邏輯進(jìn)行預(yù)解析之后,還包括: 掃描程序主邏輯中的各個(gè)模塊,查找所述模塊中的函數(shù)。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,根據(jù)所述配置文件,自動(dòng)查找與程序中各個(gè)函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中,包括: 針對(duì)程序主邏輯中某一模塊的函數(shù),根據(jù)配置文件中該函數(shù)名唯一對(duì)應(yīng)的數(shù)據(jù)包名,查找該數(shù)據(jù)包并將所述數(shù)據(jù)包加載到項(xiàng)目中; 繼續(xù)加載程序主邏輯中其他模塊的函數(shù)對(duì)應(yīng)的數(shù)據(jù)包,直至程序主邏輯中所有模塊的函數(shù)對(duì)應(yīng)的數(shù)據(jù)包都加載完畢。
      4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述種子文件中還配置了數(shù)據(jù)包之間在項(xiàng)目框架實(shí)現(xiàn)中的依賴關(guān)系,所述的方法還包括: 根據(jù)所述種子文件,自動(dòng)查找已加載數(shù)據(jù)包所依賴的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中,直至所有數(shù)據(jù)包加載完畢。
      5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述直至所有數(shù)據(jù)包加載完畢之后,還包括: 根據(jù)種子文件對(duì)已加載數(shù)據(jù)包中程序的主邏輯進(jìn)行預(yù)解析; 根據(jù)所述配置文件,自動(dòng)查找與數(shù)據(jù)包程序中函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載項(xiàng)目中。
      6.一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載系統(tǒng),其特征在于,包括: 載入模塊,用于載入種子文件和配置文件,其中,所述種子文件提供了程序預(yù)解析的功能,所述項(xiàng)目配置文件中配置了函數(shù)與數(shù)據(jù)包的映射關(guān)系,一個(gè)函數(shù)名唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)包名; 預(yù)解析模塊,用于根據(jù)種子文件對(duì)程序主邏輯進(jìn)行預(yù)解析; 第一加載數(shù)據(jù)包模塊,用于根據(jù)所述配置文件,自動(dòng)查找與程序中各個(gè)函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中。
      7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,還包括: 掃描并查找模塊,用于掃描程序主邏輯中的各個(gè)模塊,查找所述模塊中的函數(shù)。
      8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述第一加載數(shù)據(jù)包模塊,包括: 第一加載子模塊,用于針對(duì)程序主邏輯中某一模塊的函數(shù),根據(jù)配置文件中該函數(shù)名唯一對(duì)應(yīng)的數(shù)據(jù)包名,查找該數(shù)據(jù)包并將所述數(shù)據(jù)包加載到項(xiàng)目中; 第二加載子模塊,用于繼續(xù)加載程序主邏輯中其他模塊的函數(shù)對(duì)應(yīng)的數(shù)據(jù)包,直至程序主邏輯中所有模塊的函數(shù)對(duì)應(yīng)的數(shù)據(jù)包都加載完畢。
      9.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,還包括:第二加載數(shù)據(jù)包模塊,用于根據(jù)所述種子文件,自動(dòng)查找已加載數(shù)據(jù)包所依賴的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中,直至所有數(shù)據(jù)包加載完畢。
      10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,還包括: 預(yù)解析數(shù)據(jù)包模塊,用于根據(jù)所述種子文件對(duì)已加載數(shù)據(jù)包中程序的主邏輯進(jìn)行預(yù)解析。
      第三加載數(shù)據(jù)包模塊,用于根據(jù)所述配置文件,自動(dòng)查找與數(shù)據(jù)包程序中函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,并將所述數(shù)據(jù) 包加載項(xiàng)目中。
      全文摘要
      本發(fā)明提供了一種項(xiàng)目開發(fā)中數(shù)據(jù)包的加載方法及系統(tǒng),以解決人工加載數(shù)據(jù)包影響項(xiàng)目開發(fā)時(shí)間和效率的問題。所述的方法包括載入種子文件和配置文件,其中,所述種子文件提供了程序預(yù)解析的功能,所述項(xiàng)目配置文件中配置了函數(shù)與數(shù)據(jù)包的映射關(guān)系,一個(gè)函數(shù)名唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)包名;根據(jù)種子文件對(duì)程序主邏輯進(jìn)行預(yù)解析;根據(jù)所述配置文件,自動(dòng)查找與程序中各個(gè)函數(shù)唯一對(duì)應(yīng)的數(shù)據(jù)包,并將所述數(shù)據(jù)包加載到項(xiàng)目中??梢宰詣?dòng)加載所需的數(shù)據(jù)包,無需人工配置加載數(shù)據(jù)包,減少了項(xiàng)目開發(fā)的時(shí)間,提高了項(xiàng)目開發(fā)的效率。
      文檔編號(hào)G06F9/445GK103207787SQ201210009029
      公開日2013年7月17日 申請(qǐng)日期2012年1月12日 優(yōu)先權(quán)日2012年1月12日
      發(fā)明者李晶 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1