一种组件发布方法及装置与流程

文档序号:27310657发布日期:2021-11-09 22:16阅读:63来源:国知局
一种组件发布方法及装置与流程

1.本技术涉及计算机技术领域,具体涉及一种组件发布方法及装置。


背景技术:

2.随着计算机技术的发展,软件程序的开发模式也在不断进行改善,比如,基于前端组件化的思想进行前端开发,可以提高组件的复用性和灵活性,从而大大提升了前端开发的效率。
3.在对相关技术的研究和实践过程中,本技术的发明人发现,从开发组件到发布到组件平台的过程中,在组件的构建、发布等阶段需要进行大量的繁琐操作来保证组件的顺利发布,使得组件的发布效率低下;此外,对于构建完成后的待发布组件,待发布组件的文件结构所具有的多样性,使得在组件发布时组件管理的混乱度增加,进而加剧了组件发布效率的低下;另外,在组件发布时虽有提供组件截图,但对于用户界面层面相似度较高的组件不易进行甄别与筛选,也因而降低了组件的发布效率。


技术实现要素:

4.本技术实施例提供一种组件发布方法及装置,可以在组件发布中实行高程度的自动化,提高了组件的发布效率。
5.本技术实施例提供一种组件发布方法,包括:
6.获取需要创建的组件的属性信息,其中,所述属性信息包括组件所属的项目类型和组件类型;
7.基于所述项目类型和组件类型,确定所述组件的创建模板;
8.向所述组件的创建模板中注入组件代码,以创建所述组件;
9.基于所述组件的测试用例对创建的组件进行测试;
10.当所述组件的测试通过时,对所述组件进行编译处理,得到所述组件的组件数据包;
11.基于所述组件的演示原型,对所述组件的数据包进行发布。
12.相应的,本技术实施例还提供一种组件发布装置,包括:
13.获取单元,用于获取需要创建的组件的属性信息,其中,所述属性信息包括组件所属的项目类型和组件类型;
14.确定单元,用于基于所述项目类型和组件类型,确定所述组件的创建模板;
15.注入单元,用于向所述组件的创建模板中注入组件代码,以创建所述组件;
16.测试单元,用于基于所述组件的测试用例对创建的组件进行测试;
17.编译单元,用于当所述组件的测试通过时,对所述组件进行编译处理,得到所述组件的组件数据包;
18.发布单元,用于基于所述组件的演示原型,对所述组件的数据包进行发布。
19.在一实施例中,所述注入单元,包括:
20.显示子单元,用于当检测到命令行工具的代码调试的指令时,显示组件的代码调试界面;
21.代码确定子单元,用于根据用户在所述代码调试界面的代码调试结果,确定所述组件的组件代码;
22.代码注入子单元,用于向所述组件的创建模板中注入所述确定的组件代码;
23.模板触发子单元,用于触发所述组件的创建模板根据所述确定的组件代码创建组件。
24.在一实施例中,所述测试单元,包括:
25.测试获取子单元,用于获取所述组件的组件测试用例;
26.测试确定子单元,用于基于所述组件测试用例,确定所述组件的测试数据;
27.组件测试子单元,用于根据所述测试数据对所述组件进行测试。
28.在一实施例中,所述测试获取子单元,用于:
29.触发钩子函数通过增量信息解析,得到所述组件的组件模块信息;从所述组件模块信息中提取所述组件的组件测试用例。
30.在一实施例中,所述编译单元,包括:
31.代码编译子单元,用于对所述通过测试的组件进行代码编译,得到所述组件的代码数据;
32.原型编译子单元,用于对所述通过测试的组件进行原型编译,得到所述组件的原型数据;
33.数据生成子单元,用于利用所述代码数据和所述原型数据生成所述组件的组件数据包。
34.在一实施例中,所述代码编译子单元,用于:
35.对所述组件进行语义解析,得到所述组件的抽象语法树;对所述抽象语法树进行结构转换,得到转换后的抽象语法树;通过遍历所述转换后的抽象语法树生成所述组件的代码数据。
36.在一实施例中,所述发布单元,包括:
37.发布验证子单元,用于对所述组件数据包进行发布验证;
38.原型确定子单元,用于当所述发布验证通过时,确定所述组件的演示原型;
39.发布执行子单元,用于基于所述组件的演示原型对组件数据包进行发布。
40.在一实施例中,所述发布验证子单元,用于:
41.对所述组件数据包进行版本解析,得到组件的版本信息;根据组件发布格式对所述组件的版本信息进行格式校验;当格式校验通过时,确定发布验证通过。
42.在一实施例中,所述获取单元,包括:
43.显示子单元,用于通过调用命令行工具显示命令行交互界面;
44.信息获取子单元,用于获取在所述命令行交互界面输入的属性信息。
45.本技术实施例可以获取需要创建的组件的属性信息,其中,所述属性信息包括组件所属的项目类型和组件类型;基于所述项目类型和组件类型,确定所述组件的创建模板;向所述组件的创建模板中注入组件代码,以创建所述组件;基于所述组件的测试用例对创建的组件进行测试;当所述组件的测试通过时,对所述组件进行编译处理,得到所述组件的
组件数据包;基于所述组件的演示原型,对所述组件的数据包进行发布。
46.该方案可以基于组件的属性信息确定用于创建组件的模板,使得组件的开发和调试更加便捷和高效,又能够通过模板来对组件的结构规范进行约束,从而使得不同的组件均遵循统一的规范、便于在组件提交和发布时对组件进行管理。并且,在提交了组件的代码后,对于后续的组件的测试、构建和发布等环节实现了高程度的自动化,从而极大地提高了组件的开发效率和发布效率。另外,在组件发布时,通过部署可交互的演示原型,有利于对组件进行更有效的甄别与筛选,从而提高了组件的发布效率与用户体验。而在组件的持续集成阶段,对于频繁提交代码的情况,由于这些提交在最终发布之前都通过了自动化的测试、编译和验证,使得潜在问题可以提前得到暴露,从而保障了持续集成的质量。此外,在组件的持续交付阶段,由于实现了自动化发布流,可以随时随地实现组件应用的发布和部署,从而既提升了持续交付的质量,又使得组件发布的效率也得到了提升。
附图说明
47.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
48.图1是本技术实施例提供的组件发布方法的场景示意图;
49.图2是本技术实施例提供的组件发布方法的流程图;
50.图3是本技术实施例提供的组件发布方法的组件化开发示意图;
51.图4是本技术实施例提供的组件发布方法的命令行交互界面示意图;
52.图5是本技术实施例提供的组件发布方法的命令行工具示意图;
53.图6是本技术实施例提供的组件发布方法的组件提交示意图;
54.图7是本技术实施例提供的组件发布方法的代码编译示意图;
55.图8是本技术实施例提供的组件发布方法的另一流程示意图;
56.图9是本技术实施例提供的组件发布方法的组件发布实例示意图;
57.图10是本技术实施例提供的组件发布方法的组件推送示意图;
58.图11是本技术实施例提供的组件发布装置的结构示意图;
59.图12是本技术实施例提供的组件发布装置的另一结构示意图;
60.图13是本技术实施例提供的组件发布装置的另一结构示意图;
61.图14是本技术实施例提供的组件发布装置的另一结构示意图;
62.图15是本技术实施例提供的组件发布装置的另一结构示意图;
63.图16是本技术实施例提供的组件发布装置的另一结构示意图;
64.图17是本技术实施例提供的计算机设备的结构示意图。
具体实施方式
65.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施
例,都属于本技术保护的范围。
66.本发明实施例提供一种组件发布方法及装置。具体地,本发明实施例提供适用于第一计算机设备的组件发布装置(为区分,可以称为第一组件发布装置),该第一计算机设备可以为终端等设备,该终端可以为手机、平板电脑以及笔记本电脑等设备。本发明实施例还提供适用于第二计算机设备的组件发布装置(为区分,可以称为第二组件发布装置),该第二计算机设备可以为服务器等网络侧设备,该服务器可以是单台服务器,也可以是由多个服务器组成的服务器集群,可以是实体的服务器,也可是虚拟服务器。
67.比如,第一组件发布装置可以集成在终端中,第二组件发布装置可以集成在服务器。
68.本发明实施例将以第一计算机设备为终端,第二计算机设备为服务器为例,来介绍组件发布方法。
69.参考图1,本发明实施例提供了组件发布系统包括终端10和服务器20等;终端10与服务器20之间通过网络连接,比如,通过有线或无线网络连接等,其中,第一组件发布装置集成在终端中,比如,以客户端的形式集成在终端中。
70.其中,终端10,可以用于获取需要创建的组件的属性信息,其中,所述属性信息包括组件所属的项目类型和组件类型;基于所述项目类型和组件类型,确定所述组件的创建模板;向所述组件的创建模板中注入组件代码,以创建所述组件;基于所述组件的测试用例对创建的组件进行测试;当所述组件的测试通过时,对所述组件进行编译处理,得到所述组件的组件数据包;基于所述组件的演示原型,对所述组件的数据包进行发布。
71.其中,组件的发布可以由终端10进行,也可以由服务器20基于获得的组件数据包进行,比如,终端10可以将组件的组件数据包推送到服务器20,触发服务器20进行组件的发布;服务器20可以具体用于:对所述组件数据包进行发布验证;当所述发布验证通过时,确定所述组件的演示原型;基于所述组件的演示原型对组件数据包进行发布。
72.在一实施例中,在完成了组件的发布之后,终端10可以通过命令行工具下载、安装该已发布的组件,从而在实际的项目中使用该组件;进一步地,可以通过命令行工具上报组件的使用情况和项目信息,也可以获取该组件的可复用需求,等等。
73.以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
74.本技术实施例提供的一种组件发布方法,该方法可以由终端或服务器执行,也可以由终端和服务器共同执行;本技术实施例以组件发布方法由终端执行为例来进行说明,具体的,由集成在终端中的组件发布装置来执行,如图2所述,该组件发布方法的具体流程可以如下:
75.101、获取需要创建的组件的属性信息,其中,该属性信息包括组件所属的项目类型和组件类型。
76.其中,组件可以为用于完成特定功能并且向外提供若干个使用该功能接口的可重用软件单元。比如,在前端开发中,组件可以为前端页面中高度可复用的模块。譬如,在前端应用开发中,组件可以为可复用的提供业务服务的纯逻辑代码,也可以为可复用的用户界面(ui,userinterface)组件。
77.在一实施例中,参考图3,在前端页面的开发中,可以基于前端组件化的思想,选择
组件a、组件b、组件c、组件d和组件e这5个ui组件对页面1进行设计和开发;而在对页面2进行设计和开发的时候,可以通过复用组件a对页面2进行页面导航栏的设计、通过复用组件e对页面2进行页面尾部的设计,从而实现页面2与页面1遵循相同格式的页面首尾设计。
78.其中,组件的属性信息为用于描述创建组件时需要的信息。比如,组件的属性信息可以包括项目类型、组件类型和组件别名等等。譬如,项目类型可以包括即时开发类型项目、渐进式开发类型项目,等等;组件类型可以为ui组件、服务组件,等等;组件别名可以为字符数不超过十个的中文字符串,如“可伸展式导航栏”,等等。
79.其中,获取组件的属性信息的方式可以有多种,比如,可以利用预设的图形用户界面,通过设置不同的信息获取控件来来获取用户输入的属性信息,也可以通过命令行工具通过问答式直接获取用户输入的属性信息。
80.在本实施例中,可以获取需要创建的组件的属性信息,从而基于该属性信息执行后续的组件创建和组件发布等流程,具体地,步骤“获取需要创建的组件的属性信息”,可以包括:
81.通过调用命令行工具显示命令行交互界面;
82.获取在命令行交互界面输入的属性信息。
83.其中,命令行工具(cli,command-lineinterface)为计算机系统中用户界面的一种,用户可以使用键盘和鼠标等设备通过cli工具向计算机系统输入信息,比如,输入待执行的指令。
84.例如,可以通过调用命令行工具显示命令行交互界面,从而可以在该命令行交互界面中输入命令行工具中设定的指令、或者输入运行指令所需的其他信息,等等。譬如,参考图4,计算机设备可以利用该界面作为获取指令及其他信息的渠道。
85.在一实施例中,可以将分布式版本控制系统用于组件从创建到发布的周期内,比如,可以使用git(分布式版本控制系统的一种)来创建用于管理组件开发的版本库,该版本库也称组件仓库;进而可以基于命令行指令进入组件仓库的根目录,在该根目录下即进行组件的创建和调试等步骤。
86.在实际应用中,cli工具可以包括多个功能的指令,参考图5,可以使用init指令来初始化组件模板;使用dev指令来调试组件的演示原型(demo);使用test指令来运行组件的测试用例;使用install指令来安装组件;使用uninstall指令来删除指令;使用report指令来上报项目信息,等等。其中,lego为cli工具自定义的程序指令,该指令也可以为其他的字符串,在本技术中不对此作限制;<component-name>为调用指令的时候需要附上的组件名称。
87.在一实施例中,参考图4,可以基于命令行交互界面中的初始化(init)指令,显示用户指引信息来指引用户通过问答式输入组件的项目类型、组件类型和组件别名,其中,基于用户的输入,终端相应获取到的属性信息为:项目类型为即时(now)类型、组件类型为webui组件、组件别名为“这是一个案例”。
88.102、基于项目类型和组件类型,确定组件的创建模板。
89.其中,组件的创建模板为用于创建组件的可重复使用的代码块,组件开发者可以基于该创建模板进一步地开发组件,以生成符合预设规范的组件。比如,组价的创建模板中可以包括有对组件开发时开发者需要遵循的的逻辑方法、数据、属性等的规定;也可以包括
有对组件开发项目的文件结构、文件种类、组件提交规范、测试用例规范、组件说明文档规范的规定,等等。
90.其中,基于属性信息确定组件创建模板的方法可以有多种。
91.在一实施例中,可以基于组件类型确定组件的创建模板。例如,组件类型可以包括ui组件类型和服务组件类型;其中,ui组件可以为具备用户界面展示功能的组件,比如,按钮组件、输入框组件和文本域组件等等;服务组件可以为提供特定服务或业务功能的组件,比如,日志记录组件、跨浏览器的异步javascript和xml(ajax,asynchronous javascript and xml)支持组件和数据持久化支持组件,等等。ui组件的创建模板可以包括用于用户界面设计的代码块和相关的组件结构;而服务组件的创建模板则无需包括用户界面设计的代码块。在实际应用中,可以基于ui组件和业务组件在创建、调试、测试、构建等步骤的不同,相应地设计不同的创建模板,从而可以实现基于组件类型来确定组件的创建模板。
92.在另一实施例中,可以基于项目类型确定组件的创建模板。例如,项目类型可以包括now类型和渐进式(pro,progressive)类型;其中,now类型的组件开发项目可以在组件仓库中使用cli工具提供的多项功能进行组件开发与发布;pro类型的组件开发项目可以在已有的项目开发过程中将可发布的组件提炼到组件仓库中,以进行对该组件的发布。在实际应用中,对于now类型和pro类型的项目类型,可以根据组件在不同项目中创建、调试、测试、构建等步骤的不同,相应地设计不同的创建模板,从而可以实现基于项目类型来确定组件的创建模板。
93.在另一实施例中,可以结合项目类型和组件类型的情况来确定组件的创建模板。例如,若项目类型为now类型,且组件类型为ui组件,则创建模板可确定为适用于在组件仓库中开发用户界面组件的组件创建模板;若项目类型为pro类型,且组件类型为服务组件,则创建模板可以为遵循了组件仓库的规范、且适用于在其他项目中进行服务组件开发的组件创建模板,具体地,开发者可以在其他项目中基于该组件创建模板进行组件的开发,后续通过拷贝等方式将该待发布的组件同步到组件仓库。
94.在本实施例中,参考图4,该组件的属性信息中,项目类型为now类型,组件类型为ui组件,因此,可以结合项目类型和组件类型来确定该组件的创建模板为now-ui-demo,即为预设的适用于在组件仓库中开发用户界面组件的组件创建模板。
95.103、向组件的创建模板中注入组件代码,以创建组件。
96.其中,组件代码可以包括组件的逻辑代码、组件的测试代码和组件的demo代码,等等。可以通过向组件的创建模板中注入组件代码,以进行组件的创建、调试、测试、编译等步骤,进而生成待发布的组件。具体地,步骤“向组件的创建模板中注入组件代码,以创建组件”,可以包括:
97.当检测到命令行工具的代码调试的指令时,显示组件的代码调试界面;
98.根据用户在代码调试界面的代码调试结果,确定组件的组件代码;
99.向组件的创建模板中注入该确定的组件代码;
100.触发组件的创建模板根据该确定的组件代码创建组件。
101.其中,代码调试可以为在组件的创建过程中,基于生成的组件的效果进行组件代码的调整的过程。譬如,在ui组件的创建过程中对ui组件进行的代码调试,可以通过一边进行组件代码的编写、一边实时地在浏览器上查看当前组件代码的运行效果以便及时地对组
件代码进行调整和尝试。
102.其中,代码调试指令可以为触发进行代码调试的指令。在本实施例中,参考图5,代码调试指令的格式为legodev<component-name>,可以通过该指令唤起代码调试界面进行代码调试。譬如,对于名称为“component1”的组件,可以通过在命令行交互界面中输入“legodev<component1>”,来进行对该组件的代码调试。
103.其中,代码调试界面为进行代码调试的界面,比如,可以为软件开发工具包中提供的调试界面,也可以为浏览器的控制台,等等;组件的开发者可以在代码调试界面中进行组件的代码调试。
104.在一实施例中,可以通过legodev<uicomponent1>指令唤起浏览器的控制台,以对名称为“uicomponent1”的ui组件进行代码调试;具体地,在浏览器中,用户或组件开发者可以在浏览器上边写代码边实时查看该ui组件的效果,最后调试结束时即可确定该ui组件的组件代码,进而可以触发基于该ui组件的组件代码来创建组件。
105.104、基于组件的测试用例对创建的组件进行测试。
106.其中,在组件的组件代码确定了以后,可以使用该组件代码中的测试用例对该生成的组件进行自动化测试,无需组件开发者通过传统的人工执行测试用例来对组件进行测试。
107.例如,可以将生成的组件看作可测试的单元,对该组件进行单元测试。在单元测试中,组件开发者可以遵循测试驱动开发(tdd,test-drivendevelopment)的原则,在开发组件的功能代码之前确定该组件的测试用例;也可以遵循行为驱动开发(bdd,behaviordrivendevelopment)的原则,基于组件使用者的需求及行为来编写组件的测试用例,等等。组件的测试用例可以具体地定义了组件需要支持的功能、应当作出的反应、需要考虑的边界条件和预期结果等等。因此,在测试用例确定了以后,即可基于该测试用例对生成的组件进行测试。具体地,步骤“基于组件的测试用例对创建的组件进行测试”,可以包括:
108.获取该组件的组件测试用例;
109.基于该组件测试用例,确定该组件的测试数据;
110.根据该测试数据对该组件进行测试。
111.其中,测试用例为软件需求的具体表现形式,其可以对软件的测试任务进行描述,比如,描述测试任务的测试输入、执行条件以及预期结果等等;相应地,组件测试用例为组件需求的具体表现形式,可以基于组件测试用例对组件进行测试,从而在组件发布之前确保组件的质量。
112.其中,组件的测试数据为组件测试用例中用于执行自动化组件测试所需的数据,比如,可以包括测试输入、执行条件以及预期结果等等。譬如,文本框组件的一测试用例中,可以包括输入的文本字段内容、文本字段长度限制、文本框的预期效果、测试判定结果等测试数据;进而可以基于该测试数据对该文本框组件进行测试。
113.在一实施例中,在组件开发者确定了包括测试用例的组件代码后,可以获取该组件的组件测试用例,随后,依据该组件测试用例中的测试数据,自动地执行组件测试用例,并基于测试数据对组件测试用例的执行结果进行评判、以确定该组件是否通过测试,从而实现对该组件的自动化测试。具体地,步骤“获取该组件的组件测试用例”,可以包括:
114.触发钩子函数通过增量信息解析,得到该组件的组件模块信息;
115.从组件模块信息中提取该组件的组件测试用例。
116.其中,钩子函数为计算机中特定的行为发生时所触发的自定义脚本,比如,可以包括预处理脚本和后置处理脚本。譬如,在分布式版本控制系统git中,对于版本代码的提交(commit)动作,相应地可以有pre-commit钩子和post-commit钩子,钩子可以用于在commit前后进行一些自定义的处理操作。
117.在本实施例中,参考图6,用户在完成组件的开发后可以通过提交代码的commit指令来触发钩子,进而执行该钩子函数中自定义的脚本。
118.其中,增量信息解析用于获取项目中的增量信息,在实际应用中,可以通过多种方式实现增量信息解析,譬如,在分布式版本控制系统git中,可以通过gitdiff命令来比较文件之间的不同,从而获取增量信息。
119.在本实施例中,参考图6,在组件开发者或者用户完成组件代码的确定后,可以通过commit命令对该组件代码进行提交。由于对commit命令设置了相应的钩子函数,使得在代码提交前可以通过执行钩子函数中预设的脚本来针对代码进行多项操作,例如,可以在对组件代码进行静态代码校验(lint校验)通过后,通过触发gitdiff指令来获取项目的增量信息,从而获取组件的模块信息。由于该组件模块信息中包括组件的测试用例,因此可以基于获得的组件模块信息提取该组件的组件测试用例。
120.105、当组件的测试通过时,对该组件进行编译处理,得到该组件的组件数据包。
121.其中,编译为利用编译工具从源语言编写的源程序产生目标程序的过程,例如,可以利用编译工具将高版本语法的源程序转换为低版本语法的源程序,譬如,在前端开发中,可以利用编译工具将由高版本语法的javascript语言编写的组件转换为向后兼容的javascript语法,从而使得编译后的组件能够运行在低版本的环境中。
122.在本实施例中,当组件的测试通过后,对组件进行的编译处理,可以包括代码编译处理和demo编译处理,使得生成的组件数据包中,相应地包括可以发布的编译后组件代码和编译后组件demo;值得注意的是,该编译处理为自动化的过程,即不需要组件开发者或者组件管理平台的管理者人工进行。具体地,步骤“当组件的测试通过时,对该组件进行编译处理,得到该组件的组件数据包”,可以包括:
123.对通过测试的组件进行代码编译,得到该组件的代码数据;
124.对通过测试的组件进行原型编译,得到该组件的原型数据;
125.利用代码数据和原型数据生成该组件的组件数据包。
126.其中,编译可以包括词法分析、语法分析、语义检查、代码优化和生成字节码等环节。进行代码编译的方法有多种,比如,可以通过编译工具进行代码的转换,譬如,在前端开发中,可以通过babel编译工具,将高版本的javascript代码转换为向后兼容的的javascript代码数据,以使得编译后的代码在低版本浏览器环境下也能够运行。
127.在一实施例中,通过代码编译可以将以下代码:
128.let user="tom";
129.`welcome back${user}!`;
130.转换为如下代码数据:
131.var user="tom";
132."welcome back".concat(user,"!");
133.以使得编译后的代码在低版本的浏览器环境下也可以实现输出字符串“welcomebacktom!”的功能。
134.在另一实施例中,通过代码编译可以将代码“[2,4,6].map(n=>n**2);”转换成向后兼容的代码“[2,4,6].map(function(n){return math.pow(n,2);});”,以使得编译后的代码在低版本的浏览器环境下也可以实现将数字2,4,6分别映射为4,16,36的功能。
[0135]
其中,对通过测试的组件进行原型编译,可以将组件的demo代码转换为适于发布的demo代码,进而可以基于编译后的demo代码发布该组件的demo。
[0136]
在本实施例中,参考图6,通过运行组件的测试用例来确定该组件的测试通过后,可以利用编译工具babel对组件进行代码编译并相应地获得编译后的代码数据;在代码编译成功后,进而可以对该组件的demo进行编译并相依地获得编译后的demo数据。在实际应用中,当demo编译成功后,在提交前可以对组件版本号进行更改,以便于发布后组件的版本号也相应进行了更新。至此,可以基于编译后的代码数据和编译后的demo数据生成该组件的组件数据包,并提交该组件数据包。值得注意的是,若在运行测试用例、代码编译或demo编译中有任一环节失败,均会导致提交失败。
[0137]
在一实施例中,当组件的测试通过时,可以对该通过测试的组件进行代码编译和demo编译,从而可以得到包括该组件的代码数据和demo数据的组件数据包,具体地,步骤“对通过测试的组件进行代码编译,得到该组件的代码数据”,可以包括:
[0138]
对该组件进行语义解析,得到该组件的抽象语法树;
[0139]
对抽象语法树进行结构转换,得到转换后的抽象语法树;
[0140]
通过遍历转换后的抽象语法树生成该组件的代码数据。
[0141]
其中,语义解析为将组件的代码字符串解析成抽象语法树的过程,具体地,语义解析可以包括词法分析和语法分析;通过词法分析可以将代码字符串转换成语法单元,进而在词法分析的基础上,通过语法分析得到语法单元之间的关系,从而生成对应的抽象语法树。
[0142]
其中,抽象语法树为编程语言源代码语法结构的一种抽象表示。比如,抽象语法树可以以树的形式表现源代码的语法结构,该树上的每个节点都表示源代码的一种结构。
[0143]
对组件进行语义解析生成抽象语法树的方式可以有多种,例如,在前端开发中,可以使用编译工具babel在词法分析阶段把组件的代码字符串转换为令牌(token)流,在语法分析阶段将token流转换成相应的抽象语法树。
[0144]
其中,对抽象语法树进行结构转换可以为通过对抽象语法树中的节点进行节点添加、节点更新及节点移除等操作,来对抽象语法树的结构进行转换的过程。例如,可以对由语义解析得到的抽象语法树进行深度优先遍历,并在此过程中对抽象语法树中的节点进行添加、更新及移除等操作来生成新的抽象语法树。对抽象语法树进行结构转换后,相应地可以生成结构转换后的抽象语法树。
[0145]
其中,通过遍历转换后的抽象语法树,可以生成该组件的代码数据,具体地,可以对转换后的抽象语法树执行深度优先遍历,进而构建可以表示该转换后抽象语法树的代码字符串,从而生成该组件的代码数据。
[0146]
在本实施例中,参考图7,可以对该组件进行语义解析,得到该组件的抽象语法树;
进而,对该抽象语法树进行结构转换,得到转换后的抽象语法树,最后,可以基于该转换后的抽象语法树生成该组件的代码数据。
[0147]
106、基于该组件的演示原型,对该组件的数据包进行发布。
[0148]
其中,在确定该组件的数据包后,可以基于该组件的演示原型,对该组件的数据包进行发布,使得用户可以通过网络等方式获取该组件的信息、与该组件的demo进行交互、下载和安装该组件、以及上报与该组件使用相关的信息,等等。例如,可以将该组件的数据包发布到公共的组件分享平台,组件开发者和组件使用者都可以在该组件分享平台上就组件进行分享和沟通;值得注意的是,对该组件的数据包进行发布不需要组件的开发者或者其他用户人工进行,该发布步骤是自动化的过程。具体地,步骤“基于该组件的演示原型,对该组件的数据包进行发布”,可以包括:
[0149]
对该组件数据包进行发布验证;
[0150]
当发布验证通过时,确定组件的演示原型;
[0151]
基于组件的演示原型对组件数据包进行发布。
[0152]
其中,对该组件数据包进行的发布验证可以用于校验该组件数据包是否存在版本号,以及该版本号是否符合相关规则,并可以通过该验证获取该组件的相关权限信息。进一步地,可以将通过发布验证的组件数据包确定为待发布的组件数据包。
[0153]
在实际应用中,对组件数据包进行验证的方式可以根据组件的发布方式相应地进行调整,譬如,可以通过软件包管理分发平台实现组件的发布,因此也可以利用该软件包管理分发平台进行对组件数据包的验证。
[0154]
在确定了待发布的组件数据包后,由于该组件数据包中包括了编译后的demo数据,因此可以相应地确定组件的demo。进而可以通过发布该组件的demo与确定的组件数据包,完成对该组件的发布。
[0155]
在本实施例中,对该组件数据包进行发布验证,可以确定待发布的组件数据包;进一步地,当发布验证通过时,可以确定组件的demo,从而可以基于组件的demo对组件数据包进行发布,具体地,步骤“对该组件数据包进行验证,确定待发布的组件数据包”,可以包括:
[0156]
对该组件数据包进行版本解析,得到组件的版本信息;
[0157]
根据组件发布格式对组件的版本信息进行格式校验;
[0158]
当格式校验通过时,确定发布验证通过。
[0159]
其中,对组件数据包进行的版本解析可以用于获取该组件在提交时确定的版本信息;例如,可以通过版本解析,得到组件的版本号;如,通过版本解析,确定该组件的版本号为1.0.1版本。
[0160]
其中,可以遵循预置的格式校验规则对版本信息进行校验,例如,格式校验规则可以为:组件的版本号须为x.y.z的形式,其中,x表示主版本号,当应用程序接口的兼容性时,x需递增;y表示次版本号,当增加功能且不影响应用程序接口的兼容性时,y需递增;z表示修订号,当软件漏洞修复且不影响应用程序接口的兼容性时,z需递增。
[0161]
例如,若通过版本解析确定该组件的版本号为1.0.1、且上一版本号为1.0.0,则可以确定该组件通过格式校验,进而可以确定该组件的组件数据包为待发布的组件数据包。又如,若通过版本解析确定该组件的版本号为1.0.1、且上一版本号也为1.0.1,则由于该版本号并未遵循预置的格式校验规则,则可以确定该组件未通过格式校验,进而确定该组件
的组件数据包不为待发布的组件数据包。
[0162]
在实际应用中,格式校验的规则可以根据不同的业务需求进行调整,以判断组件数据包是否存在、版本号是否符合发布规则,并获取相关的权限信息。
[0163]
由上可知,本实施例可以获取需要创建的组件的属性信息,其中,所述属性信息包括组件所属的项目类型和组件类型;基于所述项目类型和组件类型,确定所述组件的创建模板;向所述组件的创建模板中注入组件代码,以创建所述组件;基于所述组件的测试用例对创建的组件进行测试;当所述组件的测试通过时,对所述组件进行编译处理,得到所述组件的组件数据包;基于所述组件的演示原型,对所述组件的数据包进行发布。
[0164]
由上可知,本技术可以基于组件的属性信息确定用于创建组件的模板,使得组件的开发和调试更加便捷和高效,又能够通过模板来对组件的结构规范进行约束,从而使得不同的组件均遵循统一的规范、便于在组件提交和发布时对组件进行管理。并且,在提交了组件的代码后,对于后续的组件的测试、构建和发布环节实现了高程度的自动化,从而极大地提高了组件的开发效率和发布效率。另外,在组件发布时,通过部署可交互的演示原型,有利于对组件进行更有效的甄别与筛选,从而提高了组件的发布效率与用户体验。而在组件的持续集成阶段,对于频繁提交代码的情况,由于这些提交在最终发布之前都通过了自动化的测试、编译和验证,使得潜在问题可以提前得到暴露,从而保障了持续集成的质量。而在组件的持续交付阶段,由于实现了自动化发布流,可以随时随地实现组件应用的发布和部署,既提升了持续交付的质量,又使得组件发布的效率也得到了提升。
[0165]
此外,通过命令行工具创建组件的命令除了可以实现在组件仓库下进行组件的创建,还支持在业务项目中创建组件。随着项目测试通过上线后,即可直接将组件迁移进组件仓库进行提交发布。本技术对项目业务中渐进式开发组件的支持,为组件开发者创建组件提供了额外的可行选项,从而使得组件从创建到发布的流程具有更多的选择性、也间接地提高了组件发布的效率。
[0166]
另外,对于组件使用者来说,由于在组件贡献者提交代码时同时会生成一个可交互的demo,并在组件发布时将该demo部署在线上环境,使得组件使用者可以基于与该demo的交互进行组件的了解,而不是仅以原型截图为参考,使得组件使用者可以更真实地体验该组件并有效地进行组件选择。
[0167]
根据上面实施例所描述的方法,以下将举例进一步详细说明。
[0168]
在本实施例中,将以组件发布装置集成在服务器与终端为例进行说明,该服务器可以是单台服务器,也可以是由多个服务器组成的服务器集群;该终端可以为手机、平板电脑、笔记本电脑等设备。
[0169]
如图8所示,一种组件发布方法,具体流程如下:
[0170]
201、终端获取需要创建的组件的属性信息,其中,该属性信息包括组件所属的项目类型和组件类型。
[0171]
其中,可以通过调用cli工具,在命令行交互界面中通过问答式获取需要创建的组件的属性信息;例如,参考图9,组件贡献者可以通过使用cli工具来确定需要创建的组件的属性信息;基于该属性信息,可以进一步地实现组件的创建及调试。
[0172]
在一实施例中,可以在终端组件仓库的根目录下,通过cli工具提供的组件初始化命令,如“init”,即可触发组件交互界面显示需要输入的属性信息选项,例如,项目类型、组
件类型、组件别名,等等。组件贡献者可以通过问答式针对各个属性信息选项问题进行回答,使得终端相应地获取到需要创建的组件的属性信息。
[0173]
202、终端基于项目类型和组件类型,确定组件的创建模板。
[0174]
基于项目类型和组件类型确定创建模板的方式可以有多种,例如,可以基于项目类型来确定组件的创建模板;又如,可以结合属性信息中的项目类型和组件类型来确定组件的创建模板,等等。在实际应用中,可以根据业务需求对创建模板的确定规则进行调整。
[0175]
例如,若结合项目类型和组件类型来确定组件的创建模板时,对于项目类型为pro类型,且组件类型为ui类型的组件,可以将该组件的创建模板初始化为ui类型组件的开发架构、并设置减少该创建模板对开发环境的依赖,使得该组件可以在实际项目中进行开发,而不是只能通过cli工具跳转到组件调试界面后进行组件的开发;此外,随着组件所在的实际项目测试通过上线后,可以直接将该组件迁移进组件仓库进行提交发布。
[0176]
例如,参考图9,组件使用者可以在实际项目中进行组件的开发,并且将该组件发布到组件管理平台上。
[0177]
203、终端向组件的创建模板中注入组件代码,以创建组件。
[0178]
具体地,可以通过cli工具提供的代码调试指令,显示组件的代码调试界面,并根据用户在代码调试界面的代码调试结果确定组件的组件代码,进而向组件的创建模板中注入该确定的组件代码,以触发组件的创建模板根据该确定的组件代码生成组件。
[0179]
在一实施例中,对于组件名为“servicecomponent1”的组件,在终端组件仓库根目录下,可以通过在命令行交互界面中调用cli工具提供的组件调试命令“legodev<servicecomponent1>”,来唤起浏览器的控制台以进行代码调试。具体地,可以在代码调试中进行组件的开发和代码的调整,以确定该组件的组件代码。进一步地,终端可以将该确定的组件代码注入组件的创建模板中,以创建组件。
[0180]
在另一实施例中,参考图9,组件贡献者可以通过使用cli工具在终端进行组件的调试以实现组件的创建;当组件代码确定后,组件贡献者可以使用分布式版本控制系统git在本地进行该组件代码的提交,进一步地,该提交的操作可以触发相应的git钩子,从而触发后续的自动化模块。
[0181]
204、终端基于该组件的测试用例对创建的组件进行测试。
[0182]
具体地,可以获取该组件的组件测试用例,并基于该测试用例,确定该组件的测试数据,从而可以根据该测试数据对该组件进行测试。
[0183]
在一实施例中,终端可以通过增量信息解析得到该组件的组件模块信息,并从该组件的模块信息中提取该组件的测试用例,从而基于该测试用例中的测试数据对该组件进行测试;比如,可以通过脚本基于测试数据中的执行条件进行设置后,向该组件输入测试数据中的测试输入并获得组件的输出或表现,进而根据测试数据中的预期效果对该组件的输出或表现进行判断,以确定该组件是否通过测试。
[0184]
在另一实施例中,参考图9,当本地提交触发git钩子后,可以触发自动化模块基于该组件的测试用例对生成的组件进行测试,其中,该测试为自动化程序,即无需组件贡献者人工或者手动进行组件的测试。
[0185]
205、当该组件的测试通过时,终端对该组件进行编译处理,得到该组件的组件数据包。
[0186]
具体地,当该组件的测试通过后,终端对该组件进行的编译处理可以包括代码编译和原型编译,相应地可以得到该组件的代码数据和原型数据,进而可以利用该代码数据和原型数据生成该组件的组件数据包。
[0187]
其中,代码编译可以将高版本的编程语言代码转换为向后兼容的编程语言代码数据,从而使得编译后的代码在低版本的浏览器环节下也可以运行。而原型编译则可以得到适于发布的demo代码,以使得后续可以基于该适于发布的demo代码进行demo的发布。
[0188]
在一实施例中,参考图9,在组件的测试通过后,可以触发自动化模块利用对该组件进行编译处理,以得到待提交到服务器的组件数据包,其中,该编译为自动化过程,即无需组件贡献者人工或者手动进行组件的编译。
[0189]
206、服务器对该组件数据包进行发布验证。
[0190]
具体地,可以通过对该组件数据包进行版本解析以得到组件的版本信息,进而根据组件发布格式对该组件的版本信息进行格式校验,并将通过格式校验的组件数据包确定为待发布的组件数据包。
[0191]
在一实施例中,服务器可以通过版本解析得到该组件的版本号为“1.1.1.20200323_beta”。若预设的组件发布格式规定为:组件版本号由四部分组成,其中,第一部分为主版本号,第二部分为次版本号,第三部分为修订版版本号,第四部分为日期版本号加希腊字母版本号;则由于该组件的版本号符合该组件发布格式,则可以确定该组件的组件数据包为待发布的组件数据包。
[0192]
在另一实施例中,参考图9,在将该组件数据包发布到私有node包管理器(npm,node package manager)之前,可以通过自动化模块对该组件数据包进行验证,无需组件开发者人工进行。
[0193]
作为一种可选方式,在服务器对该组件数据包进行发布验证前,可以包括以下步骤:
[0194]
终端向发布组件的组件集同步该组件;
[0195]
服务器对组件集进行数据解析,得到该组件的组件数据包。
[0196]
其中,发布组件的组件集可以接收步骤205中的组件数据包,并基于该组件数据包对相应的组件执行构建发布等步骤。比如,在分布式版本控制系统git中,组件集可以为远程仓库,组件开发者可以通过push指令将各自组件开发分支的代码推送到远程仓库,从而实现组件的同步。此外,组件管理者可以对该组件仓库制定管理规范,以实现对组件仓库下不同类型的组件进行高效的管理;例如,该管理规范可以包括组件代码提交规范、组件测试用例设计规范、组件说明文档编写规范,等等。
[0197]
在一实施例中,参考图9,在自动化模块对通过测试的组件进行了自动化测试和自动化编译后,终端可以通过将该组件的组件数据包到提交到远程组件仓库中相应的开发分支,进一步地,在将该开发分支中的组件数据合并到开发主干的时候,可以通过触发git钩子唤起另外的自动化模块执行组件的构建发布。
[0198]
其中,对组件集进行数据解析以得到组件的组件数据包可以通过多种方式实现,例如,可以对该组件集进行增量数据解析,通过获取该组件集的增量数据来获取组件数据包,譬如,在分布式版本控制系统git中,可以通过gitdiff指令来获取远程仓库的增量数据,从而可以基于该增量数据确定获取的组件数据包。
[0199]
在一实施例中,参考图9,在将组件的开发分支合并到开发主干后,可以触发git钩子唤起自动化模块,该自动化模块可以通过对组件仓库进行增量数据解析以得到该组件的组件数据包。
[0200]
在另一实施例中,参考图10,可以使用分布式版本控制系统git来推送(push)该组件数据包到发布组件的组件集,从而实现了将该组件同步到发布组件的组件集,其中,该push指令触发了持续集成(ci,continuousintegration)。具体地,可以通过gitdiff指令来对该组件集进行数据解析,从而通过获取该组件集的增量数据来获取组件模块信息;在实际应用中,可以在对组件代码进行静态代码校验(lint校验)后执行gitdiff。基于获取的组件模块信息,可以得到组件的组件数据包。而后,可以通过npm来执行发布前的校验,并通过npm进行发布。在实际应用中,可以将该组件录入组件管理平台中,以便对该组件进行管理,最后,可以将该组件的demo进行发布。值得注意的是,在实际应用中,若npm校验失败可以影响到组件的发布流程。
[0201]
207、当发布验证通过时,服务器确定所述组件的演示原型。
[0202]
例如,在组件数据包通过发布验证后,可以从该组件数据包中确定该组件的domo数据,基于该demo数据可以确定该组件的演示原型。
[0203]
在一实施例中,参考图9,由自动化模块将组件构建发布到私有npm时,可以在部署demo之前执行本步骤,从而在将demo部署到线上环境之前可以确定待部署的的demo。
[0204]
208、服务器基于组件的演示原型对组件数据包进行发布。
[0205]
例如,参考图9,可以通过私有npm发布该组件的组件数据包,并且进一步地,将确定的demo部署到线上环境。在实际应用中,还可以将该组件的组件数据包进一步地提交到私有的git仓库,以实现对组件的进一步管理。
[0206]
在实际应用中,参考图9,在发布组件之后组件贡献者和组件使用者都可以通过cli工具提供的指令将组件下载到实际项目中。例如,可以通过cli工具的install指令将发布了的组件下载到实际项目中,其中,cli工具默认会将下载的组件统一收归到一个公共的目录下,同时也提供自定义路径的选项。
[0207]
此外,参考图9,还可以将该组件的使用情况通过cli工具提供的指令录入到组件管理平台中;例如,通过cli工具的report指令将该组件在实际项目中的使用情况录入到组件管理平台。组件使用者也可以在组件管理平台上通过查看组件的demo来筛选组件。
[0208]
更进一步地,对于组件管理平台的产品运营人员来说,可以基于组件管理平台上的上报信息来借鉴沉淀组件和历史业务,并可以向组件使用者提出组件的可复用需求,等等。
[0209]
由上可知,本技术实施例可以基于组件的属性信息确定用于创建组件的模板,使得组件的开发和调试更加便捷和高效,又能够通过模板来对组件的结构规范进行约束,从而使得不同的组件均遵循统一的规范、便于在组件提交和发布时对组件进行管理。并且,在提交了组件的代码后,对于后续的组件的测试、构建和发布环节实现了高程度的自动化,从而极大地提高了组件的开发效率和发布效率。另外,在组件发布时,通过部署可交互的演示原型,有利于对组件进行更有效的甄别与筛选,从而提高了组件的发布效率与用户体验。而在组件的持续集成阶段,对于频繁提交代码的情况,由于这些提交在最终发布之前都通过了自动化的测试、编译和验证,使得潜在问题可以提前得到暴露,从而保障了持续集成的质
量。而在组件的持续交付阶段,由于实现了自动化发布流,可以随时随地实现组件应用的发布和部署,既提升了持续交付的质量,又使得组件发布的效率也得到了提升。
[0210]
此外,通过命令行工具创建组件的命令除了可以实现在组件仓库下从零开始进行组件的创建,还支持在业务项目中创建组件,随着项目测试通过上线后,即可直接将组件迁移进组件仓库进行提交发布。本技术对项目业务中渐进式开发组件的支持,为组件开发者创建组件提供了额外的可行选项,从而使得组件从创建到发布的流程具有更多的选择性、也间接地提高了组件发布的效率。
[0211]
另外,对于组件管理者,针对不同的组件类型,通过一套规范来约束单一组件仓库下的所有组件,便于组件管理;对于组件使用者,在筛选出合适的组件后,通过cli工具可以进行快速安装,即可进行组件的二次开发复用,提高了开发效率;对于产品运营,随着业务和组件的不断沉淀,对于相似度较高的场景即可快速复用玩法或局部功能,进而提高了更新迭代的效率。
[0212]
为了更好地实施以上方法,相应的,本技术实施例还提供一种组件发布装置,其中,该组件发布装置可以集成在服务器或终端中。该服务器可以是单台服务器,也可以是由多个服务器组成的服务器集群;该终端可以为手机、平板电脑、笔记本电脑等设备。
[0213]
例如,如图11所示,该组件发布装置可以包括获取单元301,确定单元302,注入单元303,测试单元304,编译单元305以及发布单元306,如下:
[0214]
获取单元301,用于获取需要创建的组件的属性信息,其中,所述属性信息包括组件所属的项目类型和组件类型;
[0215]
确定单元302,用于基于所述项目类型和组件类型,确定所述组件的创建模板;
[0216]
注入单元303,用于向所述组件的创建模板中注入组件代码,以创建所述组件;
[0217]
测试单元304,用于基于所述组件的测试用例对创建的组件进行测试;
[0218]
编译单元305,用于当所述组件的测试通过时,对所述组件进行编译处理,得到所述组件的组件数据包;
[0219]
发布单元306,用于基于所述组件的演示原型,对所述组件的数据包进行发布。
[0220]
在一实施例中,参考图12,所述注入单元303,包括:
[0221]
显示子单元3031,用于当检测到命令行工具的代码调试的指令时,显示组件的代码调试界面;
[0222]
代码确定子单元3032,用于根据用户在所述代码调试界面的代码调试结果,确定所述组件的组件代码;
[0223]
代码注入子单元3033,用于向所述组件的创建模板中注入所述确定的组件代码;
[0224]
模板触发子单元3034,用于触发所述组件的创建模板根据所述确定的组件代码创建组件。
[0225]
在一实施例中,参考图13,所述测试单元304,包括:
[0226]
测试获取子单元3041,用于获取所述组件的组件测试用例;
[0227]
测试确定子单元3042,用于基于所述组件测试用例,确定所述组件的测试数据;
[0228]
组件测试子单元3043,用于根据所述测试数据对所述组件进行测试。
[0229]
在一实施例中,所述测试获取子单元3041,用于:
[0230]
触发钩子函数通过增量信息解析,得到所述组件的组件模块信息;从所述组件模
块信息中提取所述组件的组件测试用例。
[0231]
在一实施例中,参考图14,所述编译单元305,包括:
[0232]
代码编译子单元3051,用于对所述通过测试的组件进行代码编译,得到所述组件的代码数据;
[0233]
原型编译子单元3052,用于对所述通过测试的组件进行原型编译,得到所述组件的原型数据;
[0234]
数据生成子单元3053,用于利用所述代码数据和所述原型数据生成所述组件的组件数据包。
[0235]
在一实施例中,所述代码编译子单元3051,用于:
[0236]
对所述组件进行语义解析,得到所述组件的抽象语法树;对所述抽象语法树进行结构转换,得到转换后的抽象语法树;通过遍历所述转换后的抽象语法树生成所述组件的代码数据。
[0237]
在一实施例中,参考图15,所述发布单元306,包括:
[0238]
发布验证子单元3061,用于对所述组件数据包进行发布验证;
[0239]
原型确定子单元3062,用于当所述发布验证通过时,确定所述组件的演示原型;
[0240]
发布执行子单元3063,用于基于所述组件的演示原型对组件数据包进行发布。
[0241]
在一实施例中,所述发布验证子单元3063,用于:
[0242]
对所述组件数据包进行版本解析,得到组件的版本信息;根据组件发布格式对所述组件的版本信息进行格式校验;当格式校验通过时,确定发布验证通过。
[0243]
在一实施例中,参考图16,所述获取单元301,包括:
[0244]
显示子单元3011,用于通过调用命令行工具显示命令行交互界面;
[0245]
信息获取子单元3012,用于获取在所述命令行交互界面输入的属性信息。
[0246]
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
[0247]
由上可知,本实施例的组件发布装置中获取单元301获取需要创建的组件的属性信息,其中,所述属性信息包括组件所属的项目类型和组件类型;由确定单元302基于所述项目类型和组件类型,确定所述组件的创建模板;由注入单元303向所述组件的创建模板中注入组件代码,以创建所述组件;由测试单元304基于所述组件的测试用例对创建的组件进行测试;由编译单元305当所述组件的测试通过时,对所述组件进行编译处理,得到所述组件的组件数据包;由发布单元306基于所述组件的演示原型,对所述组件的数据包进行发布。
[0248]
该方案可以该方案可以基于组件的属性信息确定用于创建组件的模板,使得组件的开发和调试更加便捷和高效,又能够通过模板来对组件的结构规范进行约束,从而使得不同的组件均遵循统一的规范、便于在组件提交和发布时对组件进行管理。并且,在提交了组件的代码后,对于后续的组件的测试、构建和发布环节实现了高程度的自动化,从而极大地提高了组件的开发效率和发布效率。另外,在组件发布时,通过部署可交互的演示原型,有利于对组件进行更有效的甄别与筛选,从而提高了组件的发布效率与用户体验。而在组件的持续集成阶段,对于频繁提交代码的情况,由于这些提交在最终发布之前都通过了自
动化的测试、编译和验证,使得潜在问题可以提前得到暴露,从而保障了持续集成的质量。此外,在组件的持续交付阶段,由于实现了自动化发布流,可以随时随地实现组件应用的发布和部署,既提升了持续交付的质量,又使得组件发布的效率也得到了提升。
[0249]
此外,本技术实施例还提供一种计算机设备,该计算机设备可以为服务器或终端等设备,如图17所示,其示出了本技术实施例所涉及的计算机设备的结构示意图,具体来讲:
[0250]
该计算机设备可以包括有一个或一个以上计算机可读存储介质的存储器401、输入单元402、显示单元403、包括有一个或者一个以上处理核心的处理器404、以及电源405等部件。本领域技术人员可以理解,图17中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
[0251]
存储器401可用于存储软件程序以及模块,处理器404通过运行存储在存储器401的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器401可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器401可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器401还可以包括存储器控制器,以提供处理器404和输入单元402对存储器401的访问。
[0252]
输入单元402可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元402可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器404,并能接收处理器404发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元402还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
[0253]
显示单元403可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元403可包括显示面板,可选的,可以采用液晶显示器(lcd,liquid crystal display)、有机发光二极管(oled,organic light-emitting diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器404以确定触摸事件的类型,随后处理器404根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图17中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
[0254]
处理器404是计算机设备的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器401内的软件程序和/或模块,以及调用存储在存储器401内的数据,执行计算机设备的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器404可包括一个或多个处理核心;优选的,处理器404可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器404中。
[0255]
计算机设备还包括给各个部件供电的电源405(比如电池),优选的,电源可以通过电源管理系统与处理器404逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源405还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
[0256]
尽管未示出,计算机设备还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,计算机设备中的处理器404会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器401中,并由处理器404来运行存储在存储器401中的应用程序,从而实现各种功能,如下:
[0257]
获取需要创建的组件的属性信息,其中,所述属性信息包括组件所属的项目类型和组件类型;基于所述项目类型和组件类型,确定所述组件的创建模板;向所述组件的创建模板中注入组件代码,以创建所述组件;基于所述组件的测试用例对创建的组件进行测试;当所述组件的测试通过时,对所述组件进行编译处理,得到所述组件的组件数据包;基于所述组件的演示原型,对所述组件的数据包进行发布。
[0258]
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0259]
由上可知,本实施例的计算机设备可以基于组件的属性信息确定用于创建组件的模板,使得组件的开发和调试更加便捷和高效,又能够通过模板来对组件的结构规范进行约束,从而使得不同的组件均遵循统一的规范、便于在组件提交和发布时对组件进行管理。并且,在提交了组件的代码后,对于后续的组件的测试、构建和发布环节实现了高程度的自动化,从而极大地提高了组件的开发效率和发布效率。另外,在组件发布时,通过部署可交互的演示原型,有利于对组件进行更有效的甄别与筛选,从而提高了组件的发布效率与用户体验。而在组件的持续集成阶段,对于频繁提交代码的情况,由于这些提交在最终发布之前都通过了自动化的测试、编译和验证,使得潜在问题可以提前得到暴露,从而保障了持续集成的质量。此外,在组件的持续交付阶段,由于实现了自动化发布流,可以随时随地实现组件应用的发布和部署,既提升了持续交付的质量,又使得组件发布的效率也得到了提升。
[0260]
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
[0261]
为此,本技术实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本技术实施例所提供的任一种组件发布方法中的步骤。例如,该指令可以执行如下步骤:
[0262]
获取需要创建的组件的属性信息,其中,所述属性信息包括组件所属的项目类型和组件类型;基于所述项目类型和组件类型,确定所述组件的创建模板;向所述组件的创建模板中注入组件代码,以创建所述组件;基于所述组件的测试用例对创建的组件进行测试;
当所述组件的测试通过时,对所述组件进行编译处理,得到所述组件的组件数据包;基于所述组件的演示原型,对所述组件的数据包进行发布。
[0263]
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0264]
其中,该存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、磁盘或光盘等。
[0265]
由于该存储介质中所存储的指令,可以执行本技术实施例所提供的任一种组件发布方法中的步骤,因此,可以实现本技术实施例所提供的任一种组件发布方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
[0266]
以上对本技术实施例所提供的一种组件发布方法和装置进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1