一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

软件项目生成方法及装置、电子设备和存储介质与流程

2021-12-14 21:08:00 来源:中国专利 TAG:


1.本公开涉及软件开发技术领域,具体而言,涉及一种软件项目生成方法、软件项目生成装置、电子设备以及计算机可读存储介质。


背景技术:

2.前端开发是创建全球广域网(world wide web,web)页面或应用程序(application,app)等前端界面呈现给用户的过程,通过超级文本标记语言(hyper text markup language,html),层叠样式表(cascading style sheets,css)、javascript以及衍生出来的各种技术、框架、解决方案,来实现互联网产品的用户界面交互。
3.前端开发的常用框架包括react框架、vue框架以及angular框架,前端react项目的脚手架(即hello world框架),业界有比如creat-react-app等,可以通过命令的方式快速的生成的一个helloworld项目,然后在生成的项目中根据项目具体需求进行扩展。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.本公开的目的在于提供一种软件项目生成方法、软件项目生成装置、电子设备以及计算机可读存储介质,进而至少在一定程度上克服现有的前端react框架的生成方式存在框架代码功能不完善以及无法提供不同功能和版本的前端脚手架的问题。
6.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
7.根据本公开的第一方面,提供一种软件项目生成方法,包括:响应于项目生成请求,根据项目生成请求中的框架版本号确定对应的项目基础框架;项目基础框架为预先构建的基础框架;根据框架版本号获取项目基础框架对应的框架代码,并根据框架代码获取项目基础框架对应的依赖包;确定依赖包的安装类型,以根据安装类型安装依赖包;确定项目启动类型,并根据项目启动类型生成目标软件项目。
8.可选的,在响应于项目生成请求之前,上述方法还包括:确定项目基础框架的基本框架功能;获取与项目基础框架相关的关联代码,根据基本框架功能从关联代码中抽离与项目基础框架对应的框架代码;根据框架代码生成项目基础框架。
9.可选的,项目基础框架包括第一基础框架和第二基础框架;根据框架代码生成项目基础框架,包括:确定框架代码对应的代码功能;将具有第一代码功能的框架代码存储在第一基栈,以生成第一基础框架,并将第一基础框架的框架版本号确定为第一版本号;将具有第二代码功能的框架代码存储在第二基栈,以生成第二基础框架,并将第二基础框架的框架版本号确定为第二版本号。
10.可选的,根据框架版本号获取项目基础框架对应的框架代码,包括:根据框架版本号确定与项目基础框架对应的存储基栈;存储基栈包括第一基栈和第二基栈;从存储基栈
中获取项目基础框架的框架代码。
11.可选的,根据框架代码获取项目基础框架对应的依赖包,包括:对框架代码进行解析处理,以确定依赖包对应的依赖包调用信息;根据依赖包调用信息获取项目基础框架对应的依赖包。
12.可选的,根据项目启动类型生成目标软件项目,包括:如果项目启动类型为立即启动,则生成目标软件项目对应的项目生成指令;根据项目生成指令生成目标软件项目,并启动目标交互界面以进行项目交互操作。
13.可选的,根据项目启动类型生成目标软件项目,还包括:如果项目启动类型为非立即启动,则进行针对目标软件项目的初始化处理;响应于目标软件项目的项目启动操作,启动目标软件项目。
14.根据本公开的第二方面,提供一种软件项目生成装置,包括:框架获取模块,用于响应于项目生成请求,根据项目生成请求中的框架版本号确定对应的项目基础框架;项目基础框架为预先构建的基础框架;依赖包确定模块,用于根据框架版本号获取项目基础框架对应的框架代码,并根据框架代码获取项目基础框架对应的依赖包;依赖包安装模块,用于确定依赖包的安装类型,以根据安装类型安装依赖包;项目生成模块,用于确定项目启动类型,并根据项目启动类型生成目标软件项目。
15.可选的,软件项目生成装置还包括框架生成模块,用于确定项目基础框架的基本框架功能;获取与项目基础框架相关的关联代码,根据基本框架功能从关联代码中抽离与项目基础框架对应的框架代码;根据框架代码生成项目基础框架。
16.可选的,框架生成模块包括框架生成单元,用于确定框架代码对应的代码功能;将具有第一代码功能的框架代码存储在第一基栈,以生成第一基础框架,并将第一基础框架的框架版本号确定为第一版本号;将具有第二代码功能的框架代码存储在第二基栈,以生成第二基础框架,并将第二基础框架的框架版本号确定为第二版本号。
17.可选的,依赖包确定模块包括框架代码获取单元,用于根据框架版本号确定与项目基础框架对应的存储基栈;存储基栈包括第一基栈和第二基栈;从存储基栈中获取项目基础框架的框架代码。
18.可选的,依赖包确定模块还包括依赖包确定单元,用于对框架代码进行解析处理,以确定依赖包对应的依赖包调用信息;根据依赖包调用信息获取项目基础框架对应的依赖包。
19.可选的,项目生成模块包括第一项目生成单元,用于如果项目启动类型为立即启动,则生成目标软件项目对应的项目生成指令;根据项目生成指令生成目标软件项目,并启动目标交互界面以进行项目交互操作。
20.可选的,项目生成模块还包括第二项目生成单元,用于如果项目启动类型为非立即启动,则进行针对目标软件项目的初始化处理;响应于目标软件项目的项目启动操作,启动目标软件项目。
21.根据本公开的第三方面,提供一种电子设备,包括:处理器;以及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现根据上述任意一项所述的软件项目生成方法。
22.根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,
所述计算机程序被处理器执行时实现根据上述任意一项所述的软件项目生成方法。
23.本公开提供的技术方案可以包括以下有益效果:
24.本公开的示例性实施例中的软件项目生成方法,响应于项目生成请求,根据项目生成请求中的框架版本号确定对应的项目基础框架;项目基础框架为预先构建的基础框架;根据框架版本号获取项目基础框架对应的框架代码,并根据框架代码获取项目基础框架对应的依赖包;确定依赖包的安装类型,以根据安装类型安装依赖包;确定项目启动类型,并根据项目启动类型生成目标软件项目。通过上述的软件项目生成方法,一方面,通过预先构建的项目基础框架生成目标软件项目,由于可以通过项目基础框架进行功能升级和扩展,因此支持底层可控的功能升级和扩展。另一方面,由于预先构建了多种不同版本的项目基础框架,采用不同版本的项目基础框架生成目标软件项目可以满足不同类型用户的开发需求。
25.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
26.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
27.图1示意性示出了根据本公开的示例性实施方式的软件项目生成方法的流程图;
28.图2示意性示出了根据本公开的示例性实施方式的生成目标软件项目的整体流程图;
29.图3示意性示出了根据本公开的示例性实施方式的生成项目基础框架的流程图;
30.图4示意性示出了根据本公开的示例性实施方式的根据框架版本号获取框架代码的流程图;
31.图5示意性示出了根据本公开的示例性实施方式的获取项目基础框架对应的依赖包的流程图;
32.图6示意性示出了根据本公开的一种示例性实施方式的根据项目启动类型生成目标软件项目的流程图;
33.图7示意性示出了根据本公开的另一示例性实施方式的根据项目启动类型生成目标软件项目的流程图;
34.图8示意性示出了根据本公开的示例性实施方式的软件项目生成装置的方框图;
35.图9示意性示出了根据本公开一示例性实施例的电子设备的框图;
36.图10示意性示出了根据本公开一示例性实施例的计算机可读存储介质的示意图。
具体实施方式
37.现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示
相同或类似的部分,因而将省略对它们的重复描述。
38.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现、材料或者操作以避免模糊本公开的各方面。
39.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个软件硬化的模块中实现这些功能实体或功能实体的一部分,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
40.前端开发的常用框架包括react框架、vue框架以及angular框架,前端react项目的脚手架(即hello world框架),业界有比如creat-react-app等,可以通过命令的方式快速的生成的一个helloworld项目,然后在生成的项目中根据项目具体需求进行扩展。
41.然而,发明人发现,采用上述方式生成前端开发项目存在下述问题:(1)功能比较简单。项目启动后就是一个简单的helloworld输出,对于基础薄弱的开发人员或者全栈的后端工程师,可引导参考性不强。(2)自带的扩展较少。比如,模块打包机webpack的打包配置可能不符合项目的实际需求,则需要针对项目的工程化或者发布部署需求进行改造,如增加一些插件(webpack plugin)进行文件校验、文件上传等等。(3)缺少代码检测规范或者代码检测规范不符合实际要求。现有的脚手架要么不带lint工具,要么就是规则不符合实际的要求和规范,还需要根据实际情况进行改造。(4)数据流管理不完善。有的脚手架不带数据流管理扩展,比如react数据流状态管理工具mbox和react数据流状态管理工具redux等,而且写法相对比较原生,对于全栈偏后端的工程师来说,入门有点高。(5)对于typescript语言的支持不太友好。对于单一脚手架,只能存在支持或不支持一种选项,得针对实际选择不同的脚手架。(6)更新不可控。这也是比较重要的一点,第三方脚手架毕竟不在自己控制范围内,如果第三方脚手架不升级,那初始化helloworld的项目将一直是同一个样式。(7)启动姿势不太友好。工程师无法自行选择强制自启动或手动启动。
42.基于此,在本示例实施例中,首先提供了一种软件项目生成方法,可以利用服务器来实现本公开的软件项目生成方法,也可以利用终端设备来实现本公开所述的方法,其中,本公开中描述的终端可以包括诸如平板电脑、笔记本电脑、掌上电脑、个人数字助理(personal digital assistant,pda)等移动终端,以及诸如台式计算机等固定终端。图1示意性示出了根据本公开的一些实施例的软件项目生成方法流程的示意图。参考图1,该软件项目生成方法可以包括以下步骤:
43.步骤s110,响应于项目生成请求,根据项目生成请求中的框架版本号确定对应的项目基础框架;项目基础框架为预先构建的基础框架。
44.步骤s120,根据框架版本号获取项目基础框架对应的框架代码,并根据框架代码获取项目基础框架对应的依赖包。
45.步骤s130,确定依赖包的安装类型,以根据安装类型安装依赖包。
46.步骤s140,确定项目启动类型,并根据项目启动类型生成目标软件项目。
47.根据本示例实施例中的软件项目生成方法,一方面,通过预先构建的项目基础框
架生成目标软件项目,由于可以通过项目基础框架进行功能升级和扩展,因此支持底层可控的功能升级和扩展。另一方面,由于预先构建了多种不同版本的项目基础框架,采用不同版本的项目基础框架生成目标软件项目可以满足不同类型用户的开发需求。
48.下面,将对本示例实施例中的软件项目生成方法进行进一步的说明。
49.在步骤s110中,响应于项目生成请求,根据项目生成请求中的框架版本号确定对应的项目基础框架;项目基础框架为预先构建的基础框架。
50.在本公开的一些示例性实施方式中,项目生成请求可以是生成目标软件项目对应的请求。例如,使用目标软件项目进行程序开发的用户可以通过相关操作,生成对应的项目生成请求。项目基础框架,又称为项目脚手架,可以是进行软件开发所采用的最底层的软件开发框架。框架版本号可以是项目基础框架对应的版本号,具有不同框架功能的项目基础框架可以对应不同的框架版本号。
51.参考图2,图2示意性示出了根据本公开的示例性实施方式的生成目标软件项目的整体流程图。在步骤s201中,用户可以通过可视化界面进行生成目标软件项目的相关操作。用户可以根据自己的开发需求选择对应的项目基础框架等,根据用户在可视化界面中的相关操作可以生成项目生成请求。例如,用户可以通过运行于服务器端的javascript解释器node.js提供的node可视化命令操作,选择生成目标软件项目的初始化类型。在步骤s202中,响应于生成目标软件项目的项目生成请求,可以获取项目生成请求中包含的框架版本号,并根据框架版本号获取与目标软件项目对应的项目基础框架。在步骤s203中,用户可以选择第一版本号对应的第一基础框架。在步骤s204中,用户可以选择第二版本号对应的第二基础框架。
52.举例而言,对于前端react框架,可以下述命令确定所使用的项目基础框架的框架版本号,以选择对应版本的项目基础框架:
53.?选择脚手架类型:(use arrow keys)
54.[1].react<16&jva&js&ant design(jva-react-starterkit)
[0055]
[2].react>=16&hook&ts&ant design(ts-react-hook-starterkit)
[0056]
[3].退出
[0057]
在上述命令中,通过命令1可以选择框架版本号小于16.8(即v<16)的项目基础框架;通过命令2可以选择框架版本号大于等于16.8(即v>=16.8)的项目基础框架;如果用户选择命令3则退出当前操作。在命令1中,react<16可以表示react版本为小于16.8的版本,jva可以表示数据状态管理,js可以表示集成了javascript的支持,jva-react-starterkit是一个项目名称,可以表示启动器。在命令2中,react>16可以表示react版本为大于等于16.8的版本,hook可以表示状态管理器,ts可以表示集成了typescript的支持,ts-react-hook-starterkit可以表示启动器。
[0058]
由于用户在项目生成请求中选择的项目基础框架是预先构建的,下面将对如何构建项目基础框架的过程进行详细阐述。
[0059]
根据本公开的一些示例性实施例,确定项目基础框架的基本框架功能;获取与项目基础框架相关的关联代码,根据基本框架功能从关联代码中抽离与项目基础框架对应的框架代码;根据框架代码生成项目基础框架。基本框架功能可以是项目基础框架所具备的一些实现功能。关联代码可以是与项目基础框架相关联的项目代码,关联代码可以是开发
人员开发完成的项目代码。框架代码可以是关联代码中组成项目基础框架所采用的代码。
[0060]
参考图3,图3示意性示出了根据本公开的示例性实施方式的生成项目基础框架的流程图。
[0061]
在步骤s310中,可以先确定要生成的项目基础框架对应的基本框架功能。例如,基于对象的react项目基础框架的框架功能可以包括react框架的基础功能、lint代码检测、webpack配置支持分片打包和异步加载、良好的代码和逻辑目录组织结构以及基本的列表(list)操作、模型数据库(modal)操作。另外,基于运营平台构建的项目基础框架的框架功能还可以包括支持增强组件内逻辑复用性的hook技术,支持typescript编程语言,以及自动发布分布式统一配置中心ducc的webpack扩展功能。在构建项目基础框架时,首先要明确该项目基础框架包含的基本框架功能。
[0062]
在步骤s320中,在确定出基本框架功能后,可以确定与项目基础框架相关的关联代码,并根据基本框架功能从关联代码中抽离与项目基础框架对应的框架代码。举例而言,开发人员可以根据不同的业务开发需求开发多个不同的软件项目,每个软件项目均对应各自的项目代码,如果这些项目代码中包含项目基础框架中所包含的框架功能,则可以认为该项目代码是该项目基础框架的关联代码。在确定出项目基础框架的关联代码后,可以从关联代码中抽取与项目基础框架对应的代码,作为框架代码。
[0063]
在步骤s330中,根据框架代码生成项目基础框架。在确定处于项目基础框架对应的所有框架代码后,可以将框架代码进行组合,或者其他处理,以生成项目基础框架。举例而言,由于从一个软件项目中确定的关联代码可能对应项目基础框架中的一个基本功能,将每一部分关联代码进行组合可以实现项目基础框架所实现的所有基本框架功能。因此,可以将多个部分的关联代码进行整合,以生成项目基础框架。
[0064]
根据本公开的一些示例性实施例,确定框架代码对应的代码功能;将具有第一代码功能的框架代码存储在第一基栈,以生成第一基础框架,并将第一基础框架的框架版本号确定为第一版本号;将具有第二代码功能的框架代码存储在第二基栈,以生成第二基础框架,并将第二基础框架的框架版本号确定为第二版本号。
[0065]
其中,代码功能可以是运行框架代码时所能实现的功能。以前端react框架为例,第一代码功能可以是较为基础的代码功能。例如,第一代码功能可以是低于react 16.8版本所具有的代码功能。第一代码功能较适用于进行简单前端开发的后端工程师以及前端开发入门者。第一基栈可以是第一基础框架对应的存储基栈,第一基础框架对应的框架代码可以存储于第一基栈中。第一基础框架可以是具有第一代码功能的项目基础框架。框架版本号可以是项目基础框架对应的版本号,例如,第一基础框架对应的项目版本号为第一版本号。低于react 16.8版本的前端react框架可以快速进行代码生成。
[0066]
第二代码功能可以是高于react 16.8版本所具有的代码功能。第二代码功能较适用于进行复杂前端开发的架构师或资深前端开发工程师。第二基栈可以是第二基础框架对应的存储基栈,第二基础框架对应的框架代码可以存储于第二基栈中。第二基础框架可以是具有第二代码功能的项目基础框架。框架版本号可以是项目基础框架对应的版本号,例如,第二基础框架对应的项目版本号为第二版本号。高于react 16.8版本的前端react框架可以快速发布到相关代码托管位置中。
[0067]
确定出一个项目基础框架的框架代码对应的代码功能后,可以将具有不同代码功
能的框架代码存储在对应的存储基栈中,以生成不同的项目基础框架。具体的,可以确定第一基础框架的框架代码对应的代码功能,将具有第一代码功能的框架代码存储第一基栈中,以生成第一基础框架,另外,可以将第一基础框架的框架版本号确定为第一版本号。确定第二基础框架的框架代码对应的代码功能,将具有第二代码功能的框架代码存储第二基栈中,以生成第二基础框架,并将第二基础框架的框架版本号确定为第二版本号。在生成项目基础框架后,可以将项目基础框架托管在面向开发者的云端开发平台coding中,以便后续从coding中拉取项目基础框架对应的代码内容。
[0068]
本领域技术人员容易理解的是,在本公开的其他示例性实施例中,还可以根据具体需求构建多种不同版本的项目基础框架,以便用户根据构建得到的项目基础框架生成目标软件项目,本公开对预先构建的项目基础框架的版本数量不作任何特殊限定。
[0069]
在步骤s120中,根据框架版本号获取项目基础框架对应的框架代码,并根据框架代码获取项目基础框架对应的依赖包。
[0070]
在本公开的一些示例性实施方式中,依赖包可以是运行项目基础框架所依赖的软件工具包和插件包等。根据框架版本号可以获取到项目基础框架对应的框架代码,由于框架代码中可能包含运行该项目基础框架所必须的依赖包,因此,可以根据框架代码判断该项目基础框架是否具有对应的依赖包以及具体是哪些依赖包。
[0071]
根据本公开的一些示例性实施例,根据框架版本号确定与项目基础框架对应的存储基栈;存储基栈包括第一基栈和第二基栈;从存储基栈中获取项目基础框架的框架代码。存储基栈可以是存储项目基础框架的框架代码的栈。
[0072]
在确定出项目生成请求中包含的框架版本号后,可以根据框架版本号获取项目基础框架具体对应的框架代码。参考图4,图4示意性示出了根据本公开的示例性实施方式的根据框架版本号获取框架代码的流程图。在步骤s410中,根据框架版本号可以确定出与项目基础框架对应的存储基栈,如第一基栈和第二基栈。举例而言,第一基栈中可以存储第一版本号的项目基础框架(即第一基础框架)的框架代码;第二基栈中存储第二基础框架的框架代码。在步骤s420中,在确定出项目基础框架对应的存储基栈后,可以从存储基栈中获取与项目基础框架对应的框架代码。例如,在确定出存储基栈后,将自动从代码托管平台中拉取项目基础框架对应的框架代码至本地。
[0073]
根据本公开的一些示例性实施例,对框架代码进行解析处理,以确定依赖包对应的依赖包调用信息;根据依赖包调用信息获取项目基础框架对应的依赖包。解析处理可以是对框架代码进行分析处理过程,通过解析处理可以确定框架代码对应的依赖包的调用信息。依赖包调用信息可以包括依赖包的具体名称、依赖包所处的具体位置以及依赖包的包大小等信息。
[0074]
参考图5,图5示意性示出了根据本公开的示例性实施方式的获取项目基础框架对应的依赖包的流程图。在步骤s510中,对获取到框架代码进行解析处理,确定出框架代码对应的依赖包调用信息。例如,通过对框架代码进行解析后,可以得到该项目基础框架运行时所需的依赖包的名称、大小、存储路径等。在步骤s520中,在确定出依赖包调用信息之后,可以根据依赖包调用信息获取该项目基础框架对应的依赖包,以安装获取到的依赖包。
[0075]
在步骤s130中,确定依赖包的安装类型,以根据安装类型安装依赖包。
[0076]
在本公开的一些示例性实施方式中,安装类型可以是安装依赖包时所采用的类
型,例如,安装类型可以包括基于node工程包管理工具npm安装依赖包;还可以包括基于node工程包管理工具yarn安装依赖包。在获取到依赖包之后,可以确定依赖包的安装类型,并根据确定出的安装类型安装依赖包。
[0077]
举例而言,本公开可以提供下述命令选择安装类型:
[0078]
?选择安装项目依赖姿势:(use arrow keys)
[0079]
[1].npm
[0080]
[2].yarn
[0081]
[3].退出
[0082]
参考图2,在步骤s205中,用户可以选择依赖包的安装类型。例如用户可以通过命令选择对应的依赖包安装类型,进行依赖包的安装。另外,在其他的一些实施例中,还可以提供其他的依赖包安装类型,如jnpm,本公开对此不作任何特殊限定。
[0083]
例如,用户可以选择“[2].yarn”以yarn安装类型安装依赖包。在步骤s206中,当用户选择“[2].yarn”后,可视化界面中将显示“yarn install v1.21.1”,并进行依赖包的安装过程。在依赖包安装过程中,可视化界面中可以是依赖包的安装进度。具体如下:
[0084]
yarn install v1.21.1
[0085]
[1/5]validating package.json

[0086]
[2/5]resolving packages

[0087]
[3/5]fetching packages

[0088]
[4/5]linking dependencies

[0089]
[5/5]building fresh packages

[0090]
success saved lockfile.
[0091]
done in 36.30s.
[0092]
由上述内容可知,本次依赖包安装过程中,该项目基础框架对应的依赖包可以包括validating package.json、resolving packages、fetching packages、linking dependencies以及building fresh packages等。
[0093]
在步骤s140中,确定项目启动类型,并根据项目启动类型生成目标软件项目。
[0094]
在本公开的一些示例性实施方式中,项目启动类型可以是目标软件项目对应的启动类型。项目启动类型可以包括立即启动和非立即启动。参考图2,在步骤s207中,在项目基础框架对应的依赖包安装完成后,确定出目标软件项目的项目启动类型,并根据确定出的项目启动类型生成目标软件项目。
[0095]
具体的,本公开可以在可视化界面中提供下述命令行,以便用户选择对应的项目启动类型:
[0096]
?是否需要启动新建项目:
[0097]
[1].是
[0098]
[2].否
[0099]
[3].退出
[0100]
根据本公开的一些示例性实施例,如果项目启动类型为立即启动,则生成目标软件项目对应的项目生成指令;根据项目生成指令生成目标软件项目,并启动目标交互界面以进行项目交互操作。立即启动可以是在用户选择该项目启动类型后,立即生成目标软件
项目的启动方式。项目生成指令可以是控制生成目标软件项目的指令。目标软件项目可以是通过上述一系列项目生成操作后所要生成的软件项目,用户可以通过目标软件项目进行业务开发。目标交互界面可以是展示目标软件项目所采用的界面。项目交互操作可以是用户基于目标软件项目进行项目开发所进行的操作。
[0101]
参考图6,图6示意性示出了根据本公开的一种示例性实施方式的根据项目启动类型生成目标软件项目的流程图。在步骤s208中,用户选择立即启动目标软件项目。具体实现步骤为:在步骤s610中,如果用户选择项目启动类型为立即启动,则服务器将根据用户的选择操作生成项目生成指令。在步骤s620中,在生成项目生成指令后,可以根据项目生成指令生成目标软件项目,则用户可以基于目标软件项目进行业务开发,通过目标交互界面进行相应的项目交互操作。举例而言,当用户选择立即启动时,将立即启动目标软件项目,并自动打开浏览器以便用户通过浏览器进行项目预览,以便进行相关的业务开发操作。
[0102]
根据本公开的一些示例性实施例,如果项目启动类型为非立即启动,则进行针对目标软件项目的初始化处理;响应于目标软件项目的项目启动操作,启动目标软件项目。非立即启动可以是先进行目标软件项目的初始化过程,但并不立即启动目标软件项目,用户可以在后续任意时间点手动启动目标软件项目的启动方式。项目启动请求可以是用户手动启动目标软件项目所对应的请求。项目启动操作可以是启动目标软件项目的过程。
[0103]
参考图7,图7示意性示出了根据本公开的一种示例性实施方式的根据项目启动类型生成目标软件项目的流程图。在步骤s209中,用户选择非立即启动目标软件项目,仅生成目标软件项目。具体实现步骤为:在步骤s710中,如果项目启动类型为非立即启动,则在用户选择非立即启动时,仅进行针对目标软件项目的初始化处理,并不立即启动目标软件项目。在步骤s720中,响应于目标软件项目的项目启动操作,启动目标软件项目。在对目标软件项目的初始化处理过程完成后,如果接收到用户针对目标软件项目的项目启动操作,则响应于用户的项目启动操作,立即启动目标软件项目,以便用户基于目标软件项目进行业务开发。
[0104]
举例而言,当用户在前一天通过上述步骤完成目标软件项目的初始化步骤后,用户并不想立即启动目标软件项目,而是想要在后一天进行业务开发时再手动启动目标软件项目,则用户可以选择非立即启动,而后自行选择启动时机。
[0105]
进一步地,可以将上述生成目标软件项目的步骤集成为项目生成工具托管在代码托管平台coding中,以便用户可以直接获取目标软件项目的项目生成工具并在本地启动以构建目标软件项目。另外,还可以直接通过命令的方式进行操作,例如,可以使用系统全局命令rc-cli,并通过工程包管理工具jnpm进行安装,以快速进行一个目标软件项目(如前端react项目)的灵活创建。
[0106]
需要说明的是,本公开所使用的术语“第一”、“第二”等,仅是为了区分不同的项目基础框架、不同的存储基栈以及不同的框架版本号,并不应对本公开造成任何限制。
[0107]
综上所述,响应于项目生成请求,根据项目生成请求中的框架版本号确定对应的项目基础框架;项目基础框架为预先构建的基础框架;根据框架版本号获取项目基础框架对应的框架代码,并根据框架代码获取项目基础框架对应的依赖包;确定依赖包的安装类型,以根据安装类型安装依赖包;确定项目启动类型,并根据项目启动类型生成目标软件项目。通过上述的软件项目生成方法,一方面,通过预先构建的项目基础框架生成目标软件项
目,由于可以通过项目基础框架进行功能升级和扩展,因此支持底层可控的功能升级和扩展。另一方面,由于预先构建了多种不同版本的项目基础框架,采用不同版本的项目基础框架生成目标软件项目可以满足不同类型用户的开发需求。
[0108]
需要说明的是,尽管在附图中以特定顺序描述了本发明中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
[0109]
此外,在本示例实施例中,还提供了一种软件项目生成装置。参考图8,该软件项目生成装置800可以包括:框架获取模块810、依赖包确定模块820、依赖包安装模块830以及项目生成模块840。
[0110]
具体的,框架获取模块810用于响应于项目生成请求,根据项目生成请求中的框架版本号确定对应的项目基础框架;项目基础框架为预先构建的基础框架;依赖包确定模块820用于根据框架版本号获取项目基础框架对应的框架代码,并根据框架代码获取项目基础框架对应的依赖包;依赖包安装模块830用于确定依赖包的安装类型,以根据安装类型安装依赖包;项目生成模块840用于确定项目启动类型,并根据项目启动类型生成目标软件项目。
[0111]
软件项目生成装置800可以通过预先构建的项目基础框架生成目标软件项目,由于可以针对项目基础框架进行功能升级和扩展,因此能够支持底层可控的功能升级和扩展;另外,由于预先构建多种不同版本的项目基础框架,使得生成的目标软件项目可以满足不同类型用户的开发需求,是一种行之有效的软件项目生成装置。
[0112]
在本公开的一种示例性实施方案中,软件项目生成装置还包括框架生成模块,用于确定项目基础框架的基本框架功能;获取与项目基础框架相关的关联代码,根据基本框架功能从关联代码中抽离与项目基础框架对应的框架代码;根据框架代码生成项目基础框架。
[0113]
在本公开的一种示例性实施方案中,框架生成模块包括框架生成单元,用于确定框架代码对应的代码功能;将具有第一代码功能的框架代码存储在第一基栈,以生成第一基础框架,并将第一基础框架的框架版本号确定为第一版本号;将具有第二代码功能的框架代码存储在第二基栈,以生成第二基础框架,并将第二基础框架的框架版本号确定为第二版本号。
[0114]
在本公开的一种示例性实施方案中,依赖包确定模块包括框架代码获取单元,用于根据框架版本号确定与项目基础框架对应的存储基栈;存储基栈包括第一基栈和第二基栈;从存储基栈中获取项目基础框架的框架代码。
[0115]
在本公开的一种示例性实施方案中,依赖包确定模块包括依赖包确定单元,用于对框架代码进行解析处理,以确定依赖包对应的依赖包调用信息;根据依赖包调用信息获取项目基础框架对应的依赖包。
[0116]
在本公开的一种示例性实施方案中,项目生成模块包括第一项目生成单元,用于如果项目启动类型为立即启动,则生成目标软件项目对应的项目生成指令;根据项目生成指令生成目标软件项目,并启动目标交互界面以进行项目交互操作。
[0117]
在本公开的一种示例性实施方案中,项目生成模块还包括第二项目生成单元,用
于如果项目启动类型为非立即启动,则进行针对目标软件项目的初始化处理;响应于目标软件项目的项目启动操作,启动目标软件项目。
[0118]
上述中各软件项目生成装置的虚拟模块的具体细节已经在对应的软件项目生成方法中进行了详细的描述,因此此处不再赘述。
[0119]
应当注意,尽管在上文详细描述中提及了软件项目生成装置的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0120]
此外,在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
[0121]
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施例、完全的软件实施例(包括固件、微代码等),或硬件和软件方面结合的实施例,这里可以统称为“电路”、“模块”或“系统”。
[0122]
下面参考图9来描述根据本发明的这种实施例的电子设备900。图9显示的电子设备900仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0123]
如图9所示,电子设备900以通用计算设备的形式表现。电子设备900的组件可以包括但不限于:上述至少一个处理单元910、上述至少一个存储单元920、连接不同系统组件(包括存储单元920和处理单元910)的总线930、显示单元940。
[0124]
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元910执行,使得所述处理单元910执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。
[0125]
存储单元920可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)921和/或高速缓存存储单元922,还可以进一步包括只读存储单元(rom)923。
[0126]
存储单元920可以包括具有一组(至少一个)程序模块925的程序/实用工具924,这样的程序模块925包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0127]
总线930可以表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
[0128]
电子设备900也可以与一个或多个外部设备970(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备900交互的设备通信,和/或与使得该电子设备900能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口950进行。并且,电子设备900还可以通过网络适配器960与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器960通过总线930与电子设备900的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备900使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0129]
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例
可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
[0130]
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。
[0131]
参考图10所示,描述了根据本发明的实施例的用于实现上述方法的程序产品1000,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0132]
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0133]
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0134]
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
[0135]
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0136]
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
[0137]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其
他实施例。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
[0138]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献