本申請(qǐng)涉及軟件技術(shù)領(lǐng)域,尤其涉及一種組件功能的實(shí)現(xiàn)方法和裝置。
背景技術(shù):
用戶在使用各種網(wǎng)絡(luò)應(yīng)用時(shí),經(jīng)常需要在用戶設(shè)備的客戶端或?yàn)g覽器頁面中輸入指定的信息,以便服務(wù)提供商能夠完成對(duì)用戶的服務(wù)。通常服務(wù)提供商采用表單的形式來收集用戶的信息。
在一些應(yīng)用場(chǎng)景中,當(dāng)用戶依照表單顯示的項(xiàng)目完成輸入后,運(yùn)行在用戶設(shè)備上的客戶端或?yàn)g覽器會(huì)對(duì)用戶的輸入進(jìn)行校驗(yàn),看是否符合服務(wù)提供商為該表單項(xiàng)設(shè)定的輸入類型。例如,當(dāng)某個(gè)表單項(xiàng)請(qǐng)用戶輸入手機(jī)號(hào)碼時(shí),在用戶完成輸入時(shí),會(huì)檢查用戶輸入的是否是11位數(shù)字,如果不是,則播放提示音并在該表單欄后顯示輸入錯(cuò)誤,以告知用戶輸入的手機(jī)號(hào)碼需要修改。
對(duì)用戶輸入的采集和校驗(yàn)通常由客戶端或網(wǎng)頁代碼中的表單組件來完成?,F(xiàn)有技術(shù)中,開發(fā)人員采用命令式的編程方式來實(shí)現(xiàn)輸入校驗(yàn),即在表單組件的代碼中寫入對(duì)輸入內(nèi)容進(jìn)行校驗(yàn)的具體判斷過程。這種方式在代碼的生成和維護(hù)上都需要花費(fèi)較多的時(shí)間和精力,例如,在生成代碼時(shí)要分別針對(duì)每個(gè)表單項(xiàng)來分別編碼程序;再如,當(dāng)修改表單項(xiàng)的輸入類型時(shí),要重復(fù)校驗(yàn)該表單項(xiàng)輸入內(nèi)容的語句編寫和程度調(diào)試過程,難以達(dá)到理想的開發(fā)效率。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)?zhí)峁┮环N組件功能的實(shí)現(xiàn)方法,所述組件為封裝有外層組件的內(nèi)層組件,所述外層組件中包括采用聲明式語法描述的所述功能的可配置功能屬性;所述方法包括:
在內(nèi)層組件中獲取所述可配置功能屬性的屬性值,并傳遞給外層組件;
在監(jiān)聽到與所述功能相關(guān)的事件后,由內(nèi)層組件收集事件信息并將事件信息傳遞給外層組件;
在外層組件中基于所述事件信息、運(yùn)行由可配置功能屬性的屬性值確定的功能。
本申請(qǐng)還提供了一種組件功能的實(shí)現(xiàn)裝置,所述組件為封裝有外層組件的內(nèi)層組件,所述外層組件中包括采用聲明式語法描述的所述功能的可配置功能屬性;所述裝置包括:
屬性值傳遞單元,用于在內(nèi)層組件中獲取所述可配置功能屬性的屬性值,并傳遞給外層組件;
事件信息傳遞單元,用于在監(jiān)聽到與所述功能相關(guān)的事件后,由內(nèi)層組件收集事件信息并將事件信息傳遞給外層組件;
組件功能運(yùn)行單元,用于在外層組件中基于所述事件信息、運(yùn)行由可配置功能屬性的屬性值確定的功能。
由以上技術(shù)方案可見,本申請(qǐng)的實(shí)施例中,在外層組件中以聲明式編程方式規(guī)定組件功能的可配置功能屬性,由內(nèi)層組件中確定可配置功能屬性的具體屬性值;在外層組件收到內(nèi)層組件與該功能相關(guān)的事件信息后,按照事件信息、可配置功能屬性的屬性值來運(yùn)行相應(yīng)的功能;這樣,功能的具體實(shí)現(xiàn)采用聲明式編程在外層組件中實(shí)現(xiàn),在內(nèi)層組件中只需確定可配置功能屬性的屬性值、收集并傳遞與功能相關(guān)的事件信息,即可實(shí)現(xiàn)功能的運(yùn)行;外層組件能夠復(fù)用于用于多個(gè)內(nèi)層組件,并且在內(nèi)層組件的功能變化時(shí)只要修改屬性值和收集的事件信息即可,簡(jiǎn)化了內(nèi)層組件代碼的生成和維護(hù),極大的提高了開發(fā)效率。
附圖說明
圖1是本申請(qǐng)實(shí)施例中一種組件功能的實(shí)現(xiàn)方法的流程圖;
圖2是本申請(qǐng)實(shí)施例所運(yùn)行的設(shè)備的一種硬件結(jié)構(gòu)圖;
圖3是本申請(qǐng)實(shí)施例中一種組件功能的實(shí)現(xiàn)裝置的邏輯結(jié)構(gòu)圖。
具體實(shí)施方式
本申請(qǐng)的實(shí)施例提出一種新的組件功能的實(shí)現(xiàn)方法,以提供某項(xiàng)功能的組件為內(nèi)層組件,在其上封裝外層組件,在外層組件中規(guī)定功能的可配置功能屬性并采用聲明式編程實(shí)現(xiàn)由可配置功能屬性可能屬性值確定的功能;這樣在內(nèi)層組件中確定可配置功能屬性的具體屬性值、收集與功能相關(guān)的事件信息并傳遞給外層組件后,即可由外層組件實(shí)現(xiàn)對(duì)應(yīng)的功能,使得內(nèi)層組件的編程實(shí)現(xiàn)和代碼維護(hù)得以簡(jiǎn)化,同時(shí)外層組件可以通用于要實(shí)現(xiàn)類似功能的內(nèi)層組件,從而解決現(xiàn)有技術(shù)中存在的問題。
本申請(qǐng)的實(shí)施例可以應(yīng)用在任何具有計(jì)算和存儲(chǔ)能力的設(shè)備上,例如可以是手機(jī)、平板電腦、pc(personalcomputer,個(gè)人電腦)、筆記本、服務(wù)器、虛擬機(jī)等物理設(shè)備或邏輯設(shè)備;也可以由兩個(gè)或兩個(gè)以上分擔(dān)不同職責(zé)的物理或邏輯設(shè)備、相互協(xié)同來實(shí)現(xiàn)本申請(qǐng)實(shí)施例中的各項(xiàng)功能。
本申請(qǐng)的實(shí)施例中,以要實(shí)現(xiàn)某項(xiàng)或某些項(xiàng)功能的組件為內(nèi)層組件,創(chuàng)建外層組件來封裝該內(nèi)層組件。在外層組件中采用聲明式語法定義該外層組件支持的每種組件功能的可配置功能屬性,并且在外層組件中實(shí)現(xiàn)支持上述所有可配置功能屬性的各種屬性值的功能。
也就是說,抽象化(能夠通用于所有屬性值)的功能在外層組件中采用聲明式編程方式實(shí)現(xiàn);內(nèi)層組件可以在外層組件中對(duì)可配置功能屬性的定義范圍內(nèi),通過指定可配置功能屬性的屬性值來將實(shí)現(xiàn)的功能的具體化(以適用于該內(nèi)層組件服務(wù)的應(yīng)用場(chǎng)景),并將其指定的屬性值傳遞給外層組件。其中,外層組件中一項(xiàng)到多項(xiàng)功能的可配置功能屬性的定義范圍可以包括外層組件支持哪些功能、每項(xiàng)功能的可配置功能屬性有哪些,此外還可以包括允許每個(gè)可配置功能屬性的取值范圍是什么等等。
將哪些功能屬性作為某項(xiàng)功能的可配置功能屬性可以根據(jù)該項(xiàng)功能的特點(diǎn)、外層組件要支持的內(nèi)層組件的應(yīng)用場(chǎng)景類型等因素來確定,本申請(qǐng)的實(shí)施例不做限定。例如,對(duì)于表單組件的用戶輸入校驗(yàn)功能,可以將輸入類型作為可配置功能屬性,在內(nèi)層組件中指定表單項(xiàng)的輸入類型后,在外層組件中校驗(yàn)用戶的輸入內(nèi)容是否符合該指定的輸入類型;再如,對(duì)于頁面組件的圖標(biāo)移動(dòng)功能,可以將當(dāng)前頁面上的圖標(biāo)及其排列方式作為可配置功能屬性,由內(nèi)層組件將當(dāng)前頁面上的圖標(biāo)排列傳遞給外層組件,以便外層組件按照根據(jù)用戶對(duì)圖標(biāo)的移動(dòng)操作來重新排列頁面上的圖標(biāo)。
此外,可以根據(jù)組件運(yùn)行的硬件和軟件系統(tǒng)環(huán)境、采用的編程語言等因素來確定組件封裝的具體方式、和內(nèi)層組件向外層組件傳遞屬性值的具體方式。通常都可以采用現(xiàn)有技術(shù)中編程語言和開發(fā)框架提供的工具,例如,在javascript語言中,可以采用高階組件的方式來進(jìn)行內(nèi)層組件的封裝(即外層組件是內(nèi)層組件的高階組件),采用es2015(europeancomputermanufacturersassociationscript2015,由歐洲計(jì)算機(jī)制造商協(xié)會(huì)制定的標(biāo)準(zhǔn)化腳本語言的2015版本)中的解構(gòu)運(yùn)算符來進(jìn)行屬性值的傳遞。
本申請(qǐng)的實(shí)施例中,組件功能的實(shí)現(xiàn)方法的流程如圖1所示,該方法應(yīng)用在組件運(yùn)行的設(shè)備上。
步驟110,在內(nèi)層組件中獲取所述可配置功能屬性的屬性值,并傳遞給外層組件。
根據(jù)應(yīng)用場(chǎng)景的具體實(shí)現(xiàn)、功能的特點(diǎn)和可配置功能屬性的特點(diǎn)等因素,內(nèi)層組件可以采用各種方式獲得可配置功能屬性的屬性值。例如,可以由開發(fā)人員將屬性值寫入代碼,內(nèi)層組件在運(yùn)行過程中即可得到屬性值;內(nèi)層組件可以讀取預(yù)定存儲(chǔ)位置的配置文件來獲得某項(xiàng)功能的可配置功能屬性的屬性值;內(nèi)層組件也可以基于已知參數(shù)或已知對(duì)象,計(jì)算出某項(xiàng)功能的可配置功能屬性的屬性值;等等。
在得到要實(shí)現(xiàn)功能的可配置功能屬性的具體屬性值后,內(nèi)層組件將這些屬性值傳遞給外層組件。
步驟120,在監(jiān)聽到與所述功能相關(guān)的事件后,由內(nèi)層組件收集事件信息并將事件信息傳遞給外層組件。
步驟130,在外層組件中基于事件信息、運(yùn)行由可配置功能屬性的屬性值確定的功能。
內(nèi)層組件對(duì)與要實(shí)現(xiàn)的功能相關(guān)的事件進(jìn)行監(jiān)聽,并在監(jiān)聽到相關(guān)事件發(fā)生時(shí),收集事件信息。
與某項(xiàng)功能相關(guān)的事件包括啟動(dòng)該項(xiàng)功能、運(yùn)行作為該項(xiàng)功能組成部分的某個(gè)處理過程、結(jié)束該項(xiàng)功能等的事件;事件可以由用戶操作引發(fā),也可以由其他組件的運(yùn)行過程引發(fā),還可以由所在設(shè)備的硬件或軟件狀態(tài)引發(fā);本申請(qǐng)的實(shí)施例對(duì)事件的類型及來源均不做限定。
在內(nèi)層組件中收集的事件信息包括外層組件完成由可配置功能屬性的具體屬性值確定的功能所需的所有事件信息,可根據(jù)功能的類型和內(nèi)層組件的應(yīng)用場(chǎng)景來確定。例如,對(duì)一些所在設(shè)備的硬件或軟件狀態(tài)引發(fā)的事件,事件信息可以僅包括事件本身(如所在設(shè)備處于極低電量狀態(tài));再如,對(duì)一些只支持單一事件的應(yīng)用場(chǎng)合,事件信息可以只包括事件參數(shù);又如,對(duì)一些用戶操作引發(fā)的事件,事件信息可以包括事件本身和事件參數(shù)(如移動(dòng)圖標(biāo)的操作事件,以及移動(dòng)前和移動(dòng)后的圖標(biāo)位置)。
內(nèi)層組件可以自行對(duì)與某項(xiàng)功能相關(guān)的事件進(jìn)行監(jiān)聽并收集事件信息,也可以調(diào)用其他組件、函數(shù)或過程來監(jiān)聽并收集事件信息,不做限定。事件監(jiān)聽和事件信息收集可以參照現(xiàn)有技術(shù)實(shí)現(xiàn),不再贅述。
內(nèi)層組件完成事件信息的收集后,將事件信息傳遞給外層組件。在外層組件中采用事件信息,運(yùn)行由可配置功能屬性的屬性值確定的對(duì)該事件的處理過程,從而實(shí)現(xiàn)由步驟110中傳遞的屬性值具體化的功能。
可以根據(jù)內(nèi)層組件和外層組件運(yùn)行的硬件和軟件系統(tǒng)環(huán)境、采用的編程語言、具體實(shí)現(xiàn)等因素來確定內(nèi)層組件向外層組件傳遞事件信息的方式,本申請(qǐng)的實(shí)施例不做限定。
例如,外層組件可以為與某項(xiàng)功能相關(guān)的事件信息設(shè)置狀態(tài),當(dāng)內(nèi)層組件在監(jiān)聽到與該項(xiàng)功能相關(guān)的事件后,收集事件信息,并根據(jù)事件信息更新外層組件中該事件信息的狀態(tài);當(dāng)外層組件檢測(cè)到該項(xiàng)功能的事件信息狀態(tài)發(fā)生更新時(shí),根據(jù)更新后的狀態(tài)運(yùn)行由可配置功能屬性的屬性值確定的功能;事件信息的狀態(tài)中包括該事件信息中所有變量(包括所發(fā)生的事件和事件參數(shù))的更新值。在一些應(yīng)用場(chǎng)景中,外層組件可能需要在運(yùn)行相應(yīng)的功能后重置事件信息的狀態(tài),以便對(duì)下一次的狀態(tài)更新進(jìn)行處理。
外層組件中運(yùn)行運(yùn)行由可配置功能屬性的屬性值確定的功能的具體實(shí)現(xiàn)可根據(jù)事件信息和功能類型,采用聲明式編程方式參照現(xiàn)有技術(shù)實(shí)現(xiàn)。在事件信息包括所發(fā)生的事件和/或事件參數(shù)的應(yīng)用場(chǎng)景中,可以在外層組件中根據(jù)所發(fā)生的事件、或所發(fā)生事件的事件信息、或所發(fā)生的事件及其事件參數(shù),運(yùn)行由可配置功能屬性的屬性值確定的功能。
以內(nèi)層組件中要實(shí)現(xiàn)的功能為校驗(yàn)用戶在表單域中的輸入是否符合指定輸入類型為例,外層組件提供的可配置功能屬性包括表單域的輸入類型和錯(cuò)誤提示信息;內(nèi)層組件中指定某個(gè)表單項(xiàng)的輸入類型和錯(cuò)誤提示信息后,傳遞給外層組件;內(nèi)層組件調(diào)用操作系統(tǒng)提供的函數(shù)對(duì)用戶在表單項(xiàng)中的輸入進(jìn)行監(jiān)聽,當(dāng)用戶完成輸入后,將操作系統(tǒng)從該表單項(xiàng)中接收的輸入信息傳遞給外層組件;在外層組件收到該表單項(xiàng)的輸入信息后,校驗(yàn)輸入信息是否符合內(nèi)層組件為該表單項(xiàng)指定的輸入類型;如果不符合,顯示內(nèi)層組件指定的錯(cuò)誤提示信息;如果符合并且已經(jīng)顯示了內(nèi)層組件指定的錯(cuò)誤提示信息,說明用戶將以前輸入的不符合要求的輸入信息修改到已經(jīng)符合要求,則清除對(duì)錯(cuò)誤提示信息的顯示。
可見,本申請(qǐng)的實(shí)施例中,以提供某項(xiàng)功能的組件為內(nèi)層組件封裝外層組件,在外層組件中以聲明式編程方式規(guī)定該項(xiàng)功能的可配置功能屬性,由內(nèi)層組件中確定可配置功能屬性的具體屬性值并收集與功能相關(guān)的事件信息,由外層組件按照事件信息、可配置功能屬性的屬性值來實(shí)現(xiàn)相應(yīng)的功能;從而使得外層組件能夠復(fù)用于用于多個(gè)內(nèi)層組件,同時(shí)使得內(nèi)層組件的編程實(shí)現(xiàn)和代碼維護(hù)得以簡(jiǎn)化,在內(nèi)層組件的功能變化時(shí)只要修改屬性值和收集的事件信息即可,提高了開發(fā)效率。
在本申請(qǐng)的一個(gè)應(yīng)用示例中,采用javascript語言的表單組件中的一個(gè)表單輸入項(xiàng)為郵箱地址,希望實(shí)現(xiàn)對(duì)用戶的輸入內(nèi)容是否是郵箱地址進(jìn)行校驗(yàn)的功能。
采用react(由facebook開發(fā)的javascript庫)高階組件的方式,在表單組件上封裝外層組件,該外層組件為一個(gè)新的表單組件,其使用方式與原來的表單組件完全一樣。為敘述方面,以下稱原來的表單組件為內(nèi)層表單組件,封裝的高階組件為外層表單組件。
在外層表單組件中,定義了輸入校驗(yàn)功能的可配置功能屬性,包括是否必須、必須時(shí)的提示信息、輸入類型、輸入錯(cuò)誤時(shí)的提示信息,并且采用聲明式編程方式實(shí)現(xiàn)了校驗(yàn)用戶是否輸入了必須表單項(xiàng)、在為輸入必須表單項(xiàng)時(shí)顯示必須時(shí)的提示信息、輸入內(nèi)容是否符合輸入類型的功能、在輸入內(nèi)容不符合輸入類型時(shí)顯示輸入錯(cuò)誤時(shí)的提示信息的功能。
外層表單組件通過組件屬性將其支持的輸入校驗(yàn)功能的可配置功能屬性傳遞給內(nèi)層表單組件。在內(nèi)層組件中將函數(shù)調(diào)用集成到表單域的聲明過程中,在函數(shù)中指定可配置功能屬性的具體屬性值,并通過es2015提供的解構(gòu)運(yùn)算符“…”將該函數(shù)的返回值解構(gòu)并傳給外層表單組件。
在一個(gè)例子中,內(nèi)層表單組件通過以下代碼實(shí)現(xiàn)指定可配置功能屬性的屬性值,并將屬性值回傳給外層表單組件:
上述代碼中,enhancedregisterform為外層表單組件,registerform為內(nèi)層表單組件。enhancedregisterform通過組件屬性把`form`傳遞給內(nèi)部的registerform;在`form`中采用聲明式語法定義了表單的可配置功能屬性,指定該表單項(xiàng)為必須、輸入類型為郵箱地址以及在輸入信息不符合上述要求時(shí)的顯示信息。在registerform內(nèi)使用`this.props.form.getfieldprops`,來將函數(shù)getfieldprops解構(gòu)后的返回值傳遞給外層表單組件。
外層表單組件為該表單項(xiàng)的輸入信息設(shè)置狀態(tài)參數(shù)。內(nèi)層表單組件監(jiān)聽表單域的事件,在該表單項(xiàng)的輸入信息發(fā)生變化時(shí),收集變化后的該表單項(xiàng)輸入信息,并更新到外層表單組件設(shè)置的輸入信息狀態(tài)參數(shù)中。
外層表單組件從狀態(tài)參數(shù)中讀取更新后的該表單項(xiàng)輸入信息,根據(jù)該輸入信息是否為空、是否符合指定輸入類型來確定是否顯示、顯示哪個(gè)提示信息。仍以上述代碼為例,如果該輸入信息為空,則顯示“請(qǐng)?zhí)顚戉]箱”;如果該輸入信息不為空并且輸入信息符合郵箱地址的格式,則顯示“郵箱格式不正確”;如果該輸入信息不為空、符合郵箱地址的格式并且已經(jīng)顯示有“郵箱格式不正確”,則清除對(duì)“郵箱格式不正確”的顯示。
可見,當(dāng)內(nèi)層表單組件的該表單項(xiàng)發(fā)生變化,例如不再填寫郵箱地址而是改為手機(jī)號(hào)碼時(shí),只需將內(nèi)層表單組件的指定可配置功能屬性做對(duì)應(yīng)的修改即可,而無需重新編寫該表單項(xiàng)的具體校驗(yàn)過程代碼。
與上述流程實(shí)現(xiàn)對(duì)應(yīng),本申請(qǐng)的實(shí)施例還提供了一種組件功能的實(shí)現(xiàn)裝置。該裝置可以通過軟件實(shí)現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為邏輯意義上的裝置,是通過所在設(shè)備的cpu(centralprocessunit,中央處理器)將對(duì)應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。從硬件層面而言,除了圖2所示的cpu、內(nèi)存以及非易失性存儲(chǔ)器之外,組件功能的實(shí)現(xiàn)裝置所在的設(shè)備通常還包括用于進(jìn)行無線信號(hào)收發(fā)的芯片等其他硬件,和/或用于實(shí)現(xiàn)網(wǎng)絡(luò)通信功能的板卡等其他硬件。
圖3所示為本申請(qǐng)實(shí)施例提供的一種組件功能的實(shí)現(xiàn)裝置,所述組件為封裝有外層組件的內(nèi)層組件,所述外層組件中包括采用聲明式語法描述的所述功能的可配置功能屬性;所述裝置包括屬性值傳遞單元、事件信息傳遞單元和組件功能運(yùn)行單元,其中:屬性值傳遞單元用于在內(nèi)層組件中獲取所述可配置功能屬性的屬性值,并傳遞給外層組件;事件信息傳遞單元用于在監(jiān)聽到與所述功能相關(guān)的事件后,由內(nèi)層組件收集事件信息并將事件信息傳遞給外層組件;組件功能運(yùn)行單元用于在外層組件中基于所述事件信息、運(yùn)行由可配置功能屬性的屬性值確定的功能。
可選的,所述事件信息傳遞單元具體用于:在監(jiān)聽到與所述功能相關(guān)的事件后,由內(nèi)層組件收集事件信息并根據(jù)事件信息更新外層組件的狀態(tài);所述組件功能運(yùn)行單元具體用于:在外層組件的狀態(tài)發(fā)生更新時(shí),根據(jù)更新后的狀態(tài)運(yùn)行由可配置功能屬性的屬性值確定的功能。
可選的,所述事件信息包括:所發(fā)生的事件和/或事件參數(shù);所述組件功能運(yùn)行單元具體用于:在外層組件中根據(jù)所發(fā)生的事件、所發(fā)生事件的時(shí)間參數(shù)、或所發(fā)生的事件及其時(shí)間參數(shù)運(yùn)行由可配置功能屬性的屬性值確定的功能。
可選的,所述外層組件為內(nèi)層組件的高階組件。
可選的,所述可配置功能屬性包括:表單域的輸入類型和錯(cuò)誤提示信息;所述事件信息包括:從所述表單域接收的輸入信息;所述組件功能運(yùn)行單元具體用于:在外層組件中校驗(yàn)所述輸入信息是否符合所述輸入類型,并且在不符合所述輸入類型時(shí)顯示所述錯(cuò)誤提示信息、以及在符合所述輸入類型并且已經(jīng)顯示所述錯(cuò)誤提示信息時(shí)清除顯示。
以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。