1.本公开涉及计算机技术领域,具体地,涉及一种页面文件生成方法、装置、存储介质及电子设备。
背景技术:2.同一应用可能存在多个应用平台,比如小程序,网页,安卓(android)和ios,每个平台都有各自不同的编程语言,在开发跨平台应用时,往往需要开发多个不同平台的版本,这要求开发人员同时学习多个语言,并将同一份逻辑和页面,用不同的平台语言在多个平台实现,这样会耗费大量人力,且对开发人员而言具有较高的学习门槛。
技术实现要素:3.提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
4.第一方面,本公开提供一种页面文件生成方法,包括:
5.获取页面描述文件,所述页面描述文件用于描述组成目标页面所需的多个组件的类型和属性值;
6.解析所述页面描述文件,得到页面组件树,所述页面组件树包括所述多个组件间的层级关系以及每个组件的类型和属性值;
7.根据所述页面组件树中的层级关系以及每个组件的类型和属性值,基于目标平台语言规则生成相应的入口文件;
8.根据所述页面组件树中每个组件的类型,从组件库中选择对应所述类型且采用目标平台语言实现的每个目标组件,将每个目标组件拷贝到所述入口文件所在目录,得到目标页面项目;
9.对所述目标页面项目进行编译,得到采用目标平台语言实现的页面文件。
10.第二方面,本公开提供一种页面文件生成装置,包括:
11.页面描述模块,用于获取页面描述文件,所述页面描述文件用于描述组成目标页面所需的多个组件的类型和属性值;
12.页面解析模块,用于解析所述页面描述文件,得到页面组件树,所述页面组件树包括所述多个组件间的层级关系以及每个组件的类型和属性值;
13.入口生成模块,用于根据所述页面组件树中的层级关系以及每个组件的类型和属性值,基于目标平台语言规则生成相应的入口文件;
14.组件拷贝模块,用于根据所述页面组件树中每个组件的类型,从组件库中选择对应所述类型且采用目标平台语言实现的每个目标组件,将每个目标组件拷贝到所述入口文件所在目录,得到目标页面项目;
15.项目编译模块,用于对所述目标页面项目进行编译,得到采用目标平台语言实现
的页面文件。
16.第三方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理装置执行时实现第一方面所述的方法。
17.第四方面,本公开提供一种电子设备,包括:
18.存储装置,其上存储有计算机程序;
19.处理装置,用于执行所述存储装置中的所述计算机程序,以实现第一方面所述的方法。
20.在上述技术方案中,只需要获取用结构化语言描述的页面描述文件,即可自动解析页面描述文件中组件的层级关系、每个组件的类型和属性值,并基于相应的平台语言规则,生成相应的入口文件,例如在默认情况下,可以基于html语言规则、android语言规则和ios语言规则,同时自动生成html页面文件、android页面文件和ios页面文件,或者可以指定某一种目标平台语言,生成该种目标平台语言对应的页面文件。而这种页面描述文件仅需要描述组成目标页面所需的各个组件的类型和属性值,并不需要开发人员再学习特殊的语言,学习成本低,且易于上手,可以极大减轻开发人员的学习成本,并提高开发效率。
21.本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
22.结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。在附图中:
23.图1是本公开实施例提供的页面文件生成方法的流程图;
24.图2是本公开实施例示出的页面描述文件中层级关系的一种示意图;
25.图3是本公开实施例中组件库中部分组件的示意图;
26.图4是相关技术中生成不同平台的页面文件的过程示意图;
27.图5是本公开实施例中生成不同平台的页面文件的过程示意图;
28.图6是本公开实施例中组成表单页面所需的各组件的示意图;
29.图7是本公开实施例提供的页面文件生成装置的框图;
30.图8是本公开实施例提供的电子设备的框图。
具体实施方式
31.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
32.应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
33.本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
34.需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
35.需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
36.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
37.在相关技术中,如果要将同一个页面在多个不同平台进行实现,需要分别采用不同的平台语言编写页面项目,然后对页面项目进行编译,生成适用于对应平台的页面文件。这种方式耗时耗力,且具有较高的学习门槛,由此,本公开实施例提供一种页面文件生成方法,只需要编写页面描述文件,即可自动将该页面描述文件转换成采用各个平台语言实现的页面文件。
38.首先,本公开实施例提供组件库,用于存储各个组件。其中,组件库中包括页面基础组件,下表一示出了组件库中一些页面基础组件的详细信息:
[0039][0040][0041]
表一
[0042]
可以理解的,页面基础组件可以包括但不限于表一中列举的组件。
[0043]
图1示出了本公开实施例提供的页面文件生成方法的流程图,如图1所示,该方法包括如下步骤:
[0044]
s110,获取页面描述文件,页面描述文件用于描述组成目标页面所需的多个组件的类型和属性值。
[0045]
其中,组成目标页面的多个组件中包括至少一个页面基础组件。
[0046]
s120,解析页面描述文件,得到页面组件树,页面组件树包括该多个组件间的层级关系以及每个组件的类型和属性值。
[0047]
其中,在页面描述文件中,组件通过父子属性引用其他组件,解析该页面描述文件中组件的父子属性,可得到组件间的层级关系,然后根据组件间的层级关系以及每个组件的类型和属性值,生成页面组件树。例如,在页面描述文件中,根页面组件通过父子属性引用容器组件,容器组件通过父子属性引用图片组件和文本组件,在解析该页面描述文件后,可解析得到图2所示的层级关系,最外层为根页面组件,根页面组件内包裹容器组件,容器组件内包裹图片组件和文本组件。根据该层级关系,以及每个组件的类型和属性值,获得页面组件树。
[0048]
可选的,在写页面描述文件时,父子属性可以以“children”属性表示。
[0049]
s130,根据页面组件树中的层级关系以及每个组件的类型和属性值,基于目标平台语言规则生成相应的入口文件。
[0050]
其中,目标平台语言是指适用于目标平台的一种编程语言,在得到页面组件树后,根据页面组件树中组件间的层级关系以及每个组件的类型和属性值,基于目标平台语言规则生成入口文件。
[0051]
s140,根据页面组件树中每个组件的类型,从组件库中选择对应类型且采用目标平台语言实现的每个目标组件,将每个目标组件拷贝到该入口文件所在目录,得到目标页面项目。
[0052]
其中,在执行步骤s110之前,本公开实施例还包括:获取每个类型对应的采用不同平台语言实现的多个组件,将每个类型对应的多个组件存储到组件库中,并记录每个组件所对应的类型和平台语言实现。上述过程被称为组件的注册。其中,图3示出了组件库中部分组件的示意图,如图3所示,在组件库中,容器组件共包括三个组件,分别为html语言实现的组件、android语言实现的组件和ios语言实现的组件,并记录每个组件对应的类型“view”和其对应的平台语言实现。同理,文本组件、图片组件和视频组件也分别包括采用这三种语言实现的三个组件。
[0053]
由于预先记录了每个组件对应的类型和平台语言实现,在得到页面组件树后,根据页面组件树中每个组件的类型,即可在组件库中查找对应类型且采用目标平台语言实现的每个目标组件,将每个目标组件拷贝到入口文件所在目录,根据该目录下的入口文件和每个目标组件,得到目标页面项目。需要注意的是,页面描述文件中的多个组件应当是组件库中已有的组件,即已注册的组件,如果页面描述文件中描述了未注册的组件类型,则无法从组件库中找到对应的目标组件。
[0054]
s150,对目标页面项目进行编译,得到采用目标平台语言实现的页面文件。
[0055]
为便于理解,通过一示例性实施例对上述步骤s110-s150进行详细说明。
[0056]
示例性的,根据结构化的页面描述文件描述一目标页面,以下是页面描述文件的一种示例:
[0057][0058]
其中,每个组件具有一个唯一id和对应的类型(type),且不同类型的组件具有自己特定的属性,例如,图片组件具有图片地址属性,文本组件具有文本内容属性。在上述实施例中,"id1":{}中描述了根页面组件的类型和属性值,其中,根页面组件通过children属性(即父子属性)引用容器组件;"id2":{}中描述了容器组件的类型和属性值,其中,容器组件的属性包括宽、高属性,以及children属性,容器组件通过children属性引用图片组件和文本组件;"id3":{}中描述了图片组件的类型和属性值,其中,图片组件的属性包括图片地址属性,且图片地址属性的属性值为“aaa”,表示将在目标页面显示图片地址为“aaa”的图
片;"id4":{}中描述了文本组件的类型和属性值,其中,文本组件的属性包括文本内容属性,且文本内容属性的属性值为“bbb”,表示将在目标页面显示“bbb”的文本内容。
[0059]
可以理解的是,上述示例仅是对页面描述文件的一种示例,并不表示对目标页面或者组成目标页面的组件的限定,也不表示对组件属性的限定。
[0060]
在步骤s110中,获取页面描述文件。
[0061]
在步骤s120中,解析该页面描述文件,得到组件间的层级关系。如上述示例,组件间的层级关系为:最外层为根页面组件,根页面组件内包裹容器组件,容器组件内包裹图片组件和文本组件。根据上述层级关系,以及每个组件的类型和属性值,获得页面组件树。以下是页面组件树的一种示例:
[0062][0063]
[0064]
在上述示例中,页面组件树描述了最外层为根页面组件,根页面组件内包裹容器组件,容器组件内包裹图片组件和文本组件的层级关系,且描述了每个组件的类型和属性值。
[0065]
在步骤s130中,以目标平台语言为html语言为例,根据页面组件树中的层级关系以及每个组件的类型和属性值,基于html语言规则生成相应的入口文件。以下是根据上述页面组件树,基于html语言规则生成的入口文件的一种示例:
[0066][0067]
从上述示例可见,入口文件中包括“最外层为根页面组件,根页面组件内包裹容器组件,容器组件内包裹图片组件和文本组件”的层级关系,以及包括每个组件的类型和属性值。
[0068]
在步骤s140中,根据页面组件树中每个组件的类型,从组件库中选择对应类型且采用html语言实现的每个目标组件。在组件库中,根页面组件分别包括html语言实现、android语言实现和ios语言实现,容器组件、图片组件和文本组件也同样包括上述三种语言实现的组件,根据页面组件树中每个组件的类型,从组件库中选择类型为“page”且为html语言实现的目标根页面组件,从组件库中选择类型为“view”且为html语言实现的目标容器组件,从组件库中选择类型为“picture”且为html语言实现的目标图片组件,从组件库中选择类型为“text”且为html语言实现的目标文本组件。
[0069]
然后,将目标根页面组件、目标容器组件、目标图片组件和目标文本组件,拷贝到步骤s130中生成的入口文件所在目录,根据该目录下的入口文件,以及目标根页面组件、目标容器组件、目标图片组件和目标文本组件,得到相应的目标页面项目,即html页面项目。
[0070]
在步骤s150中,对目标页面项目进行编译,在编译完成后即可得到采用html语言实现、适用于html平台的页面文件。
[0071]
可以理解的是,如图4所示,相关技术中,如果要开发跨平台应用,则需要将同一份页面,用不同的平台语言编写,才能得到在不同平台实现的页面,这需要开发人员人为编写基于html语言规则的html页面项目,再对html页面项目进行编译,得到html页面文件;人为编写基于android语言规则的android页面项目,再对android页面项目进行编译,得到android页面文件;人为编写基于ios语言规则的ios页面项目,再对ios页面项目进行编译,得到ios页面文件。
[0072]
而本公开实施例,如图5所示,只需要获取用结构化语言描述的页面描述文件,即可自动解析页面描述文件中组件的层级关系、每个组件的类型和属性值,得到页面组件树,然后根据页面组件树,基于相应的平台语言规则,生成相应的入口文件,得到相应的页面项目,通过编译后,得到相应的页面文件。例如在默认情况下,可以基于html语言规则、
android语言规则和ios语言规则,同时自动生成html页面文件、android页面文件和ios页面文件,或者可以指定某一种目标平台语言,生成该种目标平台语言对应的页面文件。而根据前面的示例可见,这种页面描述文件仅需要描述组成目标页面所需的各个组件的类型和属性值,并不需要开发人员再学习特殊的语言,学习成本低,且易于上手,可以极大减轻开发人员的学习成本,并提高开发效率。
[0073]
可选的,除页面基础组件外,组件库中还包括业务组件,如表单业务组件和/或商品业务组件,表单业务组件可用于组成供用户填写信息的表单页面。在一些应用场景下,用户具有在表单页面中填写信息的需求,当用户打开表单页面后,可在表单页面中主动填写各项信息,并允许表单页面在用户点击提交按钮后将用户填写的表单发送给指定的表单接收方。在将表单发送给指定的表单接收方后,清空用户在表单页面填写的信息,或者在用户授权情况下暂时缓存已填写的信息,便于用户下次在相同表单页面中填写信息时,表单页面根据已缓存的信息自动填充表单。
[0074]
示例性的,下表二示出了组件库中一些表单业务组件的详细信息:
[0075]
[0076][0077]
表二
[0078]
其中,表单管理组件中封装了表单相关的管理逻辑,每个字段组件用于处理对应字段的逻辑,包括接收对应字段的内容输入、显示对应字段的输入内容、监测对应字段的状态改变等。表二中,表单管理组件能够与所有组件进行消息通信。
[0079]
其中,表单业务组件可以包括但不限于上述表二示出的各种组件,还可以包括更多的组件,对于更多组件的可能性,本公开实施例不一一列举。
[0080]
可以理解的,当目标页面为一个表单页面时,一个表单往往分为各种字段,将表单的核心逻辑封装到表单管理组件中,各个字段组件只需要按照一定规则与表单管理组件进行消息通信,就可以实现该表单的逻辑。在具体的实施例中,页面描述文件中组成目标页面所需的多个组件包括表单管理组件和多个字段组件,且表单管理组件能够与每个字段组件进行消息通信。
[0081]
其中,每个字段组件用于,接收用户在对应字段的内容输入,并在对应字段的状态改变时,将对应字段的内容通过消息通信传给表单管理组件。其中,字段组件可通过让用户填写或者选择的方式输入相应内容,对应字段的状态改变包括该字段出现内容变化、该字段失去输入焦点或者失去选择焦点等。
[0082]
以一个表单包括邮箱字段、中文姓字段、中文名字段、中文全名字段、省字段和市字段为例,图6示出了组成相应表单页面所需的各组件的示意图,其中包括表单管理组件和多个字段组件。需要说明的是,组成相应表单页面所需的多个组件还包括一些页面基础组件,和表单业务组件中一些其他的可选性组件,如预览组件、提交按钮组件等,为描述简便,图6未一一示出。
[0083]
如图6所示,表单管理组件中封装有如下逻辑:
[0084]
1、检查必填字段是否输入完成
[0085]
字段组件接收用户在对应字段的内容输入,并在对应字段的状态改变时,将对应字段的内容通过消息通信传给表单管理组件,表单管理组件在接收到字段组件发送的消息后,检查对应字段是否必填且根据该消息确定对应字段的内容是否为空,当对应字段为必填且内容为空时,向字段组件发送报错消息,以指示字段组件生成填写提醒,从而让用户获知有未填的必填字段。
[0086]
2、管理字段间的关联关系
[0087]
表单管理组件管理字段间的关联关系,例如,中文姓字段、中文名字段与中文全名字段的关联关系,省字段与市字段的关联关系。表单管理组件在接收到字段组件发送的消息后,若对应字段与其他字段关联时,根据该消息处理与其他字段对应的关联逻辑,生成其
他字段的字段内容,并将生成的字段内容通过消息通信传给其他字段的字段组件。
[0088]
在一种示例中,中文姓字段组件接收用户输入的中文姓,并通过消息通信将用户输入的中文姓传给表单管理组件,中文名字段组件接收用户输入的中文名,并通过消息通信将用户输入的中文名传给表单管理组件,表单管理组件根据中文姓字段、中文名字段与中文全名字段的关联关系,处理中文全名字段的关联逻辑,将中文姓和中文名组成中文全名,并将中文全名通过消息通信传给中文全名字段组件,由中文全名字段组件显示中文全名。反之,表单管理组件也可以根据中文全名字段组件传来的用户输入的中文全名,解析出中文姓和中文名,并将中文姓传给中文姓字段组件,由中文姓字段组件显示中文姓,将中文名传给中文名字段组件,由中文名字段组件显示中文名。
[0089]
在又一示例中,省字段组件接收用户在下拉框中选择的省,并通过消息通信将用户选择的省传给表单管理组件,表单管理组件接收到该消息后,从城市数据库中筛选出该省下的所有市,并将该省下的所有市通过消息通信传给市字段组件,从而市字段组件在下拉框中显示该省下的所有市。
[0090]
3、检查字段内容的合法性
[0091]
表单管理组件在接收到字段组件发送的消息后,根据该消息检查对应字段的内容合法性,避免输入错误非法的数据。
[0092]
4、处理表单提交逻辑
[0093]
提交按钮组件接收用户对提交按钮的点击操作,将该点击操作通过消息通信传给表单管理组件,表单管理组件在接收到该消息后,根据提交逻辑向指定的表单接收方提交该表单。其中,提交逻辑包括但不限于检查表单中是否存在内容为空的必填字段、用户是否已勾选知晓并同意用户协议的勾选框等。
[0094]
在实际应用场景中,可视情况在表单管理组件中封装表单的管理逻辑,例如在表单管理组件中封装表单提交逻辑,以及一些其他可选的逻辑,如上述逻辑1~3中的至少一项逻辑。
[0095]
示例性的,下表三示出了组件库中一些商品业务组件的详细信息:
[0096][0097]
表三
[0098]
其中,商品管理组件中封装了商品列表展示和购买相关的逻辑,表三中商品管理
组件能够与所有组件进行消息通信。其中,商品业务组件可以包括但不限于上述表三示出的各种组件,还可以包括更多的组件,对于更多组件的可能性,本公开实施例不一一列举。
[0099]
可选的,当目标页面为一个商品页面时,组成目标页面所需的多个组件包括商品管理组件、商品选择组件、购买按钮组件和商品图组件,且商品管理组件能够与商品选择组件、购买按钮组件和商品图组件进行消息通信。
[0100]
其中,商品选择组件用于,接收用户在已展示的商品列表中对商品的选择操作,并将用户的选择操作通过消息通信传给商品管理组件。
[0101]
其中,购买按钮组件用于,接收用户对购买按钮的点击操作,并将用户的点击操作通过消息通信传给商品管理组件。
[0102]
其中,商品图组件用于,接收商品管理组件发送的消息,并根据该消息展示相应商品的详情图片。
[0103]
商品管理组件用于:(1)处理商品列表的展示逻辑;(2)接收商品选择组件发送的消息,根据该消息确定用户选择的目标商品,并通过消息通信指示商品图组件展示目标商品的详情图片;(3)接收购买按钮组件发送的消息,根据该消息发起针对用户确认购买的目标商品的购买请求。
[0104]
示例性的,当通过本公开实施例生成相应页面文件后,该页面文件中包括商品管理组件、商品选择组件、购买按钮组件和商品图组件,当在设备上根据该页面文件渲染页面时,页面文件中的商品管理组件首先展示相应的商品列表,用户可在设备上浏览商品列表,当用户选中某个目标商品时,商品选择组件接收用户对目标商品的选择操作,并将该选择操作通过消息通信传给商品管理组件,商品管理组件接收到该消息后,根据该消息确定用户选择的目标商品,并将针对目标商品的图片展示指令通过消息通信传给商品图组件,商品图组件接收到该消息后,根据该消息展示目标商品的详情图片,并支持用户对详情图片的各种操作,如缩放、保存等,用户可浏览目标商品的详情图片,并点击页面上由购买按钮组件显示的购买按钮,购买按钮组件接收到用户对购买按钮的点击操作后,将用户的点击操作通过消息通信传给商品管理组件,商品管理组件收到该消息后,根据该消息发起针对用户确认购买的目标商品的购买请求,进而生成购买订单。
[0105]
本公开实施例中,基于页面描述文件的实施例,将一个页面拆分成一个个组件,每个组件中封装特定的功能逻辑,例如,多个页面基础组件,多个表单业务组件,多个商品业务组件。这样的好处是,当需要编写不同的页面时,只需要编写不同的页面描述文件即可,组件库中的各个组件均可以复用,将所有业务逻辑封装在组件里,对平台友好,只需要在页面描述文件中机械拼接组件,即可自动生成相应页面文件,从而实现所需功能。
[0106]
综上所述,本公开实施例中,只要预先注册组件,然后根据组件定义去写页面描述文件,就可以将一个页面描述文件转换成多个平台的页面文件,使用者可以在页面描述文件中增减组件以及修改组件的属性值,来调整目标页面,而无需了解具体的代码开发。
[0107]
本公开实施例还提供一种页面文件生成装置,如图7所示,该页面文件生成装置200包括:
[0108]
页面描述模块210,用于获取页面描述文件,所述页面描述文件用于描述组成目标页面所需的多个组件的类型和属性值;
[0109]
页面解析模块220,用于解析所述页面描述文件,得到页面组件树,所述页面组件
树包括所述多个组件间的层级关系以及每个组件的类型和属性值;
[0110]
入口生成模块230,用于根据所述页面组件树中的层级关系以及每个组件的类型和属性值,基于目标平台语言规则生成相应的入口文件;
[0111]
组件拷贝模块240,用于根据所述页面组件树中每个组件的类型,从组件库中选择对应所述类型且采用目标平台语言实现的每个目标组件,将每个目标组件拷贝到所述入口文件所在目录,得到目标页面项目;
[0112]
项目编译模块250,用于对所述目标页面项目进行编译,得到采用目标平台语言实现的页面文件。
[0113]
可选的,在所述页面描述文件中,组件通过父子属性引用其他组件,页面解析模块220用于:
[0114]
解析所述页面描述文件中组件的父子属性,得到组件间的层级关系;
[0115]
根据组件间的层级关系以及每个组件的类型和属性值,生成页面组件树。
[0116]
可选的,该装置200还包括组件注册模块,用于:
[0117]
在获取页面描述文件之前,获取每个类型对应的采用不同平台语言实现的多个组件,将每个类型对应的多个组件存储到组件库中,并记录每个组件所对应的类型和平台语言实现。
[0118]
可选的,所述目标页面为表单页面时,组成目标页面所需的多个组件包括表单管理组件和多个字段组件,所述表单管理组件能够与每个字段组件进行消息通信;
[0119]
每个字段组件用于,接收用户在对应字段的内容输入,并在对应字段的状态改变时,将所述对应字段的内容通过消息通信传给所述表单管理组件;
[0120]
所述表单管理组件用于,处理表单的提交逻辑以及以下至少一项逻辑:
[0121]
当接收到字段组件发送的消息,检查对应字段是否必填且根据所述消息确定对应字段的内容是否为空,当对应字段为必填且内容为空时,向所述字段组件发送报错消息,以指示所述字段组件生成填写提醒;
[0122]
管理字段间的关联关系,以及当接收到字段组件发送的消息,若对应字段与其他字段关联时,根据所述消息处理与所述其他字段对应的关联逻辑,生成所述其他字段的字段内容,并将所述字段内容通过消息通信传给所述其他字段的字段组件;
[0123]
当接收到字段组件发送的消息,根据所述消息检查对应字段的内容合法性。
[0124]
可选的,所述目标页面为商品页面时,组成目标页面所需的多个组件包括商品管理组件、商品选择组件、购买按钮组件和商品图组件,所述商品管理组件能够与商品选择组件、购买按钮组件和商品图组件进行消息通信;
[0125]
商品选择组件用于,接收用户在已展示的商品列表中对商品的选择操作,并将用户的选择操作通过消息通信传给所述商品管理组件;
[0126]
购买按钮组件用于,接收用户对购买按钮的点击操作,并将用户的点击操作通过消息通信传给所述商品管理组件;
[0127]
商品图组件用于,接收商品管理组件发送的消息,并根据所述消息展示相应商品的详情图片;
[0128]
商品管理组件用于:
[0129]
处理商品列表的展示逻辑;
[0130]
接收商品选择组件发送的消息,根据所述消息确定用户选择的目标商品,并通过消息通信指示商品图组件展示目标商品的详情图片;
[0131]
接收购买按钮组件发送的消息,根据所述消息发起针对用户确认购买的目标商品的购买请求。
[0132]
可选的,组成目标页面的多个组件包括至少一个页面基础组件,所述页面基础组件包括:页面根组件、子页面组件、容器组件、浮动容器组件、图片组件、文本组件、返回按钮组件和退出按钮组件。
[0133]
下面参考图8,其示出了适于用来实现本公开实施例的电子设备300的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如笔记本电脑、pad(平板电脑)、台式计算机等终端。图8示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0134]
如图8所示,电子设备300可以包括处理装置(例如中央处理器、图形处理器等)301,其可以根据存储在只读存储器(rom)302中的程序或者从存储装置308加载到随机访问存储器(ram)303中的程序而执行各种适当的动作和处理。在ram 303中,还存储有电子设备300操作所需的各种程序和数据。处理装置301、rom 302以及ram 303通过总线304彼此相连。输入/输出(i/o)接口305也连接至总线304。
[0135]
通常,以下装置可以连接至i/o接口305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置307;包括例如磁带、硬盘等的存储装置308;以及通信装置309。通信装置309可以允许电子设备300与其他设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备300,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
[0136]
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置309从网络上被下载和安装,或者从存储装置308被安装,或者从rom 302被安装。在该计算机程序被处理装置301执行时,执行本公开实施例的方法中限定的上述功能。
[0137]
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存
储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
[0138]
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
[0139]
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取页面描述文件,所述页面描述文件用于描述组成目标页面所需的多个组件的类型和属性值;解析所述页面描述文件,得到页面组件树,所述页面组件树包括所述多个组件间的层级关系以及每个组件的类型和属性值;根据所述页面组件树中的层级关系以及每个组件的类型和属性值,基于目标平台语言规则生成相应的入口文件;根据所述页面组件树中每个组件的类型,从组件库中选择对应所述类型且采用目标平台语言实现的每个目标组件,将每个目标组件拷贝到所述入口文件所在目录,得到目标页面项目;对所述目标页面项目进行编译,得到采用目标平台语言实现的页面文件。
[0140]
在本公开实施例中,可以采用结构化格式的语言,如json(javascript object notation,js对象简谱),来编写页面描述文件,本公开实施例前文是以json为例提供页面描述文件的示例,当然实际应用中,也可以采用其他格式或其他语言来编写页面描述文件。
[0141]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0142]
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定,例如,页面描述模块还可以被描述为“获取页面描述文件的模块”。
[0143]
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。
[0144]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom
或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0145]
根据本公开的一个或多个实施例,示例1提供了一种页面文件生成方法,包括:
[0146]
获取页面描述文件,所述页面描述文件用于描述组成目标页面所需的多个组件的类型和属性值;
[0147]
解析所述页面描述文件,得到页面组件树,所述页面组件树包括所述多个组件间的层级关系以及每个组件的类型和属性值;
[0148]
根据所述页面组件树中的层级关系以及每个组件的类型和属性值,基于目标平台语言规则生成相应的入口文件;
[0149]
根据所述页面组件树中每个组件的类型,从组件库中选择对应所述类型且采用目标平台语言实现的每个目标组件,将每个目标组件拷贝到所述入口文件所在目录,得到目标页面项目;
[0150]
对所述目标页面项目进行编译,得到采用目标平台语言实现的页面文件。
[0151]
根据本公开的一个或多个实施例,示例2提供了示例1的方法,在所述页面描述文件中,组件通过父子属性引用其他组件,所述解析所述页面描述文件,得到页面组件树,包括:
[0152]
解析所述页面描述文件中组件的父子属性,得到组件间的层级关系;
[0153]
根据组件间的层级关系以及每个组件的类型和属性值,获得页面组件树。
[0154]
根据本公开的一个或多个实施例,示例3提供了示例1的方法,在获取页面描述文件之前,所述方法还包括:
[0155]
获取每个类型对应的采用不同平台语言实现的多个组件;
[0156]
将每个类型对应的多个组件存储到组件库中,并记录每个组件所对应的类型和平台语言实现。
[0157]
根据本公开的一个或多个实施例,示例4提供了示例1的方法,所述目标页面为表单页面时,组成目标页面所需的多个组件包括表单管理组件和多个字段组件,所述表单管理组件能够与每个字段组件进行消息通信;
[0158]
每个字段组件用于,接收用户在对应字段的内容输入,并在对应字段的状态改变时,将所述对应字段的内容通过消息通信传给所述表单管理组件;
[0159]
所述表单管理组件用于,处理表单的提交逻辑以及以下至少一项逻辑:
[0160]
当接收到字段组件发送的消息,检查对应字段是否必填且根据所述消息确定对应字段的内容是否为空,当对应字段为必填且内容为空时,向所述字段组件发送报错消息,以指示所述字段组件生成填写提醒;
[0161]
管理字段间的关联关系,以及当接收到字段组件发送的消息,若对应字段与其他字段关联时,根据所述消息处理与所述其他字段对应的关联逻辑,生成所述其他字段的字段内容,并将所述字段内容通过消息通信传给所述其他字段的字段组件;
[0162]
当接收到字段组件发送的消息,根据所述消息检查对应字段的内容合法性。
[0163]
根据本公开的一个或多个实施例,示例5提供了示例1的方法,所述目标页面为商品页面时,组成目标页面所需的多个组件包括商品管理组件、商品选择组件、购买按钮组件和商品图组件,所述商品管理组件能够与商品选择组件、购买按钮组件和商品图组件进行
消息通信;
[0164]
商品选择组件用于,接收用户在已展示的商品列表中对商品的选择操作,并将用户的选择操作通过消息通信传给所述商品管理组件;
[0165]
购买按钮组件用于,接收用户对购买按钮的点击操作,并将用户的点击操作通过消息通信传给所述商品管理组件;
[0166]
商品图组件用于,接收商品管理组件发送的消息,并根据所述消息展示相应商品的详情图片;
[0167]
商品管理组件用于:
[0168]
处理商品列表的展示逻辑;
[0169]
接收商品选择组件发送的消息,根据所述消息确定用户选择的目标商品,并通过消息通信指示商品图组件展示目标商品的详情图片;
[0170]
接收购买按钮组件发送的消息,根据所述消息发起针对用户确认购买的目标商品的购买请求。
[0171]
根据本公开的一个或多个实施例,示例6提供了示例1的方法,组成目标页面的多个组件包括至少一个页面基础组件,所述页面基础组件包括:页面根组件、子页面组件、容器组件、浮动容器组件、图片组件、文本组件、返回按钮组件和退出按钮组件。
[0172]
根据本公开的一个或多个实施例,示例7提供了一种页面文件生成装置,包括:
[0173]
页面描述模块,用于获取页面描述文件,所述页面描述文件用于描述组成目标页面所需的多个组件的类型和属性值;
[0174]
页面解析模块,用于解析所述页面描述文件,得到页面组件树,所述页面组件树包括所述多个组件间的层级关系以及每个组件的类型和属性值;
[0175]
入口生成模块,用于根据所述页面组件树中的层级关系以及每个组件的类型和属性值,基于目标平台语言规则生成相应的入口文件;
[0176]
组件拷贝模块,用于根据所述页面组件树中每个组件的类型,从组件库中选择对应所述类型且采用目标平台语言实现的每个目标组件,将每个目标组件拷贝到所述入口文件所在目录,得到目标页面项目;
[0177]
项目编译模块,用于对所述目标页面项目进行编译,得到采用目标平台语言实现的页面文件。
[0178]
根据本公开的一个或多个实施例,示例8提供了示例7的装置,在所述页面描述文件中,组件通过父子属性引用其他组件,所述页面解析模块用于:
[0179]
解析所述页面描述文件中组件的父子属性,得到组件间的层级关系;
[0180]
根据组件间的层级关系以及每个组件的类型和属性值,生成页面组件树。
[0181]
根据本公开的一个或多个实施例,示例9提供了示例7的装置,还包括组件注册模块,用于:
[0182]
在获取页面描述文件之前,获取每个类型对应的采用不同平台语言实现的多个组件,将每个类型对应的多个组件存储到组件库中,并记录每个组件所对应的类型和平台语言实现。
[0183]
根据本公开的一个或多个实施例,示例10提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理装置执行时实现示例1-6中任一示例所述的方法。
[0184]
根据本公开的一个或多个实施例,示例11提供了一种电子设备,包括:
[0185]
存储装置,其上存储有计算机程序;
[0186]
处理装置,用于执行所述存储装置中的所述计算机程序,以实现示例1-6中任一示例所述的方法。
[0187]
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
[0188]
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
[0189]
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。