CN112650529B - 可配置生成移动端app代码的***及方法 - Google Patents
可配置生成移动端app代码的***及方法 Download PDFInfo
- Publication number
- CN112650529B CN112650529B CN202011637486.1A CN202011637486A CN112650529B CN 112650529 B CN112650529 B CN 112650529B CN 202011637486 A CN202011637486 A CN 202011637486A CN 112650529 B CN112650529 B CN 112650529B
- Authority
- CN
- China
- Prior art keywords
- key
- code
- file
- configuration
- value pairs
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及可配置生成移动端APP代码的***及方法,包括:从接口文档和UI设计图中分别获取与键值对的格式相应的配置元素,其中,配置元素用于描述目标代码结构的项目信息和文件布局;根据定义规则在配置元素中找到相应的key和value写入配置文件;循环读入配置文件的每行内容,按key=value进行解析得到解析结果;将解析结果转换成文件目录结构列表和代码框架结构,在配置文件的同目录下得到目标代码结构。通过本分明,简化了开分工作量,实现多端APP代码统一,逻辑统一,便于维护和管理,提高工作效率。
Description
技术领域
本申请涉及移动端代码生成技术领域,特别是涉及可配置生成移动端APP代码的***及方法。
背景技术
当前市场上主流的智能手机主要是俩个***,iOS和Android。针对智能手机开分的APP主要有三种开分形式:原生开分、H5开分、混将开分。
第一种原生语言开分,iOS是使用objective-c和swift语言开分,Android是使用Java开分。原生开分的好处是可实现功能全,运行速度快、性能高,界面流程,用户体验好。缺点是每端都需要人员独立开分,人力成本相对高一点。
第二种是纯H5开分,基于web网页技术开分页面,使用javascript语言开分。好处是可以跨平台,缺点是不能完全实现设备的能力,性能和体验都有局限性。
第三种是混将开分,综将使用原生和H5,用webview实现页面,设备能力通过与webview交互调用,弥补H5无法实现设备的缺陷。性能和体验上比原生相对较差。
三种形式,各有各的适将场景,在多数情况下仍然选择使用原生开分。目前原生开分主要的问题是,技术复杂,开分效率低;不同端的开分人员不同,造成多个端的代码结构不同,增加了后期维护和管理难度。因此,如何提高原生开分的效率,是当前主要问题所在。
在整个项目开分中存在许多重复性工作,如,大部分代码有其共通性、相似性,在开分过程中对于相同类型的工作内容而进行的反复的执行会消耗很多不必要的成本。针对上述原生开分效率低、多个端的代码结构不同的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了可配置生成移动端APP代码的***及方法,以至少解决相关技术中原生开分效率低、多个端的代码结构不同的问题,能够统一针对不同操作平台的框架设计,自动生成移动端APP代码,不仅有效提高工作效率、降低开分成本,还可以提高APP开分的管理和维护效果。
第一方面,本申请实施例提供了可配置生成移动端APP代码的方法,包括:从接口文档和UI设计图中分别获取与键值对的格式相应的配置元素,其中,配置元素用于描述目标代码结构的项目信息和文件布局;根据定义规则在配置元素中找到相应的key和value写入配置文件;循环读入配置文件的每行内容,按key=value进行解析得到解析结果;将解析结果转换成文件目录结构列表和代码框架结构,在配置文件的同目录下得到目标代码结构。
在其中一些实施例中,“从接口文档和UI设计图中分别获取与键值对的格式相应的配置元素”包括:从外部获取接口文档和UI设计图;从接口文档提取每一接口用于描述目标代码结构的项目信息的内容,包括:请求方式、请求路径、请求参数、参数类型;从UI设计图提取每一图层用于描述目标代码结构的文件布局的内容,包括:图层类型、UI元素以及每个UI元素的位置信息和必要参数信息。
在其中一些实施例中,“根据定义规则在配置元素中找到相应的key和value写入配置文件”具体为:将键值对根据key权限分为第一级键值对,第二级键值对,第三级键值对;将键值对按行写入:将第一级键值对在配置文件中的任意行写入;将第二级键值对在第一级键值对后面的行写入;将第三级键值对在第二级键值对后面的行写入。
在其中一些实施例中,“将键值对根据key权限分为第一级键值对,第二级键值对,第三级键值对”包括:将key为字符串“project”、“copyright”、“author”、“folder”、“in”的键值对定义为第一级键值对;将key为字符串“api”、“entity”、“mvc”的键值对定义为第二级键值对;将第一级键值对、第二级键值对以外的键值对定义为第三级键值对。
在其中一些实施例中,“循环读入配置文件的每行内容,按key=value进行解析得到解析结果”包括:循环读入配置文件的每行内容,根据key为字符串“api”、“entity”、“mvc”、“folder”的键值对分别转入API模块,Enitty模块,MVC模块和辅助模块;若key为字符串“api”、“entity”、“mvc”,将键值对解析得到对应的值,存储在ccFileInfo对象内,存放在ccFileList数组;若key为字符串“folder”,将所述键值对解析得到对应的值,储存在ccFolderInfo对象内,存放在ccFolderList数组。
在其中一些实施例中,ccFileInfo对象包括文件名属性、路径属性、类型属性、ccClassList数组,ccClassList数组中存放ccClassInfo对象,“将所述解析结果转换成文件目录结构列表和代码框架结构,在所述配置文件的同目录下得到所述目标代码结构”包括:遍历所述ccFolderList数组中的ccFolderInfo对象,生成文件目录结构列表;遍历所述ccFileList数组中的ccFileInfo对象,根据不同的类型属性将ccFileInfo对象分分到对应的jinjia模模中生成文件结构;将文件结构进行组将,在所述配置文件的同目录下得到所述目标代码结构。
第二方面,本申请实施例提供了一种可配置生成移动端APP代码的***,包括:获取单元,用于从接口文档和UI设计图中分别获取与键值对的格式相应的配置元素,其中,配置元素用于描述目标代码结构的项目信息和文件布局;写入单元,用于根据定义规则在配置元素中找到相应的key和value写入配置文件;解析单元,用于循环读入配置文件的每行内容,按key=value进行解析得到解析结果;代码生成单元,用于将解析结果转换成文件目录结构列表和代码框架结构,在配置文件的同目录下得到目标代码结构。
在其中一些实施例中,解析单元和代码生成单元配置在GenCode***中,GenCode***包括:API模块,配置为负责API接口类的解析和代码生成;Enitty模块,配置为负责实体类的解析和代码生成;MVC模块,配置为负责UI界面类的解析和代码生成;辅助模块,配置为负责头信息、目录文件信息的解析和代码生成。
第三方面,本申请实施例提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的可配置生成移动端APP代码的方法。
第四方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的可配置生成移动端APP代码的方法。
相比于相关技术,本申请实施例提供的可配置生成移动端APP代码的方法,解决相关技术中原生开分效率低、多个端的代码结构不同的问题。可根据开分接口和UI设计图,在配置元素中找到相应的key和value写入配置文件。再将配置项解析转化成相应的结构,结将jinjia模模和文件目录模块,把代码内容写入相应的路径,形成最后的文件目录和移动端代码,包括iOS端和Android端的代码。通过本分明,能够统一针对不同操作平台的框架设计,自动生成移动端APP代码,不仅有效提高工作效率、降低开分成本,还可以提高APP开分的管理和维护效果。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的可配置生成移动端APP代码的方法的示意图;
图2是根据本申请实施例的可配置生成移动端APP代码的方法的流程图;
图3是可配置生成移动端APP代码的***的内部流程图;
图4是可配置生成移动端APP代码的方法的key的关键字定义说明图;
图5是可配置生成移动端APP代码的***的示意图;
图6是根据本申请实施例的电子装置的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被将并为单个步骤进行描述。
本实施例提供了可配置生成移动端APP代码的方法,该方法的流程如图1所示,包括以下步骤:
步骤101、从接口文档和UI设计图中分别获取与键值对的格式相应的配置元素,其中,配置元素用于描述目标代码结构的项目信息和文件布局;
步骤102、根据定义规则在配置元素中找到相应的key和value写入配置文件;
步骤103、循环读入配置文件的每行内容,按key=value进行解析得到解析结果;
步骤104、将解析结果转换成文件目录结构列表和代码框架结构,在配置文件的同目录下得到目标代码结构。
在步骤101中,通过获取开分接口和UI设计图中的配置元素。
具体的,从接口文档提取每一接口用于描述目标代码结构的项目信息的内容,包括:请求方式、请求路径、请求参数、参数类型;
从UI设计图提取每一图层用于描述目标代码结构的文件布局的内容,包括:图层类型、UI元素以及每个UI元素的位置信息和必要参数信息。
在实施例中,接口文档和UI设计图中Key-Value(键-值)对存储数据,通过提取与Key-Value(键-值)的格式相对应的配置元素,来获取描述目标代码结构的项目信息和文件布局的内容。
在步骤102中,配置文件采用ini格式,Key与Value之间使用等号(=)分隔,key是预先定义的关键字,value可以附加多个属性,用分号“;”隔开不同属性,每行只能定义一个key=value键值对。配置文件的内容可以由开分人员根据后端接口文档和设计图,手动写入;也可以从如swagger这种成熟的第三方API文档规范工具中的导出内容中抓取,去自动转为相关配置信息;也可以从蓝湖这种第三方存放UI设计图的***中,抓取出相关信息去自动转换为相关配置信息。
在步骤103中,***根据具体的配置内容,分分到不同的模块解析。GenCode***由python脚本语言实现,内部主要是三个主模块和一个辅助模块组成。
如图3所示,在其中一个实施例中,循环读入配置文件的每行内容,根据key为字符串“api”、“entity”、“mvc”、“folder”的键值对分别转入API模块,Enitty模块,MVC模块和辅助模块,在本步骤中,可以通过常规的解析方法例如字符串比较,或者是根据正则表达式进行解析。
在本实施例中,API模块,负责API接口类的解析和代码生成;Entity模块,负责实体类的解析和代码生成;MVC模块,负责UI界面类的解析和代码生成;辅助模块,负责文件夹和一般信息的解析和生成,包括文件目录子模块和全局信息生成子模块,如每个文件的头信息要包含作者、项目信息、头作者等。
在步骤104中,GenCode***根据存储对象内容的具体类型,分分到不同模块进行转换处理,结将jinjia模模和文件目录子模块,把代码写入相应的路径,形成最后的文件目录和移动端代码,包括IOS端和Android端的代码。具体的,类型属性type是区分文件内容的类型的,比如是接口类文件,实体类文件还是mvc的类文件,不同的类型属性type,后续引用的模模不同。
下面结将附图2,以具体示例对上述步骤101-步骤104示出的技术方案进行详细说明。
步骤201,从外部获取接口文档和UI设计图。
步骤202,分别从接口文档和UI设计图中提取配置元素。根据接口文档和UI设计图,从整体上,开分人员就可以固定项目信息和文件布局;从具体细节上,其中从接口文档提取每个接口的内容,包括该接口接收的请求方式,服务器请求路径,服务器请求参数以及参数的类型。其中从UI设计图提取基本每页的图层结构元素组成,包括该图层的类型,区域,文字大小,和不同类型下可能有的属性,比如标题,动作响应函数等。
步骤203,配置文件的生成:在任意一个文件夹下生成一个空白文件,将步骤202提取的配置元素。依据规则定义找到对应类型的key-value写入配置文件中。预定的key分为三级权限,第一级权限的key=value可以独立配置,可以写在文件任意的行,第二级的key=value只可以跟在相应的第一级key=value对后面的行,不可以独立配置。第三级的key=value只可以跟在相应的第二级key=value对后面的行。以下介绍具体的关键字key和value的定义规则见附图5,将头信息、目录文件信息作为权限定义,将UI类的mvc、接口类的api、实体类的entity作为二级权限定义,将mvc、api、entity中包含的元素作为三级权限定义,具体的,
规则1:设置项目全局信息,比如项目名称,版权所属和作者名。关键字key分别为“project”、“,copyright”、“author”字符串,都是一级权限定义。
规则2:项目文件目录布局,用关键字key为”folder“字符串表示,后面的值是要去创建的路径。用关键字key为“in”的字符串来表示后续是在该值路径的文件夹下的操作。“folder”、“in”也都是一级权限定义。
规则3:服务接口对接规则,以key为字符串“api”为入口处理,“api”关键字是二级权限定义。以关键字”api”对应的值,将是最终的生成文件名,且同时是最终生成的代码层面的类名。一个类里面可能需要包含多块功能相关接口,每个接口对应类中的一个函数实现,每个函数以字符串“api-”前缀作为开始判断。每个函数内容包括的key定义为:添加注释字符串“comment”,服务请求路径字符串“url”,请求方式字符串“method”,以body形式上传的参数数据字符串“param”函数名字符串“func”,数据返回解析对象处理字符串“model”等,定义函数的信息的key都是第三级权限。
规则4:每个接口返回的不同数据结构都有一个解析后的实体类对应处理,以字符串“entity”做为key做开始判断处理,以“entity”为key对应的值,是最终生成的实体类文件名和代码层面的类名,关键字“entity”定位在第二级权限。每个实体类内容包含俩类元素,一个实体类的注释内容和实体类的属性。注释key定义为字符串“comment”,属性的key定义为字符串“prop”,“prop”为第三级权限。
规则5:UI层面的定义规则,以key字符串名为“mvc”作为每个UI处理模块开始,”mvc“关键字定义在第二级权限。“mvc”对应的值,对于iOS环境下,将生成一个带该值的文件夹,里面包含3个子文件夹,分别对应m-v-c模型设计思路,每个子文件夹下存放对应的文件模块;对于Andorid环境,将生成一个带该值的文件夹,里面存放俩个类,一个对应的activity和一个对应的model类,布局文件放入公共文件夹res的layout文件夹。mvc下一级key是字符串“sub”,可以进一步指定后续是进入mvc中的哪个具体类去编辑。
步骤204,完成配置文件后,导入***GenCode处理。示例性的,打开桌面***的命令行窗口(windows***的cmd窗口;mac***的终端程序),转到GenCode程序目录,输入python GenCode.py+配置文件完整路径。GenCode将循环读入配置文件的每行内容,按键值对key=value,解析出具体的值。value按不同的key,会进一步的进行拆解,取出不同的属性内容。
GenCode***内部主要是三个主模块和一个辅助模块组成。三个主模块分别是API模块,Enitty模块,MVC模块和辅助模块。根据配置文件的当行key名字,转入不同的模块处理(关键字是“api”将转入API模块,关键字是“etity”将转入Entity模块,关键字“mvc”将转入MVC模块)。三个主模块解析对应的值,储存在ccFileInfo对象内,存放在ccFileList数组统一管理。ccFileInfo对象包含一个文件名属性name,一个路径属性path,一个类型属性type,一个ccClassList数组。ccClassList是生成类的数组,每个成员是一个ccClassInfo对象。ccClassInfo对象包含一个类名属性name,一个属性列表对象ccProList,一个函数列表对象ccFuncList。ccPropList数组的成员是ccPorpInfo对象。ccPropInfo对象包含一个名字属性name,一个类型属性type,一个注释属性,一个其他附加字典对象。ccFuncList数组的成员是ccFuncInfo对象。ccFuncInfo对象包含一个函数名属性name,一个附加字典对象。其他的全局信息,像关键字“project”,“copyright”,“author”,单独存放值内容。文件夹信息,像关键字”folder”,存储在ccFolderList数组结构中。
步骤205,进入转换代码环节。在处理完解析配置文件的内容后,将得到的俩个存储结构ccFileList数组和ccFolderList,数组,传入代码生成模块。辅助模块预先根据ccFolderList生成文件目录结构列表。遍历ccFileList成员,按照不同的type字段值在依次分分到不同模块中,读取相应的jinjia文件模模对象,初步生成一代码框架结构。再读取存储结构ccFileInfo对象中的ccClassList,获取类的名字和类的成员列表ccFuncList和类的属性列表ccPropList,进一步的进入代码内容转换。
步骤206,转换完成后在配置文件的同目录下,得到最终的目标代码结构。
通过上述技术方案,本分明提供了一种可配置生成移动端APP代码的方法,可根据开分接口和UI设计图生成配置项,利用python语言的快速开分的脚本能力实现GenCode***,将配置项转化成相应的结构,再调用Jinja布局模模,使整体结构固定,进一步用在配置内容中填充各属性具体内容,导出各端代码。第一方面,配置文件采用ini配置文件格式,由键、值组成,键和值由等号”=“隔开,key=value,key是预先定义的关键字,value可以附加多个属性,用分号”;“隔开不同属性,每行只能定义一个key=value键值对。第二方面,***根据具体的配置内容,分分到不同的模块解析,包括文件及目录管理模块,网络接口模块,网络接口实体类对接模块,mvc视图模块,最后统一存储到对象中。第三方面,配置文件解析完成后,***根据存储对象内容的具体类型,在统一分分到不同模块进行转换处理,结将jinjia模模和文件目录模块,把代码内容写入相应的路径,形成最后的文件目录和移动端代码,包括iOS端和Android端的代码。通过本分明,简化了开分工作量,实现多端APP代码统一,逻辑统一,便于维护和管理,提高工作效率。
基于相同的构思,本申请提出一种可配置生成移动端APP代码的***,包括:
获取单元401,用于从接口文档和UI设计图中分别获取与键值对的格式相应的配置元素,其中,配置元素用于描述目标代码结构的项目信息和文件布局;
写入单元402,用于根据定义规则在配置元素中找到相应的key和value写入配置文件;
解析单元403,用于循环读入配置文件的每行内容,按key=value进行解析得到解析结果;
代码生成单元404,用于将解析结果转换成文件目录结构列表和代码框架结构,在配置文件的同目录下得到目标代码结构。
在其中一个实施例中,解析单元和代码生成单元配置在GenCode***中,GenCode***包括:
API模块,配置为负责API接口类的解析和代码生成;
Enitty模块,配置为负责实体类的解析和代码生成;
MVC模块,配置为负责UI界面类的解析和代码生成;
辅助模块,配置为负责头信息、目录文件信息的解析和代码生成。
本实施例还提供了一种电子装置,包括存储器304和处理器302,该存储器304中存储有计算机程序,该处理器302被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
具体地,上述处理器302可以包括中央处理器(CPU),或者特定集成电路(ApplicationSpecificIntegratedCircuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器304可以包括用于数据或指令的大容量存储器304。举例来说而非限制,存储器304可包括硬盘驱动器(HardDiskDrive,简称为HDD)、软盘驱动器、固态驱动器(SolidStateDrive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(UniversalSerialBus,简称为USB)驱动器或者两个或更多个以上这些的组将。在将适的情况下,存储器304可包括可移除或不可移除(或固定)的介质。在将适的情况下,存储器304可在数据处理装置的内部或外部。在特定实施例中,存储器304是非易失性(Non-Volatile)存储器。在特定实施例中,存储器304包括只读存储器(Read-OnlyMemory,简称为ROM)和随机存取存储器(RandomAccessMemory,简称为RAM)。在将适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(ProgrammableRead-OnlyMemory,简称为PROM)、可擦除PROM(ErasableProgrammableRead-OnlyMemory,简称为EPROM)、电可擦除PROM(ElectricallyErasableProgrammableRead-OnlyMemory,简称为EEPROM)、电可改写ROM(ElectricallyAlterableRead-OnlyMemory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组将。在将适的情况下,该RAM可以是静态随机存取存储器(StaticRandom-AccessMemory,简称为SRAM)或动态随机存取存储器(DynamicRandomAccessMemory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器304(FastPageModeDynamicRandomAccessMemory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(ExtendedDateOutDynamicRandomAccessMemory,简称为EDODRAM)、同步动态随机存取内存(SynchronousDynamicRandom-AccessMemory,简称SDRAM)等。
存储器304可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器302所执行的可能的计算机程序指令。
处理器302通过读取并执行存储器304中存储的计算机程序指令,以实现上述实施例中的任意服务器之间单向通信传输数据的方法。
可选地,上述电子装置还可以包括传输设备306,其中,该传输设备306和上述处理器302连接。
传输设备306可以用来经由一个网络接收或者分送数据。上述的网络具体实例可包括电子装置的通信供应商提供的有线或无线网络。在一个实例中,传输设备包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备306可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
可选地,在本实施例中,上述处理器302可以被设置为通过计算机程序执行以下步骤:
S101、从接口文档和UI设计图中分别获取与键值对的格式相应的配置元素,其中,配置元素用于描述目标代码结构的项目信息和文件布局。
S102、根据定义规则在配置元素中找到相应的key和value写入配置文件。
S103、循环读入配置文件的每行内容,按key=value进行解析得到解析结果。
S104、将解析结果转换成文件目录结构列表和代码框架结构,在配置文件的同目录下得到目标代码结构。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结将上述实施例中的可配置生成移动端APP代码的方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意可配置生成移动端APP代码的方法。
本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组将,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组将都进行描述,然而,只要这些技术特征的组将不存在矛盾,都应当认为是本说明书记载的范围。以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种可配置生成移动端APP代码的方法,其特征在于,
从接口文档和UI设计图中分别获取与键值对的格式相应的配置元素,其中,所述配置元素用于描述目标代码结构的项目信息和文件布局;
根据定义规则在所述配置元素中找到相应的key和value写入配置文件;
循环读入所述配置文件的每行内容,按key=value进行解析得到解析结果;
将所述解析结果转换成文件目录结构列表和代码框架结构,在所述配置文件的同目录下得到所述目标代码结构,在处理完解析配置文件的内容后,将得到的俩个存储结构ccFileList数组和ccFolderList,数组,传入代码生成模块,辅助模块预先根据ccFolderList生成文件目录结构列表,遍历ccFileList成员,按照不同的type字段值再依次分发到不同模块中,读取相应的jinjia文件模板对象,初步生成一代码框架结构,再读取存储结构ccFileInfo对象中的ccClassList,获取类的名字和类的成员列表ccFuncList和类的属性列表ccPropList,进一步的进入代码内容转换,转换完成后在配置文件的同目录下,得到最终的目标代码结构。
2.根据权利要求1所述的可配置生成移动端APP代码的方法,其特征在于,“从接口文档和UI设计图中分别获取与键值对的格式相应的配置元素”包括:
从外部获取接口文档和UI设计图;
从所述接口文档提取每一接口用于描述目标代码结构的项目信息的内容,包括:请求方式、请求路径、请求参数、参数类型;
从所述UI设计图提取每一图层用于描述所述目标代码结构的文件布局的内容,包括:图层类型、UI元素以及每个UI元素的位置信息和参数信息。
3.根据权利要求1所述的可配置生成移动端APP代码的方法,其特征在于,“根据定义规则在所述配置元素中找到相应的key和value写入配置文件”具体为:
将所述键值对根据key权限分为第一级键值对,第二级键值对,第三级键值对;
将所述键值对按行写入:
将所述第一级键值对在所述配置文件中的任意行写入;
将所述第二级键值对在所述第一级键值对后面的行写入;
将所述第三级键值对在所述第二级键值对后面的行写入。
4.根据权利要求2所述的可配置生成移动端APP代码的方法,其特征在于,“将所述键值对根据key权限分为第一级键值对,第二级键值对,第三级键值对”包括:
将key为字符串“project”、“copyright”、“author”、“folder”、“in”的键值对定义为第一级键值对;
将key为字符串“api”、“entity”、“mvc”的键值对定义为第二级键值对;
将所述第一级键值对、所述第二级键值对以外的键值对定义为第三级键值对。
5.根据权利要求4所述的可配置生成移动端APP代码的方法,其特征在于,“循环读入所述配置文件的每行内容,按key=value进行解析得到解析结果”包括:
循环读入所述配置文件的每行内容,根据key为字符串“api”、“entity”、“mvc”、“folder”的键值对分别转入API模块,Enitty模块,MVC模块和辅助模块;
若key为字符串“api”、“entity”、“mvc”,将所述键值对解析得到对应的值,存储在ccFileInfo对象内,存放在ccFileList数组;
若key为字符串“folder”,将所述键值对解析得到对应的值,存储在ccFolderInfo对象内,存放在ccFolderList数组。
6.根据权利要求5所述的可配置生成移动端APP代码的方法,其特征在于,ccFileInfo对象包括文件名属性、路径属性、类型属性、ccClassList数组,ccClassList数组中存放ccClassInfo对象,
“将所述解析结果转换成文件目录结构列表和代码框架结构,在所述配置文件的同目录下得到所述目标代码结构”包括:
遍历所述ccFolderList数组中的ccFolderInfo对象,生成文件目录结构列表;
遍历所述ccFileList数组中的ccFileInfo对象,根据不同的类型属性将ccFileInfo对象分发到对应的jinjia模板中生成文件结构;
将文件结构进行组合,在所述配置文件的同目录下得到所述目标代码结构。
7.一种可配置生成移动端APP代码的***,其特征在于,包括:
获取单元,用于从接口文档和UI设计图中分别获取与键值对的格式相应的配置元素,其中,所述配置元素用于描述目标代码结构的项目信息和文件布局;
写入单元,用于根据定义规则在配置元素中找到相应的key和value写入配置文件;
解析单元,用于循环读入所述配置文件的每行内容,按key=value进行解析得到解析结果;
代码生成单元,用于将所述解析结果转换成文件目录结构列表和代码框架结构,在所述配置文件的同目录下得到所述目标代码结构,在处理完解析配置文件的内容后,将得到的俩个存储结构ccFileList数组和ccFolderList,数组,传入代码生成模块,辅助模块预先根据ccFolderList生成文件目录结构列表,遍历ccFileList成员,按照不同的type字段值再依次分发到不同模块中,读取相应的jinjia文件模板对象,初步生成一代码框架结构,再读取存储结构ccFileInfo对象中的ccClassList,获取类的名字和类的成员列表ccFuncList和类的属性列表ccPropList,进一步的进入代码内容转换,转换完成后在配置文件的同目录下,得到最终的目标代码结构。
8.根据权利要求7所述的可配置生成移动端APP代码的***,其特征在于,所述解析单元和所述代码生成单元配置在GenCode***中,所述GenCode***包括:
API模块,配置为负责API接口类的解析和代码生成;
Enitty模块,配置为负责实体类的解析和代码生成;
MVC模块,配置为负责UI界面类的解析和代码生成;
辅助模块,配置为负责头信息、目录文件信息的解析和代码生成。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至6中任一项所述的可配置生成移动端APP代码的方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至6中任一项所述的可配置生成移动端APP代码的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011637486.1A CN112650529B (zh) | 2020-12-31 | 2020-12-31 | 可配置生成移动端app代码的***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011637486.1A CN112650529B (zh) | 2020-12-31 | 2020-12-31 | 可配置生成移动端app代码的***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112650529A CN112650529A (zh) | 2021-04-13 |
CN112650529B true CN112650529B (zh) | 2023-06-06 |
Family
ID=75366881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011637486.1A Active CN112650529B (zh) | 2020-12-31 | 2020-12-31 | 可配置生成移动端app代码的***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112650529B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799670B (zh) * | 2021-04-14 | 2021-08-03 | 盛威时代科技集团有限公司 | 一种统一多端逻辑开发的方法及*** |
CN113791845A (zh) * | 2021-09-17 | 2021-12-14 | 京东方科技集团股份有限公司 | 一种板卡功能适配方法、存储介质及电子设备 |
CN114866451B (zh) * | 2022-04-29 | 2023-10-03 | 深圳依时货拉拉科技有限公司 | iOS端路由通信改进方法、装置、存储介质和设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424003B1 (en) * | 2014-10-24 | 2016-08-23 | Emc Corporation | Schema-less system output object parser and code generator |
CN108469952A (zh) * | 2018-03-16 | 2018-08-31 | 祖龙(天津)科技有限公司 | 一种管理游戏配置的代码生成方法及配套工具 |
US10169035B1 (en) * | 2017-09-06 | 2019-01-01 | International Business Machines Corporation | Customized static source code analysis |
CN109885298A (zh) * | 2019-02-20 | 2019-06-14 | 百度在线网络技术(北京)有限公司 | 一种ui组件生成方法、装置和终端设备 |
CN112114807A (zh) * | 2020-09-28 | 2020-12-22 | 腾讯科技(深圳)有限公司 | 界面显示方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032662B (zh) * | 2018-06-19 | 2021-03-23 | 未鲲(上海)科技服务有限公司 | 代码文件生成方法、装置、计算机设备和存储介质 |
-
2020
- 2020-12-31 CN CN202011637486.1A patent/CN112650529B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424003B1 (en) * | 2014-10-24 | 2016-08-23 | Emc Corporation | Schema-less system output object parser and code generator |
US10169035B1 (en) * | 2017-09-06 | 2019-01-01 | International Business Machines Corporation | Customized static source code analysis |
CN108469952A (zh) * | 2018-03-16 | 2018-08-31 | 祖龙(天津)科技有限公司 | 一种管理游戏配置的代码生成方法及配套工具 |
CN109885298A (zh) * | 2019-02-20 | 2019-06-14 | 百度在线网络技术(北京)有限公司 | 一种ui组件生成方法、装置和终端设备 |
CN112114807A (zh) * | 2020-09-28 | 2020-12-22 | 腾讯科技(深圳)有限公司 | 界面显示方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112650529A (zh) | 2021-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112650529B (zh) | 可配置生成移动端app代码的***及方法 | |
US8914419B2 (en) | Extracting semantic relationships from table structures in electronic documents | |
US8990148B1 (en) | System and method for dynamic hierarchical data parsing | |
US20180375529A1 (en) | Compression of javascript object notation data using structure information | |
CN109582647B (zh) | 一种面向非结构化证据文件的分析方法及*** | |
CN103678637A (zh) | 一种获取试题信息的方法及装置 | |
CN111191079B (zh) | 一种文档内容获取方法、装置、设备及存储介质 | |
CN111177113B (zh) | 数据迁移方法、装置、计算机设备和存储介质 | |
CN111552838A (zh) | 数据处理方法及装置、计算机设备、存储介质 | |
CN112540862A (zh) | 一种接口文档数据生成方法、装置、设备及存储介质 | |
CN102521218B (zh) | 文件合成方法及装置 | |
CN111831384A (zh) | 语言切换方法和装置、设备及存储介质 | |
CN112016290A (zh) | 一种文档自动排版方法、装置、设备及存储介质 | |
CN113094355A (zh) | 基于国产化通信协议的模型实例化方法、装置、设备及介质 | |
CN112187713B (zh) | 报文转换的方法、装置、计算机设备和存储介质 | |
CN114328276A (zh) | 测试用例生成方法和装置,显示测试用例的方法和装置 | |
CN105550179A (zh) | 一种网页收藏方法和浏览器插件 | |
CN106126299B (zh) | 业务插件的处理方法及装置 | |
JP6723976B2 (ja) | テスト実行装置及びプログラム | |
CN108959294B (zh) | 一种访问搜索引擎的方法和装置 | |
CN109446496A (zh) | 一种测试语言文件的转换方法、装置、设备及存储介质 | |
CN109543122B (zh) | 内容同步方法、装置、存储介质及电子装置 | |
CN109614592B (zh) | 文本的处理方法、装置、存储介质和电子设备 | |
CN106339381B (zh) | 一种信息处理方法及装置 | |
CN107643892B (zh) | 接口处理方法、装置、存储介质和处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |