本發(fā)明涉及存儲(chǔ)管理領(lǐng)域,特別涉及一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法及系統(tǒng)。
背景技術(shù):
存儲(chǔ)管理軟件可以方便用戶使用并提高存儲(chǔ)器利用率,在存儲(chǔ)管理軟件中,需要支持頁面各模塊的靜態(tài)內(nèi)容提取拼接功能,也就是說,一個(gè)頁面由各個(gè)模塊按需組合而成,一個(gè)請求進(jìn)來,管理軟件會(huì)并發(fā)地處理這些模塊,最后再組合成一個(gè)完整的頁面返回給客戶。但是,如果將頁面分為多個(gè)模塊,模塊過多會(huì)帶來阻礙頁面渲染的問題。
為了解決上述問題,在現(xiàn)有技術(shù)中,瀏覽器支持javascript并行下載,也就是說對所有模塊進(jìn)行下載,但是由于瀏覽器不能保證下載的執(zhí)行順序,會(huì)導(dǎo)致加載完成的模塊準(zhǔn)備執(zhí)行時(shí),部分依賴模塊還沒有下載完成,進(jìn)而造成在頁面渲染時(shí)頁面加載不全甚至是加載不出的問題。
因此,如何加快javascript模塊加載速度且保證渲染時(shí)頁面全部加載完成,是本領(lǐng)域技術(shù)人員目前需要解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)要素:
本申請的目的是提供一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法及系統(tǒng),加快javascript模塊加載速度且保證渲染時(shí)頁面全部加載完成。
為解決上述技術(shù)問題,本申請?zhí)峁┮环N存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法及系統(tǒng),該方法包括:
接收動(dòng)態(tài)加載資源的命令,其中,所述命令中攜帶有用戶的請求信息;
根據(jù)所述請求信息,加載相應(yīng)的所述javascript模塊,并綁定完成事件,其中,所述完成事件用于通知加載所述javascript模塊已完成;
判斷所述javascript模塊是否存在依賴子模塊,如果是,則加載所述依賴子模塊,并在所述依賴子模塊上綁定所述完成事件;
當(dāng)所述javascript模塊及所述依賴子模塊加載完成,觸發(fā)所述完成事件。
可選的,加載相應(yīng)的所述javascript模塊包括:
通過use方法判斷緩存中是否存有所述javascript模塊;
若存在,則從所述緩存中獲取所述javascript模塊;
若不存在,則創(chuàng)建、加載所述javascript模塊。
可選的,創(chuàng)建、加載所述javascript模塊包括:
以所述javascript模塊的地址作為id創(chuàng)建所述javascript模塊對應(yīng)的代碼;
通過創(chuàng)建script標(biāo)簽的方式異步加載所述代碼。
可選的,加載所述依賴子模塊,并在所述依賴子模塊上綁定所述完成事件包括:
加載第一依賴等級(jí)子模塊,并判斷所述第一依賴等級(jí)子模塊是否依賴更高依賴級(jí)別的依賴子模塊;
如果是,則加載更高依賴級(jí)別的依賴子模塊,并在所述更高依賴級(jí)別的依賴子模塊上綁定所述完成事件,其中,所述第一依賴等級(jí)子模塊為依賴等級(jí)最低的依賴子模塊。
可選的,當(dāng)所述javascript模塊及所述依賴子模塊加載完成,觸發(fā)所述完成事件包括:
當(dāng)依賴等級(jí)最高的依賴子模塊加載完成,按依賴等級(jí)從高到低的順序依次觸發(fā)各依賴子模塊和所述javascript模塊綁定的所述完成事件。
本申請還提供了一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的系統(tǒng),所述系統(tǒng)包括:
接收模塊,用于接收動(dòng)態(tài)加載資源的命令,其中,所述命令中攜帶有用戶的請求信息;
加載模塊,用于根據(jù)所述請求信息,加載相應(yīng)的所述javascript模塊,并綁定完成事件,其中,所述完成事件用于通知加載所述javascript模塊已完成;
判斷模塊,用于判斷所述javascript模塊是否存在依賴子模塊,如果是,則加載所述依賴子模塊,并在所述依賴子模塊上綁定所述完成事件;
反饋模塊,用于當(dāng)所述javascript模塊及所述依賴子模塊加載完成,觸發(fā)所述完成事件。
可選的,加載模塊包括:
入口加載單元,用于通過use方法加載所述javascript模塊的入口模塊;
緩存檢測單元,用于通過所述use方法判斷緩存中是否存有所述javascript模塊;
若存在,則從所述緩存中獲取所述javascript模塊;
若不存在,則創(chuàng)建、加載所述javascript模塊。
可選的,所述緩存檢測單元包括:
id創(chuàng)建子單元,用于以所述javascript模塊的地址作為id創(chuàng)建所述javascript模塊對應(yīng)的代碼;
代碼加載子單元,用于通過創(chuàng)建script標(biāo)簽的方式異步加載所述代碼。
可選的,所述判斷模塊包括:
依賴判斷單元,用于加載第一依賴等級(jí)子模塊,并判斷所述第一依賴等級(jí)子模塊是否依賴更高依賴級(jí)別的依賴子模塊;
加載單元,用于加載更高依賴級(jí)別的依賴子模塊,并在所述更高依賴級(jí)別的依賴子模塊上綁定所述完成事件,其中,所述第一依賴等級(jí)子模塊為依賴等級(jí)最低的依賴子模塊。
可選的,所述反饋模塊具體為當(dāng)依賴等級(jí)最高的依賴子模塊加載完成,按依賴等級(jí)從高到低的順序依次觸發(fā)各依賴子模塊和所述javascript模塊綁定的所述完成事件的模塊。
本發(fā)明提供了一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法,接收動(dòng)態(tài)加載資源的命令;根據(jù)所述請求信息,加載相應(yīng)的所述javascript模塊,并綁定完成事件,判斷所述javascript模塊是否存在依賴子模塊,如果是,則加載所述依賴子模塊,并在所述依賴子模塊上綁定所述完成事件。當(dāng)所述javascript模塊及所述依賴子模塊加載完成,觸發(fā)所述完成事件。
本方法采用動(dòng)態(tài)加載的方式實(shí)現(xiàn)對javascript模塊的加載,根據(jù)用戶發(fā)出的請求信息,有針對性地加載相關(guān)模塊,不需要對全部模塊進(jìn)行加載,提高了加載速度。本方法在加載完javascript模塊后,對javascript模塊是否有依賴子模塊進(jìn)行判定,如果有則繼續(xù)加載依賴子模塊,并且只有將所有依賴子模塊都加載完成后才可以觸發(fā)javascript模塊上綁定的完成事件,也就是說在渲染頁面時(shí)javascript模塊及其依賴子模塊都加載完成,避免了javascript模塊加載完成準(zhǔn)備執(zhí)行時(shí)依賴子模塊還沒有加載完成的狀況,也就不會(huì)出現(xiàn)頁面加載不全甚至是加載不出的問題。由上可知,本方法加快了javascript模塊加載速度同時(shí)也保證了渲染時(shí)頁面全部加載完成,提升了用戶體驗(yàn)效果。本申請同時(shí)還提供了一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的系統(tǒng),具有上述有益效果,在此不再贅述。
附圖說明
為了更清楚地說明本申請實(shí)施例,下面將對實(shí)施例中所需要使用的附圖做簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請實(shí)施例所提供的一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法所處的硬件環(huán)境示意圖;
圖2為本申請實(shí)施例所提供的一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法的流程圖;
圖3為本申請實(shí)施例所提供的另一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法的流程圖;
圖4為本申請?jiān)趯?shí)際應(yīng)用中的實(shí)施例所提供的一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法的流程圖;
圖5為圖4所示實(shí)施例中加載依賴子模塊的處理流程圖;
圖6本申請所提供的一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的系統(tǒng)結(jié)構(gòu)示意圖;
圖7為本申請實(shí)施例提供的另一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本申請實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本申請一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請保護(hù)的范圍。
本申請所提供的一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法及系統(tǒng),可以應(yīng)用于以下硬件場景中:
請參考圖1,圖1為本申請中提供的一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法所處于的硬件環(huán)境示意圖,包括客戶端101、存儲(chǔ)管理裝置102。
其中,客戶端101是用戶發(fā)出加載申請的終端裝置,例如,安裝有的各種瀏覽器的計(jì)算機(jī)、智能手機(jī)等,只要是能夠向存儲(chǔ)管理裝置發(fā)出加載申請的裝置即可,此處并不對客戶端101做具體的限制。存儲(chǔ)管理裝置102,用來根據(jù)用戶的加載申請,對所需要加載的模塊進(jìn)行加載,并將加載得到的模塊進(jìn)行渲染以呈現(xiàn)在客戶端101上。存儲(chǔ)管理裝置102,可以下轄多個(gè)功能模塊,例如,命令接收模塊,用于接收客戶端101發(fā)出的命令;渲染模塊,用于將加載得到的模塊進(jìn)行渲染。
下面請參見圖2,圖2為本申請實(shí)施例所提供的一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法的流程圖。
具體步驟可以包括:
步驟s201:接收動(dòng)態(tài)加載資源的命令,其中,所述命令中攜帶有用戶的請求信息;
其中,動(dòng)態(tài)加載資源的命令是由用戶發(fā)出的,命令中攜帶有具體加載哪些模塊的信息,加載的模塊可以是一個(gè)也可以是多個(gè),此處并不對請求信息中需要加載的模塊的數(shù)量進(jìn)行限定。
步驟s202:根據(jù)所述請求信息,加載相應(yīng)的所述javascript模塊,并綁定完成事件,其中,所述完成事件用于通知加載所述javascript模塊已完成;
其中,本步驟加載用戶所請求加載的模塊,理論上對于用戶沒有請求加載的模塊是否進(jìn)行加載并無要求,但是在實(shí)際執(zhí)行過程中,加載沒有請求的模塊不但沒有任何好處,反而會(huì)增加整個(gè)流程的時(shí)間,造成浪費(fèi),降低用戶的體驗(yàn)效果。優(yōu)選的,在本步驟中只加載用戶請求加載的模塊,以呈現(xiàn)出最優(yōu)的加載效果。
完成事件是綁定在javascript模塊上的一個(gè)時(shí)間通知,如果此事件觸發(fā)則代表整個(gè)加載javascript模塊的流程結(jié)束,開始對加載完成的模塊進(jìn)行渲染??梢岳斫獾氖牵壎ㄍ瓿墒录@一步驟發(fā)生在加載javascript模塊過程的任意時(shí)間段,也就是說只要在加載javascript模塊完成之前綁定即可,此處并不對綁定完成事件的時(shí)間點(diǎn)進(jìn)行限定。當(dāng)然,在同一時(shí)間點(diǎn)進(jìn)行完成事件的綁定有利于流程的執(zhí)行,如,在開始加載javascript模塊的同一時(shí)間開始綁定完成事件。
步驟s203:判斷所述javascript模塊是否存在依賴子模塊,如果是,則進(jìn)入步驟s204;如果否,則進(jìn)入步驟s205;
其中,雖然在用戶發(fā)出的請求信息中只包含所要加載的javascript模塊,但是還可能存在javascript模塊依賴的模塊沒有加載,如果不加載javascript模塊依賴的模塊將會(huì)造成渲染頁面時(shí)加載不全甚至是加載不出的問題,因此如果存在依賴子模塊時(shí),不但要加載javascript模塊,還要加載依賴子模塊。判斷所述javascript模塊是否存在依賴子模塊這一步驟可以在開始加載
javascript模塊后的任意時(shí)間進(jìn)行,優(yōu)選的,在加載完javascript模塊后進(jìn)行判斷。
可以理解的是,依賴子模塊的數(shù)目是不確定的,對依賴子模塊的加載可以是串行,也可以是并行,此處并不對加載依賴子模塊的方法進(jìn)行限定。當(dāng)然,依賴子模塊的依賴等級(jí)也是不確定的,javascript模塊的依賴子模塊還有可能依賴其它的子模塊,所以在加載依賴子模塊完成后仍需要對依賴子模塊是否依賴其他的子模塊進(jìn)行判定,如果存在則繼續(xù)加載,并遞歸這個(gè)過程,如果不存在,則結(jié)束判定,觸發(fā)完成事件??梢岳斫獾氖牵瑢γ恳粋€(gè)加載的依賴子模塊都需要綁定完成事件,具體過程與在javascript模塊上綁定完成事件一致。
步驟s204:加載所述依賴子模塊,并在所述依賴子模塊上綁定所述完成事件。
步驟s205:當(dāng)所述javascript模塊及所述依賴子模塊加載完成,觸發(fā)所述完成事件;
其中,javascript模塊及依賴子模塊加載完成是指,與javascript模塊有直接或間接依賴關(guān)系的子模塊和javascript模塊均加載完成。與javascript模塊有直接依賴關(guān)系的子模塊為第一依賴等級(jí)子模塊,若第一依賴等級(jí)子模塊還依賴其他子模塊,那么第一依賴等級(jí)子模塊所依賴的子模塊為第二依賴等級(jí)子模塊,并逐層遞歸,直至最高依賴等級(jí)子模塊。
當(dāng)最高依賴等級(jí)子模塊加載完成后觸發(fā)自身的完成事件,較高等級(jí)的依賴等級(jí)子模塊上綁定的完成事件觸發(fā)后會(huì)觸發(fā)下一等級(jí)的依賴等級(jí)子模塊上綁定的完成事件,直至觸發(fā)javascript模塊上綁定的完成事件。
下面請參見圖3,圖3為本申請實(shí)施例所提供的另一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法的流程圖。
此實(shí)施例是在上述實(shí)施例的基礎(chǔ)上,通過use方法來加載javascript模塊的入口模塊并檢查緩存中是否有javascript模塊,并對創(chuàng)建、加載javascript模塊的方法進(jìn)行了相關(guān)限定。
具體步驟可以包括:
步驟s301:接收動(dòng)態(tài)加載資源的命令,其中,所述命令中攜帶有用戶的請求信息。
步驟s302:通過所述use方法判斷緩存中是否存有所述javascript模塊;
其中,javascript模塊有可能已經(jīng)在緩存中存在,如果在緩存中存在有所要加載的javascript模塊可以直接從緩存中獲取,省去了創(chuàng)建并加載javascript模塊的流程。在加載javascript模塊時(shí)首先要加載javascript模塊的入口模塊,可以采用use方法加載入口模塊。在通過use方法加載入口模塊時(shí),會(huì)接收一個(gè)回調(diào)函數(shù),當(dāng)javascript模塊加載完成后調(diào)用該回調(diào)函數(shù),也就是說依賴等級(jí)最高的模塊觸發(fā)完成事件后use方法中的回調(diào)函數(shù)才會(huì)被調(diào)用,并傳入對應(yīng)的模塊,以便執(zhí)行渲染頁面的操作。
步驟s303:若存在,則從所述緩存中獲取所述javascript模塊,并進(jìn)入步驟s306;
其中,盡管可以從緩存中直接獲取javascript模塊,但是無法確定直接獲取的javascript模塊是否還依賴其他子模塊,所以需要進(jìn)入s306綁定完成事件,以便進(jìn)行是否存在依賴子模塊的判斷。
步驟s304:若不存在,則以所述javascript模塊的地址作為id創(chuàng)建所述javascript模塊對應(yīng)的代碼。
步驟s305:通過創(chuàng)建script標(biāo)簽的方式異步加載所述代碼。
步驟s306:在所述javascript模塊綁定完成事件。
步驟s307:判斷所述javascript模塊中是否存在第一依賴等級(jí)子模塊,若是則進(jìn)入s308,若否,則進(jìn)入步驟s310。
步驟s308:加載第一依賴等級(jí)子模塊,并判斷所述第一依賴等級(jí)子模塊是否依賴更高依賴級(jí)別的依賴子模塊。
步驟s309:如果是,則加載更高依賴級(jí)別的依賴子模塊,并在所述更高依賴級(jí)別的依賴子模塊上綁定所述完成事件,其中,所述第一依賴等級(jí)子模塊為依賴等級(jí)最低的依賴子模塊;
其中,與javascript模塊有直接依賴關(guān)系的子模塊為第一依賴等級(jí)子模塊,若第一依賴等級(jí)子模塊還依賴其他子模塊,那么第一依賴等級(jí)子模塊所依賴的子模塊為第二依賴等級(jí)子模塊,并逐層遞推,直至最高依賴等級(jí)子模塊。
步驟s310:當(dāng)依賴等級(jí)最高的依賴子模塊加載完成,按依賴等級(jí)從高到低的順序依次觸發(fā)各依賴子模塊和所述javascript模塊綁定的所述完成事件。
此步驟與上面的步驟的s205內(nèi)容大致一致,此處不再贅述。
請參閱圖4、圖5,圖4為本申請?jiān)趯?shí)際應(yīng)用中的實(shí)施例所提供的一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法的流程圖,圖5為本實(shí)施例中加載依賴子模塊的處理流程圖,在此實(shí)施例中javascript模塊依賴a模塊,a模塊依賴b模塊,b模塊依賴c模塊,c模塊不依賴任何模塊。
具體步驟可以包括:
步驟s401:接收動(dòng)態(tài)加載資源的命令,其中,所述命令中攜帶有用戶的請求信息。
步驟s402:以所述javascript模塊的地址作為id創(chuàng)建所述javascript模塊對應(yīng)的代碼。
步驟s403:通過創(chuàng)建script標(biāo)簽的方式異步加載所述代碼。
步驟s404:在所述javascript模塊綁定完成事件。
步驟s405:javascript模塊加載完成后,加載javascript模塊依賴的子模塊a,并在子模塊a上綁定完成事件。
步驟s406:子模塊a加載完成后,得知子模塊a依賴于子模塊b,加載子模塊a依賴的子模塊b,并在子模塊b上綁定完成事件。
步驟s407:子模塊b加載完成后,得知子模塊b依賴于子模塊c,加載子模塊b依賴的子模塊c,并在子模塊c上綁定完成事件,其中子模塊c不依賴任何模塊。
步驟s408:子模塊c加載完成后,依次觸發(fā)子模塊c、子模塊b、子模塊a和javascript模塊上綁定的完成事件。
由于系統(tǒng)部分的實(shí)施例與方法部分的實(shí)施例相互對應(yīng),因此系統(tǒng)部分的實(shí)施例請參見方法部分的實(shí)施例的描述,這里暫不贅述。
下面請參見圖6,圖6為本申請所提供的一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的系統(tǒng)結(jié)構(gòu)示意圖,該系統(tǒng)可以包括:
接收模塊100,用于接收動(dòng)態(tài)加載資源的命令,其中,所述命令中攜帶有用戶的請求信息;
加載模塊200,用于根據(jù)所述請求信息,加載相應(yīng)的所述javascript模塊,并綁定完成事件,其中,所述完成事件用于通知加載所述javascript模塊已完成;
判斷模塊300,用于判斷所述javascript模塊是否存在依賴子模塊,如果是,則加載所述依賴子模塊,并在所述依賴子模塊上綁定所述完成事件;
反饋模塊400,用于當(dāng)所述javascript模塊及所述依賴子模塊加載完成,觸發(fā)所述完成事件。
請參閱圖7,圖7為本申請實(shí)施例提供的另一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的系統(tǒng)的結(jié)構(gòu)示意圖。
在上述實(shí)施例的基礎(chǔ)上,本實(shí)施例進(jìn)一步的,所述加載模塊200包括:
緩存檢測單元210,用于通過所述use方法判斷緩存中是否存有所述javascript模塊;若存在,則從所述緩存中獲取所述javascript模塊;若不存在,則創(chuàng)建、加載所述javascript模塊。
進(jìn)一步的,所述緩存檢測單元210包括:
id創(chuàng)建子單元211,用于以所述javascript模塊的地址作為id創(chuàng)建所述javascript模塊對應(yīng)的代碼;
代碼加載子單元212,用于通過創(chuàng)建script標(biāo)簽的方式異步加載所述代碼。
進(jìn)一步的,所述判斷模塊300包括:
依賴判斷單元301,用于加載第一依賴等級(jí)子模塊,并判斷所述第一依賴等級(jí)子模塊是否依賴更高依賴級(jí)別的依賴子模塊;
加載單元302,用于加載更高依賴級(jí)別的依賴子模塊,并在所述更高依賴級(jí)別的依賴子模塊上綁定所述完成事件,其中,所述第一依賴等級(jí)子模塊為依賴等級(jí)最低的依賴子模塊。
進(jìn)一步的,所述反饋模塊400具體為當(dāng)依賴等級(jí)最高的依賴子模塊加載完成,按依賴等級(jí)從高到低的順序依次觸發(fā)各依賴子模塊和所述javascript模塊綁定的所述完成事件的模塊。
以上對本申請所提供的一種存儲(chǔ)管理軟件動(dòng)態(tài)加載javascript模塊的方法及系統(tǒng)進(jìn)行了詳細(xì)介紹。說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對于實(shí)施例公開的系統(tǒng)而言,由于其與實(shí)施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請?jiān)淼那疤嵯?,還可以對本申請進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本申請權(quán)利要求的保護(hù)范圍內(nèi)。
還需要說明的是,在本說明書中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。