欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種腳本封裝方法和裝置以及腳本運(yùn)行方法和裝置與流程

文檔序號(hào):12718848閱讀:428來(lái)源:國(guó)知局
一種腳本封裝方法和裝置以及腳本運(yùn)行方法和裝置與流程

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種腳本封裝方法和裝置以及腳本運(yùn)行方法和裝置。



背景技術(shù):

隨著瀏覽器技術(shù)的發(fā)展,JavaScript解析速度得到大幅提升,基于JavaScript技術(shù)開發(fā)的腳本越來(lái)越流行。在實(shí)際應(yīng)用場(chǎng)景中,隨著腳本中代碼量的增加,腳本封裝對(duì)于腳本運(yùn)行至關(guān)重要。

現(xiàn)有技術(shù)中,在腳本封裝中,腳本中的代碼以類的形式存在。例如,腳本M以3個(gè)類的形式進(jìn)行封裝。

但是,當(dāng)腳本的代碼量較高時(shí),一般需要通過(guò)多個(gè)類的形式進(jìn)行封裝,各個(gè)類之間存在耦合,導(dǎo)致腳本結(jié)構(gòu)不清晰。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供了一種腳本封裝方法和裝置以及腳本運(yùn)行方法和裝置,能夠使腳本結(jié)構(gòu)更加清晰。

第一方面,本發(fā)明實(shí)施例提供了一種腳本封裝方法,包括:

接收外部發(fā)送的至少一個(gè)模塊參數(shù),每一個(gè)所述模塊參數(shù)中包括:模塊的名稱、至少一個(gè)所述模塊所依賴的模塊的名稱;

針對(duì)每一個(gè)所述模塊參數(shù),根據(jù)當(dāng)前模塊參數(shù),創(chuàng)建當(dāng)前模塊對(duì)象,所述當(dāng)前模塊對(duì)象中包括:所述當(dāng)前模塊對(duì)象的名稱、至少一個(gè)所述當(dāng)前模塊對(duì)象所依賴的模塊對(duì)象的名稱;

在每一個(gè)所述模塊對(duì)象中,定義至少一個(gè)類;

根據(jù)至少一個(gè)所述模塊對(duì)象和每一個(gè)所述模塊對(duì)象中所述至少一個(gè)類,生成目標(biāo)腳本。

優(yōu)選地,

所述在每一個(gè)所述模塊對(duì)象中,定義至少一個(gè)類,包括:

在目標(biāo)模塊對(duì)象中,接收外部發(fā)送的針對(duì)所述目標(biāo)模塊對(duì)象的至少一個(gè)目標(biāo)類參數(shù),每一個(gè)所述目標(biāo)類參數(shù)中包括:目標(biāo)基類、目標(biāo)類的名稱、所述目標(biāo)類的繼承關(guān)系和所述目標(biāo)類的依賴關(guān)系;

針對(duì)每一個(gè)所述目標(biāo)類參數(shù),根據(jù)當(dāng)前目標(biāo)類參數(shù)中的所述目標(biāo)基類、所述目標(biāo)類的名稱、所述目標(biāo)類的繼承關(guān)系和所述目標(biāo)類的依賴關(guān)系,在所述目標(biāo)模塊對(duì)象中,定義當(dāng)前目標(biāo)類。

第二方面,本發(fā)明實(shí)施例提供了一種腳本封裝裝置,包括:

模塊定義接口,用于接收外部發(fā)送的至少一個(gè)模塊參數(shù),每一個(gè)所述模塊參數(shù)中包括:模塊的名稱、至少一個(gè)所述模塊所依賴的模塊的名稱;針對(duì)每一個(gè)所述模塊參數(shù),根據(jù)當(dāng)前模塊參數(shù),創(chuàng)建當(dāng)前模塊對(duì)象,所述當(dāng)前模塊對(duì)象中包括:所述當(dāng)前模塊對(duì)象的名稱、至少一個(gè)所述當(dāng)前模塊對(duì)象所依賴的模塊對(duì)象的名稱;

類定義接口,用于在所述模塊定義接口創(chuàng)建的每一個(gè)所述模塊對(duì)象中,定義至少一個(gè)類;

生成接口,用于根據(jù)所述模塊定義接口創(chuàng)建的所述至少一個(gè)模塊對(duì)象和每一個(gè)所述模塊對(duì)象中所述類定義接口定義的所述至少一個(gè)類,生成目標(biāo)腳本。

優(yōu)選地,

所述類定義接口,用于在目標(biāo)模塊對(duì)象中,接收外部發(fā)送的針對(duì)所述目標(biāo)模塊對(duì)象的至少一個(gè)目標(biāo)類參數(shù),每一個(gè)所述目標(biāo)類參數(shù)中包括:目標(biāo)基類、目標(biāo)類的名稱、所述目標(biāo)類的繼承關(guān)系、所述目標(biāo)類的依賴關(guān)系;針對(duì)每一個(gè)所述目標(biāo)類參數(shù),根據(jù)當(dāng)前目標(biāo)類參數(shù)中的所述目標(biāo)基類、所述目標(biāo)類的名稱和所述目標(biāo)類的繼承關(guān)系和所述目標(biāo)類的依賴關(guān)系,在所述目標(biāo)模塊對(duì)象中,定義當(dāng)前目標(biāo)類。

第三方面,本發(fā)明實(shí)施例提供了一種腳本運(yùn)行方法,預(yù)先創(chuàng)建至少一個(gè)模塊對(duì)象,每一個(gè)所述模塊對(duì)象中包括:當(dāng)前模塊對(duì)象的名稱、至少一個(gè)所述當(dāng)前模塊對(duì)象所依賴的模塊對(duì)象的名稱;預(yù)先在每一個(gè)所述模塊對(duì)象中,定義至少一個(gè)類;根據(jù)所述至少一個(gè)模塊對(duì)象和每一個(gè)所述模塊對(duì)象中所述至少一個(gè)類,生成目標(biāo)腳本,還包括:

接收外部發(fā)送的針對(duì)所述目標(biāo)腳本的目標(biāo)模塊對(duì)象的名稱;

根據(jù)所述目標(biāo)模塊對(duì)象的名稱,在所述至少一個(gè)模塊對(duì)象中確定所述目標(biāo)模塊對(duì)象;

根據(jù)所述目標(biāo)模塊對(duì)象和至少一個(gè)所述目標(biāo)模塊對(duì)象所依賴的模塊對(duì)象的名稱,確定待處理的模塊對(duì)象;

對(duì)每一個(gè)所述待處理的模塊對(duì)象中的每一個(gè)類進(jìn)行實(shí)例化。

優(yōu)選地,

所述根據(jù)所述目標(biāo)模塊對(duì)象和至少一個(gè)所述目標(biāo)模塊對(duì)象所依賴的模塊對(duì)象的名稱,確定待處理的模塊對(duì)象,包括:

S1:建立模塊加載棧;

S2:將所述目標(biāo)模塊對(duì)象作為當(dāng)前待處理的模塊對(duì)象;

S3:將所述當(dāng)前待處理的模塊對(duì)象添加到所述模塊加載棧,將所述模塊加載棧中的模塊對(duì)象作為待處理的模塊對(duì)象;

S4:確定所述當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象的名稱;

S5:根據(jù)所述當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象的名稱,判斷所述當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象是否均在所述模塊加載棧中,如果是,則結(jié)束當(dāng)前流程,否則,執(zhí)行S6;

S6:將所述當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象中不在所述模塊加載棧中的模塊對(duì)象作為所述當(dāng)前待處理的模塊對(duì)象,返回S3。

優(yōu)選地,

所述對(duì)每一個(gè)所述待處理的模塊對(duì)象中的每一個(gè)類進(jìn)行實(shí)例化,包括:

從所述模塊加載棧的棧頂開始,依次對(duì)每一個(gè)所述待處理的模塊對(duì)象中的每一個(gè)類進(jìn)行實(shí)例化。

第四方面,本發(fā)明實(shí)施例提供了一種腳本運(yùn)行裝置,包括:模塊定義接口、類定義接口、生成接口和應(yīng)用程序啟動(dòng)接口;

所述模塊定義接口,用于創(chuàng)建至少一個(gè)模塊對(duì)象,每一個(gè)所述模塊對(duì)象中包括:當(dāng)前模塊對(duì)象的名稱、至少一個(gè)所述當(dāng)前模塊對(duì)象所依賴的模塊對(duì)象的名稱;

所述類定義接口,用于在所述模塊定義接口創(chuàng)建的每一個(gè)所述模塊對(duì)象中,定義至少一個(gè)類;

所述生成接口,用于根據(jù)所述模塊定義接口創(chuàng)建的所述至少一個(gè)模塊對(duì)象和每一個(gè)所述模塊對(duì)象中所述類定義接口定義的所述至少一個(gè)類,生成目標(biāo)腳本;

所述應(yīng)用程序啟動(dòng)接口,包括:

接收單元,用于接收外部發(fā)送的針對(duì)所述生成接口生成的所述目標(biāo)腳本的目標(biāo)模塊對(duì)象的名稱;

確定單元,用于根據(jù)所述接收單元接收的所述目標(biāo)模塊對(duì)象的名稱,在所述至少一個(gè)模塊對(duì)象中確定所述目標(biāo)模塊對(duì)象;

處理單元,用于根據(jù)所述確定單元確定的所述目標(biāo)模塊對(duì)象和至少一個(gè)所述目標(biāo)模塊對(duì)象所依賴的模塊對(duì)象的名稱,確定待處理的模塊對(duì)象;

實(shí)例化單元,用于對(duì)所述處理單元確定的每一個(gè)所述待處理的模塊對(duì)象中的每一個(gè)類進(jìn)行實(shí)例化。

優(yōu)選地,

所述處理單元,包括:

建立子單元,用于建立模塊加載棧;

執(zhí)行子單元,用于將所述目標(biāo)模塊對(duì)象作為當(dāng)前待處理的模塊對(duì)象;

添加子單元,用于將所述執(zhí)行子單元確定的所述當(dāng)前待處理的模塊對(duì)象添加到所述建立子單元建立的所述模塊加載棧,將所述模塊加載棧中的模塊對(duì)象作為待處理的模塊對(duì)象;

確定子單元,用于確定所述添加子單元中所述當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象的名稱;

判斷子單元,用于根據(jù)所述確定子單元確定的所述當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象的名稱,判斷所述當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象是否均在所述模塊加載棧中,如果是,則結(jié)束當(dāng)前流程,否則,觸發(fā)處理子單元;

所述處理子單元,用于將所述當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象中不在所述模塊加載棧中的模塊對(duì)象作為所述當(dāng)前待處理的模塊對(duì)象,觸發(fā)所述添加子單元。

優(yōu)選地,

所述實(shí)例化單元,用于從所述模塊加載棧的棧頂開始,依次對(duì)每一個(gè)所述待處理的模塊對(duì)象中的每一個(gè)類進(jìn)行實(shí)例化。

第五方面,本發(fā)明實(shí)施例提供了一種可讀介質(zhì),包括執(zhí)行指令,當(dāng)存儲(chǔ)控制器的處理器執(zhí)行所述執(zhí)行指令時(shí),所述存儲(chǔ)控制器執(zhí)行上述任一項(xiàng)所述的方法。

第六方面,本發(fā)明實(shí)施例提供了一種存儲(chǔ)控制器,包括:處理器、存儲(chǔ)器和總線;所述存儲(chǔ)器用于存儲(chǔ)執(zhí)行指令,所述處理器與所述存儲(chǔ)器通過(guò)所述總線連接,當(dāng)所述存儲(chǔ)控制器運(yùn)行時(shí),所述處理器執(zhí)行所述存儲(chǔ)器存儲(chǔ)的所述執(zhí)行指令,以使所述存儲(chǔ)控制器執(zhí)行上述任一項(xiàng)所述的方法。

本發(fā)明實(shí)施例提供了一種腳本封裝方法和裝置以及腳本運(yùn)行方法和裝置,其中,在腳本封裝方法中,根據(jù)外部發(fā)送的至少一個(gè)模塊參數(shù),創(chuàng)建至少一個(gè)模塊對(duì)象,并在每一個(gè)模塊對(duì)象中,定義至少一個(gè)類。該方法對(duì)腳本進(jìn)行模塊化封裝,形成目標(biāo)腳本。當(dāng)腳本的代碼量較高時(shí),可以通過(guò)創(chuàng)建模塊對(duì)象對(duì)腳本進(jìn)行封裝,減少各個(gè)類之間存在的耦合,使腳本結(jié)構(gòu)更加清晰。

附圖說(shuō)明

為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本發(fā)明一個(gè)實(shí)施例提供的一種腳本封裝方法流程圖;

圖2是本發(fā)明一個(gè)實(shí)施例提供的一種腳本封裝裝置結(jié)構(gòu)示意圖;

圖3是本發(fā)明一個(gè)實(shí)施例提供的一種腳本運(yùn)行方法流程圖;

圖4是本發(fā)明一個(gè)實(shí)施例提供的一種腳本運(yùn)行裝置結(jié)構(gòu)示意圖;

圖5是本發(fā)明一個(gè)實(shí)施例提供的另一種腳本運(yùn)行方法流程圖。

具體實(shí)施方式

為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例,基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

如圖1所示,本發(fā)明實(shí)施例提供了一種腳本封裝方法,該方法可以包括以下步驟:

步驟101:接收外部發(fā)送的至少一個(gè)模塊參數(shù),每一個(gè)模塊參數(shù)中包括:模塊的名稱、至少一個(gè)模塊所依賴的模塊的名稱;

步驟102:針對(duì)每一個(gè)模塊參數(shù),根據(jù)當(dāng)前模塊參數(shù),創(chuàng)建當(dāng)前模塊對(duì)象,當(dāng)前模塊對(duì)象中包括:當(dāng)前模塊對(duì)象的名稱、至少一個(gè)當(dāng)前模塊對(duì)象所依賴的模塊對(duì)象的名稱;

步驟103:在每一個(gè)模塊對(duì)象中,定義至少一個(gè)類;

步驟104:根據(jù)至少一個(gè)模塊對(duì)象和每一個(gè)模塊對(duì)象中至少一個(gè)類,生成目標(biāo)腳本。

在圖1所示的實(shí)施例中,該方法根據(jù)外部發(fā)送的至少一個(gè)模塊參數(shù),創(chuàng)建至少一個(gè)模塊對(duì)象,并在每一個(gè)模塊對(duì)象中,定義至少一個(gè)類。該方法對(duì)腳本進(jìn)行模塊化封裝,形成目標(biāo)腳本。當(dāng)腳本的代碼量較高時(shí),可以通過(guò)創(chuàng)建模塊對(duì)象對(duì)腳本進(jìn)行封裝,減少各個(gè)類之間存在的耦合,使腳本結(jié)構(gòu)更加清晰。

在本發(fā)明的一個(gè)實(shí)施例中,為了使模塊對(duì)象執(zhí)行相應(yīng)的功能,需要在每一個(gè)模塊對(duì)象中,定義不同的類,步驟103包括:在目標(biāo)模塊對(duì)象中,接收外部發(fā)送的針對(duì)目標(biāo)模塊對(duì)象的至少一個(gè)目標(biāo)類參數(shù),每一個(gè)目標(biāo)類參數(shù)中包括:目標(biāo)基類、目標(biāo)類的名稱、目標(biāo)類的繼承關(guān)系、目標(biāo)類的依賴關(guān)系;針對(duì)每一個(gè)目標(biāo)類參數(shù),根據(jù)當(dāng)前目標(biāo)類參數(shù)中的目標(biāo)基類、目標(biāo)類的名稱、目標(biāo)類的繼承關(guān)系和目標(biāo)類的依賴關(guān)系,在目標(biāo)模塊對(duì)象中,定義當(dāng)前目標(biāo)類。

在模塊對(duì)象中,如果缺省基類參數(shù),則新定義的類從基類派生。在本實(shí)施例中,JavaScript使用原型鏈的方式實(shí)現(xiàn)類繼承,當(dāng)子類與原型鏈上的父對(duì)象存在同名方法時(shí),原型鏈上的父對(duì)象的方法將被屏蔽,通過(guò)此方法名訪問(wèn)的是子類上的方法。本發(fā)明實(shí)現(xiàn)了一套在子類方法中訪問(wèn)原型鏈上父對(duì)象同名方法的機(jī)制。

該機(jī)制原理如下:

(1)在接收到類原型對(duì)象后,對(duì)原型對(duì)象上的每一個(gè)方法進(jìn)行包裝,并創(chuàng)建一個(gè)新對(duì)象,在新對(duì)象上創(chuàng)建原型對(duì)象同名的方法,此方法在內(nèi)存中指向包裝后的原型對(duì)象方法。新創(chuàng)建的對(duì)象作為類原型繼承的原型對(duì)象。

(2)對(duì)原型對(duì)象方法的包裝采用閉包原理,通過(guò)閉包在內(nèi)存中保持原型鏈上父對(duì)象方法的引用,從而達(dá)到訪問(wèn)原型鏈父對(duì)象方法的目的。

以下是該機(jī)制的偽代碼:

通過(guò)上面的包裝,可以在自己方法中通過(guò)“this.當(dāng)前父方法”訪問(wèn)原型鏈父對(duì)象上的同名方法。

如圖2所示,本發(fā)明實(shí)施例提供了一種腳本封裝裝置,包括:

模塊定義接口201,用于接收外部發(fā)送的至少一個(gè)模塊參數(shù),每一個(gè)模塊參數(shù)中包括:模塊的名稱、至少一個(gè)模塊所依賴的模塊的名稱;針對(duì)每一個(gè)模塊參數(shù),根據(jù)當(dāng)前模塊參數(shù),創(chuàng)建當(dāng)前模塊對(duì)象,當(dāng)前模塊對(duì)象中包括:當(dāng)前模塊對(duì)象的名稱、至少一個(gè)當(dāng)前模塊對(duì)象所依賴的模塊對(duì)象的名稱;

類定義接口202,用于在模塊定義接口201創(chuàng)建的每一個(gè)模塊對(duì)象中,定義至少一個(gè)類;

生成接口203,用于根據(jù)模塊定義接口201創(chuàng)建的至少一個(gè)模塊對(duì)象和每一個(gè)模塊對(duì)象中類定義接口202定義的至少一個(gè)類,生成目標(biāo)腳本。

在本發(fā)明的一個(gè)實(shí)施例中,類定義接口202,用于在目標(biāo)模塊對(duì)象中,接收外部發(fā)送的針對(duì)目標(biāo)模塊對(duì)象的至少一個(gè)目標(biāo)類參數(shù),每一個(gè)目標(biāo)類參數(shù)中包括:目標(biāo)基類、目標(biāo)類的名稱、目標(biāo)類的繼承關(guān)系、目標(biāo)類的依賴關(guān)系;針對(duì)每一個(gè)目標(biāo)類參數(shù),根據(jù)當(dāng)前目標(biāo)類參數(shù)中的目標(biāo)基類、目標(biāo)類的名稱、目標(biāo)類的繼承關(guān)系和目標(biāo)類的依賴關(guān)系,在目標(biāo)模塊對(duì)象中,定義當(dāng)前目標(biāo)類。

在本實(shí)施例中,表1所示的是模塊定義接口的描述,

表1:

在本實(shí)施例中,表2所示的是類定義接口的描述,

表2:

如圖3所示,本發(fā)明實(shí)施例提供了一種腳本運(yùn)行方法,該方法包括以下步驟:

步驟301:創(chuàng)建至少一個(gè)模塊對(duì)象,每一個(gè)模塊對(duì)象中包括:當(dāng)前模塊對(duì)象的名稱、至少一個(gè)當(dāng)前模塊對(duì)象所依賴的模塊對(duì)象的名稱;

步驟302:在每一個(gè)模塊對(duì)象中,定義至少一個(gè)類;

步驟303:根據(jù)至少一個(gè)模塊對(duì)象和每一個(gè)模塊對(duì)象中至少一個(gè)類,生成目標(biāo)腳本;

步驟304:接收外部發(fā)送的針對(duì)目標(biāo)腳本的目標(biāo)模塊對(duì)象的名稱;

步驟305:根據(jù)目標(biāo)模塊對(duì)象的名稱,在至少一個(gè)模塊對(duì)象中確定目標(biāo)模塊對(duì)象;

步驟306:根據(jù)目標(biāo)模塊對(duì)象和至少一個(gè)目標(biāo)模塊對(duì)象所依賴的模塊對(duì)象的名稱,確定待處理的模塊對(duì)象;

步驟307:對(duì)每一個(gè)待處理的模塊對(duì)象中的每一個(gè)類進(jìn)行實(shí)例化。

在圖3所示的實(shí)施例中,該腳本運(yùn)行方法基于腳本的模塊化封裝,當(dāng)目標(biāo)腳本運(yùn)行時(shí),先根據(jù)目標(biāo)模塊對(duì)象的名稱確定目標(biāo)模塊對(duì)象,再對(duì)目標(biāo)模塊對(duì)象中的每一個(gè)類進(jìn)行加載并實(shí)例化。當(dāng)需要實(shí)例化的類較多時(shí),可以直接對(duì)這些類對(duì)應(yīng)的模塊對(duì)象進(jìn)行操作,不需要對(duì)每一個(gè)類逐一進(jìn)行操作。

在本發(fā)明的一個(gè)實(shí)施例中,為了對(duì)模塊對(duì)象中的每一個(gè)類進(jìn)行加載并實(shí)例化,步驟306包括:

S1:建立模塊加載棧;

S2:將目標(biāo)模塊對(duì)象作為當(dāng)前待處理的模塊對(duì)象;

S3:將當(dāng)前待處理的模塊對(duì)象添加到模塊加載棧,將模塊加載棧中的模塊對(duì)象作為待處理的模塊對(duì)象;

S4:確定當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象的名稱;

S5:根據(jù)當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象的名稱,判斷當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象是否均在模塊加載棧中,如果是,則結(jié)束當(dāng)前流程,否則,執(zhí)行S6;

S6:將當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象中不在模塊加載棧中的模塊對(duì)象作為當(dāng)前待處理的模塊對(duì)象,返回S3。

在本實(shí)施例中,目標(biāo)模塊對(duì)象為腳本入口模塊。模塊對(duì)象按照先進(jìn)后出的原則通過(guò)模塊加載棧。

在本發(fā)明的一個(gè)實(shí)施例中,為了實(shí)現(xiàn)對(duì)模塊對(duì)象中的每一個(gè)類的有序加載,步驟307包括:從模塊加載棧的棧頂開始,依次對(duì)每一個(gè)待處理的模塊對(duì)象中的每一個(gè)類進(jìn)行實(shí)例化。

以下以手機(jī)費(fèi)報(bào)銷單向服務(wù)器端提交數(shù)據(jù)的場(chǎng)景為例,對(duì)腳本運(yùn)行方法進(jìn)行簡(jiǎn)單說(shuō)明,在該場(chǎng)景中先定義了“報(bào)銷”模塊,在“報(bào)銷”模塊下定義了“手機(jī)費(fèi)報(bào)銷單”模型、數(shù)據(jù)提交服務(wù),并演示了如何在“手機(jī)費(fèi)報(bào)銷單”模型中使用數(shù)據(jù)提交服務(wù)提交數(shù)據(jù)。

1、文件名:app.js

文件偽代碼:

2、文件名:model.js

文件偽代碼:

3、文件名:service.js

文件偽代碼:

如圖4所示,本發(fā)明實(shí)施例提供了一種腳本運(yùn)行裝置,包括:模塊定義接口401、類定義接口402、生成接口403和應(yīng)用程序啟動(dòng)接口404;

模塊定義接口401,用于創(chuàng)建至少一個(gè)模塊對(duì)象,每一個(gè)模塊對(duì)象中包括:當(dāng)前模塊對(duì)象的名稱、至少一個(gè)當(dāng)前模塊對(duì)象所依賴的模塊對(duì)象的名稱;根據(jù)至少一個(gè)模塊對(duì)象和每一個(gè)模塊對(duì)象中至少一個(gè)類,生成目標(biāo)腳本;

類定義接口402,用于在模塊定義接口401創(chuàng)建的每一個(gè)模塊對(duì)象中,定義至少一個(gè)類;

生成接口403,用于根據(jù)模塊定義接口401創(chuàng)建的至少一個(gè)模塊對(duì)象和每一個(gè)模塊對(duì)象中類定義接口402定義的至少一個(gè)類,生成目標(biāo)腳本;

應(yīng)用程序啟動(dòng)接口404,包括:

接收單元4041,用于接收外部發(fā)送的針對(duì)生成接口40 3生成的目標(biāo)腳本的目標(biāo)模塊對(duì)象的名稱;

確定單元4042,用于根據(jù)目標(biāo)模塊對(duì)象的名稱,在至少一個(gè)模塊對(duì)象中確定目標(biāo)模塊對(duì)象;

處理單元4043,用于根據(jù)確定單元4042確定的目標(biāo)模塊對(duì)象和至少一個(gè)目標(biāo)模塊對(duì)象所依賴的模塊對(duì)象的名稱,確定待處理的模塊對(duì)象;

實(shí)例化單元4044,用于對(duì)處理單元4043確定的每一個(gè)待處理的模塊對(duì)象中的每一個(gè)類進(jìn)行實(shí)例化。

類定義接口用來(lái)加載應(yīng)用程序需要使用的類,傳遞給應(yīng)用程序接口的模塊稱為應(yīng)用程序入口模塊。本實(shí)施例以應(yīng)用程序入口模塊為根,以樹型接口存儲(chǔ)模塊間依賴關(guān)系。依賴模塊名稱集合屬性用來(lái)存儲(chǔ)葉子節(jié)點(diǎn)。應(yīng)用程序啟動(dòng)接口在實(shí)例化入口模塊對(duì)象所包含的類時(shí),將追溯模塊對(duì)象的依賴關(guān)系,逐個(gè)加載依賴模塊對(duì)象,并實(shí)例化模塊對(duì)象內(nèi)的類。

在本發(fā)明的一個(gè)實(shí)施例中,處理單元4043,包括:

建立子單元,用于建立模塊加載棧;

執(zhí)行子單元,用于將目標(biāo)模塊對(duì)象作為當(dāng)前待處理的模塊對(duì)象;

添加子單元,用于將執(zhí)行子單元確定的當(dāng)前待處理的模塊對(duì)象添加到建立子單元建立的模塊加載棧,將模塊加載棧中的模塊對(duì)象作為待處理的模塊對(duì)象;

確定子單元,用于確定添加子單元中當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象的名稱;

判斷子單元,用于根據(jù)確定子單元確定的當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象的名稱,判斷當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象是否均在模塊加載棧中,如果是,則結(jié)束當(dāng)前流程,否則,觸發(fā)處理子單元;

處理子單元,用于將當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象中不在模塊加載棧中的模塊對(duì)象作為當(dāng)前待處理的模塊對(duì)象,觸發(fā)添加子單元。

在本發(fā)明的一個(gè)實(shí)施例中,實(shí)例化單元4044,用于從模塊加載棧的棧頂開始,依次對(duì)每一個(gè)待處理的模塊對(duì)象中的每一個(gè)類進(jìn)行實(shí)例化。

如圖5所示,本發(fā)明實(shí)施例以模塊化封裝目標(biāo)腳本M為例,對(duì)目標(biāo)腳本運(yùn)行方法進(jìn)行詳細(xì)地說(shuō)明,該方法包括以下步驟:

步驟501:腳本封裝裝置接收外部發(fā)送的至少一個(gè)模塊參數(shù),每一個(gè)模塊參數(shù)中包括:模塊的名稱、至少一個(gè)模塊所依賴的模塊的名稱。

在本實(shí)施例中,腳本封裝裝置接收外部發(fā)送的四個(gè)模塊參數(shù),每一個(gè)模塊參數(shù)中包括:模塊的名稱、至少一個(gè)模塊所依賴的模塊的名稱。例如,四個(gè)模塊參數(shù)分別為(A,B、C)、(B,A、D)、(C,A)、(D,B)。

步驟502:腳本封裝裝置針對(duì)每一個(gè)模塊參數(shù),根據(jù)當(dāng)前模塊參數(shù),創(chuàng)建當(dāng)前模塊對(duì)象,當(dāng)前模塊對(duì)象中包括:當(dāng)前模塊對(duì)象的名稱、至少一個(gè)當(dāng)前模塊對(duì)象所依賴的模塊對(duì)象的名稱。

腳本封裝裝置根據(jù)四個(gè)模塊參數(shù),創(chuàng)建四個(gè)模塊對(duì)象,A、B、C、D,每一個(gè)模塊對(duì)象中包括:當(dāng)前模塊對(duì)象的名稱、至少一個(gè)當(dāng)前模塊對(duì)象所依賴的模塊對(duì)象的名稱。例如,模塊對(duì)象A中包括:模塊對(duì)象的名稱A、兩個(gè)模塊對(duì)象A所依賴的模塊對(duì)象的名稱B、C。

步驟503:在目標(biāo)模塊對(duì)象中,腳本封裝裝置接收外部發(fā)送的針對(duì)目標(biāo)模塊對(duì)象的至少一個(gè)目標(biāo)類參數(shù),每一個(gè)目標(biāo)類參數(shù)中包括:目標(biāo)基類、目標(biāo)類的名稱、目標(biāo)類的繼承關(guān)系和目標(biāo)類的依賴關(guān)系。

接收外部發(fā)送的針對(duì)模塊對(duì)象A、B、C、D的類參數(shù),以模塊對(duì)象A為例,接收外部發(fā)送的針對(duì)模塊對(duì)象A的兩個(gè)類參數(shù),其中,一個(gè)類參數(shù)中包括:基類A1、類的名稱B1、類B1繼承于基類A1、類B1依賴于基類A1;另一個(gè)類參數(shù)中包括:基類A1、類的名稱B2、類B2繼承于基類A1、類B2依賴于基類A1。

步驟504:腳本封裝裝置針對(duì)每一個(gè)目標(biāo)類參數(shù),根據(jù)當(dāng)前目標(biāo)類參數(shù)中的目標(biāo)基類、目標(biāo)類的名稱、目標(biāo)類的繼承關(guān)系和目標(biāo)類的依賴關(guān)系,在目標(biāo)模塊對(duì)象中,定義當(dāng)前目標(biāo)類。

腳本封裝裝置根據(jù)步驟503中的類參數(shù),為每一個(gè)模塊對(duì)象定義至少一個(gè)類,以模塊對(duì)象A為例,在模塊對(duì)象A中定義兩個(gè)類,類B1和類B2。按照此方法分別在模塊對(duì)象B、C、D中定義類,這里不再贅述。

步驟505:腳本封裝裝置根據(jù)至少一個(gè)模塊對(duì)象和每一個(gè)模塊對(duì)象中至少一個(gè)類,生成目標(biāo)腳本M。

腳本封裝裝置根據(jù)模塊對(duì)象A、B、C、D和每一個(gè)模塊對(duì)象中至少一個(gè)類,生成目標(biāo)腳本M。

步驟506:腳本運(yùn)行裝置接收外部發(fā)送的針對(duì)目標(biāo)腳本M的目標(biāo)模塊對(duì)象的名稱,根據(jù)目標(biāo)模塊對(duì)象的名稱,在至少一個(gè)模塊對(duì)象中確定目標(biāo)模塊對(duì)象。

腳本運(yùn)行裝置接收外部發(fā)送的針對(duì)目標(biāo)腳本M的目標(biāo)模塊對(duì)象的名稱A,在模塊對(duì)象A、B、C、D中確定目標(biāo)模塊對(duì)象A。

步驟507:腳本運(yùn)行裝置建立模塊加載棧。

該加載棧用于加載模塊對(duì)象。

步驟508:腳本運(yùn)行裝置將目標(biāo)模塊對(duì)象作為當(dāng)前待處理的模塊對(duì)象。

將目標(biāo)模塊對(duì)象A作為當(dāng)前待處理的模塊對(duì)象。

步驟509:腳本運(yùn)行裝置將當(dāng)前待處理的模塊對(duì)象添加到模塊加載棧,將模塊加載棧中的模塊對(duì)象作為待處理的模塊對(duì)象。

將當(dāng)前待處理的模塊對(duì)象A添加到模塊加載棧,并將A作為待處理的模塊對(duì)象。

步驟510:腳本運(yùn)行裝置確定當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象的名稱。

確定當(dāng)前待處理的模塊對(duì)象A所依賴的模塊對(duì)象的名稱為B、C。

步驟511:腳本運(yùn)行裝置根據(jù)當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象的名稱,判斷當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象是否均在模塊加載棧中,如果是,執(zhí)行步驟512,否則,執(zhí)行步驟513。

當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象B、C不在模塊加載棧中,執(zhí)行步驟513。需要說(shuō)明的是,當(dāng)步驟513需要依次將模塊對(duì)象B、C作為當(dāng)前待處理的模塊對(duì)象進(jìn)行處理時(shí),相應(yīng)的,應(yīng)該分別進(jìn)行本步驟的判斷過(guò)程,在這里,執(zhí)行步驟512只針對(duì)當(dāng)前模塊對(duì)象。例如,模塊對(duì)象B作為當(dāng)前待處理的模塊對(duì)象執(zhí)行本步驟,若判斷結(jié)果為是,只終止模塊對(duì)象B相應(yīng)的流程,而不影響模塊對(duì)象C作為當(dāng)前待處理的模塊對(duì)象執(zhí)行本步驟。

步驟512:腳本運(yùn)行裝置結(jié)束當(dāng)前流程。

步驟513:腳本運(yùn)行裝置將當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象中不在模塊加載棧中的模塊對(duì)象作為當(dāng)前待處理的模塊對(duì)象。

將模塊對(duì)象B、C作為當(dāng)前待處理的模塊對(duì)象,返回步驟509。模塊對(duì)象B、C的處理過(guò)程與模塊對(duì)象A類似,這里不再贅述。最終,將模塊對(duì)象A、B、C、D依次添加到模塊加載棧。

步驟514:腳本運(yùn)行裝置從模塊加載棧的棧頂開始,依次對(duì)每一個(gè)待處理的模塊對(duì)象中的每一個(gè)類進(jìn)行實(shí)例化。

從模塊加載棧的棧頂開始,依次對(duì)模塊對(duì)象A、B、C、D中的每一個(gè)類進(jìn)行實(shí)例化。例如,對(duì)模塊對(duì)象A中的類B1和類B2分別進(jìn)行實(shí)例化。該模塊加載棧遵循先進(jìn)后出的原則。

綜上,本發(fā)明各個(gè)實(shí)施例至少具有如下效果:

1、在本發(fā)明實(shí)施例中,在腳本封裝過(guò)程中,根據(jù)外部發(fā)送的至少一個(gè)模塊參數(shù),創(chuàng)建至少一個(gè)模塊對(duì)象,并在每一個(gè)模塊對(duì)象中,定義至少一個(gè)類。該方法對(duì)腳本進(jìn)行模塊化封裝,形成目標(biāo)腳本。當(dāng)腳本的代碼量較高時(shí),可以通過(guò)創(chuàng)建模塊對(duì)象對(duì)腳本進(jìn)行封裝,減少各個(gè)類之間存在的耦合,使腳本結(jié)構(gòu)更加清晰。

2、在本發(fā)明實(shí)施例中,腳本運(yùn)行基于腳本的模塊化封裝,當(dāng)目標(biāo)腳本運(yùn)行時(shí),先根據(jù)目標(biāo)模塊對(duì)象的名稱確定目標(biāo)模塊對(duì)象,再對(duì)目標(biāo)模塊對(duì)象中的每一個(gè)類進(jìn)行加載并實(shí)例化。當(dāng)需要實(shí)例化的類較多時(shí),可以直接對(duì)這些類對(duì)應(yīng)的模塊對(duì)象進(jìn)行操作,不需要對(duì)每一個(gè)類逐一進(jìn)行操作。

3、在本發(fā)明實(shí)施例中,提供了一種模塊對(duì)象中類的加載和實(shí)例化方法,通過(guò)建立模塊加載棧,并根據(jù)當(dāng)前待處理的模塊對(duì)象所依賴的模塊對(duì)象的名稱,確定模塊加載棧中的待處理的模塊對(duì)象,按照先進(jìn)后出的順序使待處理的模塊對(duì)象出棧,并對(duì)出棧的待處理的模塊對(duì)象依次進(jìn)行實(shí)例化。

上述裝置內(nèi)的各單元之間的信息交互、執(zhí)行過(guò)程等內(nèi)容,由于與本發(fā)明方法實(shí)施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實(shí)施例中的敘述,此處不再贅述。

需要說(shuō)明的是,在本文中,諸如第一和第二之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)〃·····”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同因素。

本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)在計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)中。

最后需要說(shuō)明的是:以上所述僅為本發(fā)明的較佳實(shí)施例,僅用于說(shuō)明本發(fā)明的技術(shù)方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
平江县| 富平县| 浦北县| 明溪县| 嵊泗县| 银川市| 乐亭县| 揭东县| 玉门市| 克东县| 和林格尔县| 班戈县| 安塞县| 宜春市| 无为县| 乌拉特后旗| 和田市| 海宁市| 绥滨县| 永春县| 顺平县| 治多县| 黄骅市| 长泰县| 平邑县| 澄江县| 太仆寺旗| 仁怀市| 尉犁县| 德格县| 中西区| 六枝特区| 新巴尔虎左旗| 宁明县| 郯城县| 开远市| 平乡县| 德安县| 恩施市| 舞阳县| 黄大仙区|