本發(fā)明涉及前端配置,具體涉及聲明式的控件配置方法、裝置、計(jì)算機(jī)設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、當(dāng)前web端個(gè)性化、定制化需求越來越多,傳統(tǒng)一次編碼決定頁(yè)面內(nèi)容,在面對(duì)客戶多元需求時(shí)候就會(huì)很被動(dòng)。為了能在產(chǎn)品交付后,通過簡(jiǎn)單的配置修改或是頁(yè)面上的簡(jiǎn)單操作,就能改變頁(yè)面內(nèi)容,當(dāng)前比較主流的做法是使用解釋器+聲明式配置來開發(fā)頁(yè)面。而表單作為前后臺(tái)數(shù)據(jù)交互的重要途徑,以及絕大多數(shù)用戶定制需求的重要來源,應(yīng)用于表單的解釋器+聲明式配置的方案就顯得尤為重要。
2、目前,表單的聲明式配置是基于具體功能逐一進(jìn)行擴(kuò)展設(shè)計(jì),但這種方式主要用于配置表單的屬性,難以實(shí)現(xiàn)復(fù)雜的動(dòng)態(tài)表單,例如難以實(shí)現(xiàn)復(fù)雜規(guī)則下的表單聯(lián)動(dòng)。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本發(fā)明提供了一種聲明式的控件配置方法、裝置、計(jì)算機(jī)設(shè)備及存儲(chǔ)介質(zhì),以能夠利用聲明式配置生成動(dòng)態(tài)表單。
2、第一方面,本發(fā)明提供了一種聲明式的控件配置方法,包括:
3、按照預(yù)先定義的事件結(jié)構(gòu)體,為目標(biāo)控件配置相應(yīng)的目標(biāo)事件結(jié)構(gòu)體;所述事件結(jié)構(gòu)體用于配置與操作事件相對(duì)應(yīng)的動(dòng)作;
4、按照預(yù)先定義的視圖結(jié)構(gòu)體,為所述目標(biāo)控件配置相應(yīng)的目標(biāo)視圖結(jié)構(gòu)體;所述視圖結(jié)構(gòu)體用于配置控件視圖的屬性;
5、響應(yīng)于所述目標(biāo)控件的目標(biāo)操作事件,根據(jù)所述目標(biāo)事件結(jié)構(gòu)體確定與所述目標(biāo)操作事件相對(duì)應(yīng)的目標(biāo)動(dòng)作;
6、根據(jù)所述目標(biāo)動(dòng)作修改所述目標(biāo)視圖結(jié)構(gòu)體中的屬性,和/或,修改其他控件的視圖結(jié)構(gòu)體中的屬性;
7、利用解釋器對(duì)修改后的控件進(jìn)行解析,并展示。
8、在一些可選的實(shí)施方式中,所述事件結(jié)構(gòu)體包括多個(gè)預(yù)先定義的內(nèi)置事件對(duì)象;每個(gè)所述內(nèi)置事件對(duì)象對(duì)應(yīng)不同的操作事件;
9、所述內(nèi)置事件對(duì)象用于配置與操作事件相對(duì)應(yīng)的動(dòng)作,以及執(zhí)行所述動(dòng)作的觸發(fā)條件;
10、所述根據(jù)所述目標(biāo)事件結(jié)構(gòu)體確定與所述目標(biāo)操作事件相對(duì)應(yīng)的目標(biāo)動(dòng)作,包括:
11、確定所述目標(biāo)事件結(jié)構(gòu)體中,與所述目標(biāo)操作事件相對(duì)應(yīng)的目標(biāo)內(nèi)置事件對(duì)象;
12、根據(jù)所述目標(biāo)內(nèi)置事件對(duì)象中匹配的觸發(fā)條件,確定相對(duì)應(yīng)的目標(biāo)動(dòng)作。
13、在一些可選的實(shí)施方式中,所述內(nèi)置事件對(duì)象為二維數(shù)組結(jié)構(gòu);
14、所述內(nèi)置事件對(duì)象的第一維對(duì)應(yīng)于內(nèi)層事件數(shù)組,所述內(nèi)置事件對(duì)象的第二維對(duì)應(yīng)于所述內(nèi)層事件數(shù)組中的內(nèi)層事件元素;所述內(nèi)層事件數(shù)組包括至少一個(gè)互斥的內(nèi)層事件元素,且所述內(nèi)層事件元素包括表示所述觸發(fā)條件的條件項(xiàng)和相對(duì)應(yīng)的動(dòng)作項(xiàng);
15、所述根據(jù)所述目標(biāo)內(nèi)置事件對(duì)象中匹配的觸發(fā)條件,確定相對(duì)應(yīng)的目標(biāo)動(dòng)作,包括:
16、對(duì)所述目標(biāo)內(nèi)置事件對(duì)象第一維的各個(gè)目標(biāo)內(nèi)層事件數(shù)組依次執(zhí)行第一匹配處理,直至遍歷所述目標(biāo)內(nèi)置事件對(duì)象中的目標(biāo)內(nèi)層事件數(shù)組;
17、所述第一匹配處理包括:
18、判斷當(dāng)前狀態(tài)與所述目標(biāo)內(nèi)層事件數(shù)組中內(nèi)層事件元素的觸發(fā)條件是否相匹配;
19、將與所述當(dāng)前狀態(tài)相匹配的觸發(fā)條件所對(duì)應(yīng)的動(dòng)作項(xiàng),作為需要執(zhí)行的目標(biāo)動(dòng)作項(xiàng)。
20、在一些可選的實(shí)施方式中,所述觸發(fā)條件為二維數(shù)組結(jié)構(gòu);
21、所述觸發(fā)條件的第一維對(duì)應(yīng)于執(zhí)行邏輯與的內(nèi)層條件數(shù)組,所述觸發(fā)條件的第二維對(duì)應(yīng)于所述內(nèi)層條件數(shù)組中執(zhí)行邏輯或的內(nèi)層條件元素;所述內(nèi)層條件數(shù)組包括至少一個(gè)內(nèi)層條件元素,且所述內(nèi)層條件元素用于表示判定規(guī)則;
22、所述判斷當(dāng)前狀態(tài)與所述目標(biāo)內(nèi)層事件數(shù)組中內(nèi)層事件元素的觸發(fā)條件是否相匹配,包括:
23、對(duì)于所述目標(biāo)內(nèi)層事件數(shù)組中內(nèi)層事件元素的任意待定觸發(fā)條件,對(duì)所述待定觸發(fā)條件第一維的各個(gè)目標(biāo)內(nèi)層條件數(shù)組均執(zhí)行第二匹配處理,以確定所述當(dāng)前狀態(tài)與所述目標(biāo)內(nèi)層條件數(shù)組是否相匹配;
24、在所述當(dāng)前狀態(tài)與各個(gè)所述目標(biāo)內(nèi)層條件數(shù)組均匹配的情況下,確定所述當(dāng)前狀態(tài)與所述待定觸發(fā)條件相匹配;
25、其中,所述第二匹配處理包括:
26、判斷所述當(dāng)前狀態(tài)是否與所述目標(biāo)內(nèi)層條件數(shù)組中至少一個(gè)內(nèi)層條件元素表示的判定規(guī)則相匹配;
27、在所述當(dāng)前狀態(tài)與所述目標(biāo)內(nèi)層條件數(shù)組中至少一個(gè)內(nèi)層條件元素表示的判定規(guī)則相匹配的情況下,確定所述當(dāng)前狀態(tài)與所述目標(biāo)內(nèi)層條件數(shù)組相匹配。
28、在一些可選的實(shí)施方式中,所述事件結(jié)構(gòu)體還包括初始化事件對(duì)象和/或自定義事件對(duì)象;
29、所述初始化事件對(duì)象用于配置初始化控件時(shí)需要執(zhí)行的動(dòng)作;所述自定義事件對(duì)象用于配置用戶自定義的動(dòng)作;
30、所述根據(jù)所述目標(biāo)事件結(jié)構(gòu)體確定與所述目標(biāo)操作事件相對(duì)應(yīng)的目標(biāo)動(dòng)作,還包括:
31、在初始化所述目標(biāo)控件時(shí),確定所述目標(biāo)事件結(jié)構(gòu)體中相應(yīng)的目標(biāo)初始化事件對(duì)象,并根據(jù)所述目標(biāo)初始化事件對(duì)象中配置的動(dòng)作確定相應(yīng)的目標(biāo)動(dòng)作;
32、在所述目標(biāo)操作事件為用戶自定義操作的情況下,確定所述目標(biāo)事件結(jié)構(gòu)體中,與所述目標(biāo)操作事件相對(duì)應(yīng)的目標(biāo)自定義事件對(duì)象,并根據(jù)所述目標(biāo)自定義事件對(duì)象中配置的動(dòng)作確定相應(yīng)的目標(biāo)動(dòng)作。
33、在一些可選的實(shí)施方式中,所述事件結(jié)構(gòu)體中配置的動(dòng)作,包括:動(dòng)作類型、動(dòng)作值和指向的控件;
34、所述動(dòng)作類型包括事件類型和配置類型;在所述動(dòng)作類型為事件類型的情況下,所述動(dòng)作值包括待執(zhí)行的事件名稱;在所述動(dòng)作類型為配置類型的情況下,所述動(dòng)作值包括待配置的值;
35、所述根據(jù)所述目標(biāo)動(dòng)作修改所述目標(biāo)視圖結(jié)構(gòu)體中的屬性,和/或,修改其他控件的視圖結(jié)構(gòu)體中的屬性,包括:
36、將所述目標(biāo)動(dòng)作指向的控件作為待操作控件;所述待操作控件包括所述目標(biāo)控件和/或其它控件;
37、在所述目標(biāo)動(dòng)作的動(dòng)作類型為事件類型的情況下,確定與所述目標(biāo)動(dòng)作的動(dòng)作值所包含的事件名稱相對(duì)應(yīng)的待執(zhí)行操作事件,并根據(jù)所述待執(zhí)行操作事件控制所述待操作控件執(zhí)行相應(yīng)的動(dòng)作;
38、在所述目標(biāo)動(dòng)作的動(dòng)作類型為配置類型的情況下,為所述待操作控件配置所述目標(biāo)動(dòng)作的動(dòng)作值所包含的待配置的值。
39、在一些可選的實(shí)施方式中,所述為目標(biāo)控件配置相應(yīng)的目標(biāo)事件結(jié)構(gòu)體,包括:
40、按照預(yù)設(shè)的取值模板,為所述目標(biāo)事件結(jié)構(gòu)體設(shè)置相應(yīng)的選項(xiàng)值;所述取值模板包括取值類型和取值路徑。
41、第二方面,本發(fā)明提供了一種聲明式的控件配置裝置,包括:
42、配置模塊,用于按照預(yù)先定義的事件結(jié)構(gòu)體,為目標(biāo)控件配置相應(yīng)的目標(biāo)事件結(jié)構(gòu)體;所述事件結(jié)構(gòu)體用于配置與操作事件相對(duì)應(yīng)的動(dòng)作;按照預(yù)先定義的視圖結(jié)構(gòu)體,為所述目標(biāo)控件配置相應(yīng)的目標(biāo)視圖結(jié)構(gòu)體;所述視圖結(jié)構(gòu)體用于配置控件視圖的屬性;
43、事件響應(yīng)模塊,用于響應(yīng)于所述目標(biāo)控件的目標(biāo)操作事件,根據(jù)所述目標(biāo)事件結(jié)構(gòu)體確定與所述目標(biāo)操作事件相對(duì)應(yīng)的目標(biāo)動(dòng)作;
44、屬性修改模塊,用于根據(jù)所述目標(biāo)動(dòng)作修改所述目標(biāo)視圖結(jié)構(gòu)體中的屬性,和/或,修改其他控件的視圖結(jié)構(gòu)體中的屬性;
45、解析展示模塊,用于利用解釋器對(duì)修改后的控件進(jìn)行解析,并展示。
46、第三方面,本發(fā)明提供了一種計(jì)算機(jī)設(shè)備,包括:存儲(chǔ)器和處理器,存儲(chǔ)器和處理器之間互相通信連接,存儲(chǔ)器中存儲(chǔ)有計(jì)算機(jī)指令,處理器通過執(zhí)行計(jì)算機(jī)指令,從而執(zhí)行上述第一方面或其對(duì)應(yīng)的任一實(shí)施方式的聲明式的控件配置方法。
47、第四方面,本發(fā)明提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)指令,計(jì)算機(jī)指令用于使計(jì)算機(jī)執(zhí)行上述第一方面或其對(duì)應(yīng)的任一實(shí)施方式的聲明式的控件配置方法。
48、本發(fā)明將控件的配置抽象為視圖結(jié)構(gòu)體和事件結(jié)構(gòu)體,對(duì)配置進(jìn)行了簡(jiǎn)單的抽象,不僅能夠區(qū)分控件已有的配置,還能夠分離控件的表現(xiàn)和控制,將控件的復(fù)雜聯(lián)動(dòng)等控制統(tǒng)一抽象為通過操作事件修改控件的表現(xiàn),能夠?qū)崿F(xiàn)動(dòng)態(tài)表單等功能;開發(fā)人員可以更靈活地配置控件的表現(xiàn)和控制,符合開發(fā)直覺,能夠覆蓋較多的應(yīng)用場(chǎng)景;并且,結(jié)構(gòu)體也具有較好的可擴(kuò)展性,適合頁(yè)面編排等業(yè)務(wù)場(chǎng)景使用。此外,只需要基于視圖結(jié)構(gòu)體和事件結(jié)構(gòu)體進(jìn)行配置即可,不涉及函數(shù)表達(dá)式,從而不需要代碼注入,能夠保證安全性。