CN113608726B - 代码生成方法、装置、电子设备及存储介质 - Google Patents
代码生成方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113608726B CN113608726B CN202110875342.8A CN202110875342A CN113608726B CN 113608726 B CN113608726 B CN 113608726B CN 202110875342 A CN202110875342 A CN 202110875342A CN 113608726 B CN113608726 B CN 113608726B
- Authority
- CN
- China
- Prior art keywords
- code
- page
- software
- menu
- route
- 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
Classifications
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种代码生成方法、装置、电子设备及存储介质,其中方法包括:基于软件项目的开发信息配置数据库;基于预设代码模板和Velocity模板引擎,以及所述数据库中的数据表,确定所述软件项目对应的代码。本发明提供的方法、装置、电子设备及存储介质,大大减少了代码编写量,减小了软件项目的研发难度,提高了软件项目的研发效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种代码生成方法、装置、电子设备及存储介质。
背景技术
随着计算机技术和移动互联网技术的发展,软件开发需求越来越多,迭代速度越来越快。一个软件应用可能需要维护Web端、Android端、iOS端等,需要维护平台过多,需要多种类型的开发人员。一个简单功能的改变需要很多开发人员来配合,使得软件项目的代码量大,研发难度大,研发效率低。
发明内容
本发明提供一种代码生成方法、装置、电子设备及存储介质,用于解决现有技术中的代码生成方法研发难度大,研发效率低的技术问题。
本发明提供一种代码生成方法,包括:
基于软件项目的开发信息配置数据库;
基于预设代码模板和Velocity模板引擎,以及所述数据库中的数据表,确定所述软件项目对应的代码。
根据本发明提供的代码生成方法,所述代码包括服务后端Java代码、Web端Vue代码和App端Dart代码。
根据本发明提供的代码生成方法,所述确定所述软件项目对应的代码,之后还包括:
基于用户的权限,确定所述权限对应的菜单页面;所述菜单页面包括菜单列表,以及与所述菜单列表对应的路由列表;
基于所述用户在所述菜单列表对于指定页面的选择动作,确定所述指定页面在路由列表中的跳转请求;
基于所述跳转请求中的字符串,以及每一页面的注解,跳转至所述软件项目对应的App端的指定页面;
其中,每一页面的注解包含每一页面对应的字符串。
根据本发明提供的代码生成方法,所述确定所述软件项目对应的代码,之后还包括:
获取跳转至所述软件项目对应的Web端的指定页面的路由请求;
若主路由中已添加所述路由请求,则直接跳转至所述指定页面;
若主路由中未添加所述路由请求,则基于服务后端生成的菜单和权限信息,创建动态路由跳转至所述指定页面,并将所述动态路由和权限信息保存至所述主路由。
根据本发明提供的代码生成方法,所述确定所述软件项目对应的代码,之后还包括:
基于业务逻辑,确定所述服务后端Java代码对应的多个注解;
将所述多个注解添加至所述服务后端Java代码中。
根据本发明提供的代码生成方法,所述服务后端是基于SpringBoot 2.x开发的,Web端是基于Vue 2.xt开发的,App端是基于Flutter开发的。
根据本发明提供的代码生成方法,所述确定所述软件项目对应的代码,之后还包括:
基于预设储存路径,对所述服务后端Java代码、所述Web端Vue代码和所述App端Dart代码进行储存。
本发明提供一种代码生成装置,包括:
配置单元,用于基于软件项目的开发信息配置数据库;
生成单元,用于基于预设代码模板和Velocity模板引擎,以及所述数据库中的数据表,确定所述软件项目对应的代码。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的代码生成方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的代码生成方法的步骤。
本发明提供的代码生成方法、装置、电子设备及存储介质,根据软件项目的开发信息配置数据库,根据数据库中的数据表,预设代码模板以及Velocity模板引擎,确定软件项目对应的服务后端Java代码、Web端Vue代码和App端Dart代码,生成的代码框架统一,开发人员可以对生成的代码进行修改,无需开发人员自己去搭建框架,大大减少了代码编写量,减小了软件项目的研发难度,提高了软件项目的研发效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的代码生成方法的流程示意图;
图2为本发明提供的后端控制App菜单路由的流程示意图之一;
图3为本发明提供的后端控制App菜单路由的流程示意图之二;
图4为本发明提供的Dart注解方法的流程示意图;
图5为本发明提供的Web端动态路由策略的流程示意图;
图6为本发明提供的Java端代码加载方法的流程示意图;
图7为本发明提供的代码生成核心逻辑的流程示意图;
图8为本发明提供的服务后端代码框架的流程示意图;
图9为本发明提供的Web端代码框架的流程示意图;
图10为本发明提供的App端代码框架的流程示意图;
图11为本发明提供的代码转换的流程示意图;
图12为本发明提供的代码生成装置的结构示意图;
图13为本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中软件开发过程比较复杂,需要配置多个开发人员来开发同一软件项目的不同客户端,代码开发量和代码维护量巨大。
图1为本发明提供的代码生成方法的流程示意图,如图1所示,该方法包括:
步骤110,基于软件项目的开发信息配置数据库。
具体地,本发明实施例中的软件项目为根据用户需求采用编程平台编写指定软件的项目。例如,软件项目可以为作业机械工作量统计平台、电动作业机械动力电池监控平台等。软件项目的开发信息为与编写该软件项目的程序相关的信息。例如,该软件项目的字段信息等。数据库用于存储该软件项目开发所用的各类数据。
步骤120,基于预设代码模板和Velocity模板引擎,以及所述数据库中的数据表,确定所述软件项目对应的代码。
具体地,该数据库以表为组织单位存储数据。根据表中的字段所规定的数据类型,向其中填入数据,表中每一行的信息为记录。数据表包括了数据库中的表名、表中的字段和表的记录。
预设代码模板为预先根据用户的需求编写的代码模板。例如,可以包括Java代码模板、Vue代码模板和Dart代码模板等。
Velocity是一个基于Java的模板引擎,在现今的软件开发过程中,软件开发人员将更多的精力投入在了重复的相似劳动中。特别是在如今特别流行的MVC架构模式中,软件各个层次的功能更加独立,同时代码的相似度也更加高。所以需要寻找一种来减少软件开发人员重复劳动的方法,让程序员将更多的精力放在业务逻辑以及其他更加具有创造力的工作上。Velocity这个模板引擎就可以在一定程度上解决这个问题,可以按模板生成对应代码。
可以确定Java代码模板、Vue代码模板和Dart代码模板,然后从数据库中获取数据表,采用Velocity模板引擎,即可生成软件项目对应的服务后端Java代码、Web端Vue代码和App端Dart代码。
本发明实施例提供的代码生成方法,根据软件项目的开发信息配置数据库,根据数据库中的数据表,预设代码模板以及Velocity模板引擎,确定软件项目对应的代码,生成的代码框架统一,开发人员可以对生成的代码进行修改,无需开发人员自己去搭建框架,大大减少了代码编写量,减小了软件项目的研发难度,提高了软件项目的研发效率。
基于上述实施例,代码包括服务后端Java代码、Web端Vue代码和App端Dart代码。
具体地,对于本发明实施例中的软件项目,其服务后端可以采用Java代码编写,前端包括网页Web端和移动互联网App端,分别采用Vue代码和Dart代码。Java是面向对象的编程语言,主要负责后端数据的处理的工作。Vue语言是一种开源前端框架,用于创建用户界面,能够更好地组织与简化Web前端。Dart语言是面向对象的、类定义的、单继承的语言,通常被用于移动应用等领域的开发。
基于上述任一实施例,步骤120之后还包括:
基于用户的权限,确定权限对应的菜单页面;菜单页面包括菜单列表,以及与菜单列表对应的路由列表;
基于用户在菜单列表对于指定页面的选择动作,确定指定页面在路由列表中的跳转请求;
基于跳转请求中的字符串,以及每一页面的注解,跳转至软件项目对应的App端的指定页面;
其中,每一页面的注解包含每一页面对应的字符串。
具体地,动态路由实现方法是从后端请求路由信息,然后转化生成路由信息,根据路由信息跳转至指定页面并进行显示的过程。
软件项目对应的App端的指定页面的跳转,可以根据用户的权限进行控制。此处的权限可以为用户的访问权限或者控制权限。
图2为本发明提供的后端控制App菜单路由的流程示意图之一,如图2所示,当用户在移动端启动App时,移动端App通过网络与服务后端通信,通过移动端App,服务后端可以获取用户的身份,以及用户身份对应的权限,并根据表结构生成一个json文件,json文件包括菜单信息。
移动端App根据json文件生成菜单页面。菜单页面包括菜单列表,以及与菜单列表对应的路由列表。移动端App通过获取用户在菜单列表对于指定页面的选择动作,例如点击或者长按等,确定指定页面在路由列表中的跳转请求。
图3为本发明提供的后端控制App菜单路由的流程示意图之二,如图3所示,根据指定页面在路由列表中的跳转请求,以及每一页面的注解,跳转至指定页面。每一页面的注解包含每一页面对应的字符串。
例如,每一页面只要添加一个注解,移动端App启动时会扫描这个注解。因为移动端App中有source-gen模块会生成一个键值对A,key就是注解里面的字符串,value即是页面。移动端App中Build_runner模块会自动根据注解生成可运行代码B。当其他页面需要调用这个页面,只需要一行代码并传入注解里面的字符串,即可运行代码B并在键值对A中找到指定页面,跳转到指定页面。
移动端App动态路由方案,即是后端可以根据权限控制App显示哪些菜单,App新增功能页面只需要修改后端数据和拖入App新功能页面代码,即达到目标效果。App动态路由方案核心是通过Dart注解和嵌套引用完成路由的完全解耦。
Dart注解,即是项目初始化时,将代码文件扫描,将注解与对应的代码建立关系。图4为本发明提供的Dart注解方法的流程示意图,如图4所示,该方法包括文件扫描、语法分析、注解提取、注解筛选、信息收集和映射表生成等步骤。
嵌套引用,是将代码所需要的引用,引用到一个单独引用文件里,例如index.dart,生成的代码只需要引用一个文件,可以将页面所需要引用库都放到这个文件,页面只需要引用index.dart即可。
基于上述任一实施例,步骤120之后还包括:
获取跳转至软件项目对应的Web端的指定页面的路由请求;
若主路由中已添加路由请求,则直接跳转至指定页面;
若主路由中未添加路由请求,则基于服务后端生成的菜单和权限信息,创建动态路由跳转至指定页面,并将动态路由和权限信息保存至主路由。
具体地,Web端动态路由方案即是后端可以根据权限控制Web显示哪些菜单,Web新增功能页面只需要修改后端数据和拖入app新功能页面代码,即达到目标效果。Web的实现方式主要通过Vue-route和全局引用来完成。
Vue-route可以支持字符串的路由导航,本身就相当于数组,后端需要控制Web端路由,即Web端将后端数据更新到路由树组即可。但是Web端路由有两层甚至是更多层,菜单之上还有菜单目录,即Web端路由是个两维数组。
全局引用即将Web端基础组件挂载全局,每个页面可以调用http接口,可以用类似于“$http”全局变量进行调用。
Web端的动态路由是基于Vue-router开发的,Vue-router路由就是通过维护一个路由数组来达到的。路由数据分为两部分,一个是预先确定的静态路由,主要是登录页面、首页、404页面等,一个是通过从后端接口动态增加route,并且因为有三级页面,需要递归调用多次接口,将指定路由添加到指定目录。
图5为本发明提供的Web端动态路由策略的流程示意图,如图5所示,Web端的指定页面进行跳转时,可以先获取跳转至指定页面的路由请求。然后在主路由中确定该路由请求是否已添加。若主路由中已添加路由请求,则直接根据该路由请求跳转至指定页面;若主路由中未添加路由请求,则根据服务后端生成的菜单和权限信息,创建动态路由跳转至指定页面,并将动态路由和权限信息保存至主路由。
基于上述任一实施例,步骤120之后还包括:
基于业务逻辑,确定服务后端Java代码对应的多个注解;
将多个注解添加至服务后端Java代码中。
具体地,图6为本发明提供的Java端代码加载方法的流程示意图,如图6所示,服务后端的Java代码可以采用SpringBoot框架。根据业务逻辑分为了多个注解。例如@Autowired为单例,@Mapper为数据库逻辑层,@Service为代码服务层,@RestController为控制器接口层,@Configuration为配置注解。代码只要添加这些注解,项目运行就会将代码自动加载到对应模块。
基于上述任一实施例,服务后端是基于SpringBoot 2.x开发的,Web端是基于Vue2.xt开发的,App端是基于Flutter开发的。
具体地,SpringBoot是Java平台上的一种开源应用框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
Vue是一套用于构建用户界面的渐进式JavaScript框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。
Flutter是一个开源的,用于快速构建iOS和Android应用的跨平台框架。Flutter使用名为Dart的编译型编程语言,该语言可以提前编译多个平台的本地代码。与其他移动软件开发工具包(SDK)不同的是,Flutter提供了无需使用JavaScript桥层的响应式视图,有更快的开发周期,易于实现代码分享。
基于上述任一实施例,数据表包括表主键、表名、表注释、字段名、字段注释、字段类型和字段额外信息。
具体地,根据软件开发需要,数据表可以具体包括表主键、表名、表注释、字段名、字段注释、字段类型和字段额外信息。
其中,表主键、表名、表注释为表的基本属性,字段名、字段注释、字段类型和字段额外信息为表中字段的基本内容。
基于上述任一实施例,步骤120之后还包括:
基于预设储存路径,对服务后端Java代码、Web端Vue代码和App端Dart代码进行储存。
具体地,可以在模板生成引擎中输入预设储存路径,对服务后端Java代码、Web端Vue代码和App端Dart代码进行储存。
图7为本发明提供的代码生成核心逻辑的流程示意图,如图7所示,代码生成即读取数据库的表结构,解析成数据表,根据代码模板生成指定代码。根据App端、Web端的动态路由解决方案和Java端代码加载方案,可以自动将代码集成到项目里面,并且代码不需要修改,而且会在App端和Web端生成菜单列表,用户点击菜单即可进入生成的页面。
图8为本发明提供的服务后端代码框架的流程示意图,如图8所示,服务后端Java代码运行主要靠SpringBoot框架的自动注解功能,各类代码通过注解,自动加载到指定模块。最终Java代码会生成带权限,带用户权限的Web的API(Application ProgrammingInterface,应用程序接口)和App的API。
图9为本发明提供的Web端代码框架的流程示意图,如图9所示,Web端初始化会自动调用菜单接口,并生成路由列表,将生成的代码转换成菜单和页面融入Web平台中。
图10为本发明提供的App端代码框架的流程示意图,如图10所示,App启动时,会自动加载App的json文件,通过json文件生成应用页面的菜单和两条新的页面路由,从而将生成的代码变成了App上的一个新的菜单和两个新的页面。
基于上述任一实施例,图11为本发明提供的代码转换的流程示意图,如图11所示,将数据表转换为代码按照以下步骤进行:
1、根据数据表,围绕数据表,确定开发权限,注释,接口文档等功能,开发页面列表,录入页面,权限控制,相关组件库等等;
2、整理项目规则,根据表名,表注释,字段名,字段注释等指定一套转换成代码权限、接口、注释、组件等转换规则;
3、在代码里提炼关键字,开始编写代码模板;
4、将转换规则,数据表和代码数据类型转换规则,时间转换规则等编写成对应方法;
5、根据数据表将数据表里面的关键信息提炼出来,按照规则转换,填入代码模板,生成代码。
用户操作步骤只需要四步:
1、配置数据库,运行项目;
2、进入管理页面;
3、选取数据表生成代码;
4、下载代码,将代码拖入指定目录。
本发明实施例提供的代码生成方法,可以一键生成服务后端Java代码,Web端Vue代码,app端dart代码,并生成基础的增删改查等功能,并可以统一配置权限。生成的代码可以统一框架,逻辑简单的项目,生成的代码可以减少至少70%以上的代码。可以大大减少开发人员的研发难度,普通开发者可以根据生成的代码进行修改,不需要自己去搭建框架。
Java端采用SpringBoot框架,项目启动会根据注解自动加载所有代码,不用考虑代码之间的相互引用。Web端采用动态路由的框架,并用Vue的main.js的全局引入方式引入基础类,将代码之间的耦合降到极低,不需要各种类引用。App端采用flutter开发,也开发了一套动态路由框架,采用嵌套引入技术,代码不需要多余配置,按代码目录拖入即可使用。根据动态路由框架,后端可以按app和Web登录的用户权限控制展示对应权限页面。
基于上述任一实施例,图12为本发明提供的代码生成装置的结构示意图,如图12所示,该装置包括:
配置单元1210,用于基于软件项目的开发信息配置数据库;
生成单元1220,用于基于预设代码模板和Velocity模板引擎,以及数据库中的数据表,确定软件项目对应的代码。
本发明实施例提供的代码生成装置,根据软件项目的开发信息配置数据库,根据数据库中的数据表,预设代码模板以及Velocity模板引擎,确定软件项目对应的服务后端Java代码、Web端Vue代码和App端Dart代码,生成的代码框架统一,开发人员可以对生成的代码进行修改,无需开发人员自己去搭建框架,大大减少了代码编写量,减小了软件项目的研发难度,提高了软件项目的研发效率。
基于上述任一实施例,代码包括服务后端Java代码、Web端Vue代码和App端Dart代码。
基于上述任一实施例,包括:
App动态路由单元,用于基于用户的权限,确定权限对应的菜单页面;菜单页面包括菜单列表,以及与菜单列表对应的路由列表;基于用户在菜单列表对于指定页面的选择动作,确定指定页面在路由列表中的跳转请求;基于跳转请求中的字符串,以及每一页面的注解,跳转至指定页面;其中,每一页面的注解包含每一页面对应的字符串。
基于上述任一实施例,还包括:
Web动态路由单元,用于获取跳转至指定页面的路由请求;若主路由中已添加路由请求,则直接跳转至指定页面;若主路由中未添加路由请求,则基于服务后端生成的菜单和权限信息,创建动态路由跳转至指定页面,并将动态路由和权限信息保存至主路由。
基于上述任一实施例,还包括:
注解单元,用于基于业务逻辑,确定服务后端Java代码对应的多个注解;将多个注解添加至服务后端Java代码中。
基于上述任一实施例,服务后端是基于SpringBoot 2.x开发的,Web端是基于Vue2.xt开发的,App端是基于Flutter开发的。
基于上述任一实施例,还包括:
储存单元,用于基于预设储存路径,对服务后端Java代码、Web端Vue代码和App端Dart代码进行储存。
基于上述任一实施例,图13为本发明提供的电子设备的结构示意图,如图13所示,该电子设备可以包括:处理器(Processor)1310、通信接口(Communications Interface)1320、存储器(Memory)1330和通信总线(Communications Bus)1340,其中,处理器1310,通信接口1320,存储器1330通过通信总线1340完成相互间的通信。处理器1310可以调用存储器1330中的逻辑命令,以执行如下方法:
基于软件项目的开发信息配置数据库;基于预设代码模板和Velocity模板引擎,以及数据库中的数据表,确定软件项目对应的代码。
此外,上述的存储器1330中的逻辑命令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例提供的电子设备中的处理器可以调用存储器中的逻辑指令,实现上述方法,其具体的实施方式与前述方法实施方式一致,且可以达到相同的有益效果,此处不再赘述。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:
基于软件项目的开发信息配置数据库;基于预设代码模板和Velocity模板引擎,以及数据库中的数据表,确定软件项目对应的代码。
本发明实施例提供的非暂态计算机可读存储介质上存储的计算机程序被执行时,实现上述方法,其具体的实施方式与前述方法实施方式一致,且可以达到相同的有益效果,此处不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种代码生成方法,其特征在于,包括:
基于软件项目的开发信息配置数据库;
基于预设代码模板和Velocity模板引擎,以及所述数据库中的数据表,确定所述软件项目对应的代码;
其中,所述预设代码模板包括Java代码模板、Vue代码模板和Dart代码模板;所述代码包括服务后端Java代码、Web端Vue代码和App端Dart代码;
所述数据表包括所述数据库中的表名、表中的字段和表的记录;
基于用户的权限,确定所述权限对应的菜单页面;所述菜单页面包括菜单列表,以及与所述菜单列表对应的路由列表;
基于所述用户在所述菜单列表对于指定页面的选择动作,确定所述指定页面在路由列表中的跳转请求;
基于所述跳转请求中的字符串,以及每一页面的注解,跳转至所述软件项目对应的App端的指定页面;
其中,每一页面的注解包含每一页面对应的字符串;基于Dart注解和嵌套引用完成路由的完全解耦。
2.根据权利要求1所述的代码生成方法,其特征在于,所述确定所述软件项目对应的代码,之后还包括:
获取跳转至所述软件项目对应的Web端的指定页面的路由请求;
若主路由中已添加所述路由请求,则直接跳转至所述指定页面;
若主路由中未添加所述路由请求,则基于服务后端生成的菜单和权限信息,创建动态路由跳转至所述指定页面,并将所述动态路由和权限信息保存至所述主路由。
3.根据权利要求1所述的代码生成方法,其特征在于,所述确定所述软件项目对应的代码,之后还包括:
基于业务逻辑,确定所述服务后端Java代码对应的多个注解;
将所述多个注解添加至所述服务后端Java代码中。
4.根据权利要求1至3任一项所述的代码生成方法,其特征在于,所述服务后端是基于SpringBoot 2.x开发的,Web端是基于Vue2.xt开发的,App端是基于Flutter开发的。
5.根据权利要求1至3任一项所述的代码生成方法,其特征在于,所述确定所述软件项目对应的代码,之后还包括:
基于预设储存路径,对所述服务后端Java代码、所述Web端Vue代码和所述App端Dart代码进行储存。
6.一种代码生成装置,其特征在于,包括:
配置单元,用于基于软件项目的开发信息配置数据库;
生成单元,用于基于预设代码模板和Velocity模板引擎,以及所述数据库中的数据表,确定所述软件项目对应的代码;其中,所述预设代码模板包括Java代码模板、Vue代码模板和Dart代码模板;所述代码包括服务后端Java代码、Web端Vue代码和App端Dart代码;所述数据表包括所述数据库中的表名、表中的字段和表的记录;
App动态路由单元,用于基于用户的权限,确定所述权限对应的菜单页面;所述菜单页面包括菜单列表,以及与所述菜单列表对应的路由列表;基于所述用户在所述菜单列表对于指定页面的选择动作,确定所述指定页面在路由列表中的跳转请求;基于所述跳转请求中的字符串,以及每一页面的注解,跳转至指定页面;其中,每一页面的注解包含每一页面对应的字符串;基于Dart注解和嵌套引用完成路由的完全解耦。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5中任一项所述的代码生成方法的步骤。
8.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的代码生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110875342.8A CN113608726B (zh) | 2021-07-30 | 2021-07-30 | 代码生成方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110875342.8A CN113608726B (zh) | 2021-07-30 | 2021-07-30 | 代码生成方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113608726A CN113608726A (zh) | 2021-11-05 |
CN113608726B true CN113608726B (zh) | 2023-08-11 |
Family
ID=78338900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110875342.8A Active CN113608726B (zh) | 2021-07-30 | 2021-07-30 | 代码生成方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113608726B (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7296033B1 (en) * | 2000-07-20 | 2007-11-13 | Auctionhelper.Com | Method for promoting selling of seller items on an online auction site |
WO2012020906A1 (ko) * | 2010-08-13 | 2012-02-16 | 동국대학교 산학협력단 | 뇌파를 이용한 인지 훈련 응용 프로그램 생성 장치, 방법 및 그 기록 매체 |
CN105487864A (zh) * | 2015-11-26 | 2016-04-13 | 北京京东尚科信息技术有限公司 | 代码自动生成的方法和装置 |
CN106528165A (zh) * | 2016-11-11 | 2017-03-22 | 深圳中兴网信科技有限公司 | 代码生成方法及代码生成系统 |
CN109032662A (zh) * | 2018-06-19 | 2018-12-18 | 上海陆家嘴国际金融资产交易市场股份有限公司 | 代码文件生成方法、装置、计算机设备和存储介质 |
CN109710238A (zh) * | 2018-12-20 | 2019-05-03 | 国云科技股份有限公司 | 一种基于Spring Cloud的代码生成方法 |
CN110032369A (zh) * | 2019-04-24 | 2019-07-19 | 成都市映潮科技股份有限公司 | 一种代码自动生成方法、装置及介质 |
CN110221872A (zh) * | 2019-04-22 | 2019-09-10 | 五八有限公司 | 页面跳转方法、装置、电子设备和存储介质 |
CN110262797A (zh) * | 2019-06-10 | 2019-09-20 | 杭州米络星科技(集团)有限公司 | 一种应用模块化及路由跳转方法 |
CN110308900A (zh) * | 2019-06-27 | 2019-10-08 | 广州华多网络科技有限公司 | 页面路由文档的生成方法、装置、计算机设备及存储介质 |
CN110489106A (zh) * | 2019-07-22 | 2019-11-22 | 北京字节跳动网络技术有限公司 | 一种项目初始化代码的生成方法、装置、介质和电子设备 |
CN110727438A (zh) * | 2019-09-11 | 2020-01-24 | 宝付网络科技(上海)有限公司 | 基于SpringBoot的web系统自动生成工具 |
CN110764775A (zh) * | 2019-09-06 | 2020-02-07 | 平安普惠企业管理有限公司 | 一种应用程序整合的方法、装置、存储介质和服务器 |
CN110968230A (zh) * | 2019-12-05 | 2020-04-07 | 上海风秩科技有限公司 | 一种控制控件的显示方法、显示装置及可读存储介质 |
CN111061475A (zh) * | 2019-12-13 | 2020-04-24 | 中国南方电网有限责任公司 | 软件代码生成方法、装置、计算机设备和存储介质 |
CN111488095A (zh) * | 2020-04-07 | 2020-08-04 | 中国人民财产保险股份有限公司 | 一种用户登录管理方法及装置 |
-
2021
- 2021-07-30 CN CN202110875342.8A patent/CN113608726B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7296033B1 (en) * | 2000-07-20 | 2007-11-13 | Auctionhelper.Com | Method for promoting selling of seller items on an online auction site |
WO2012020906A1 (ko) * | 2010-08-13 | 2012-02-16 | 동국대학교 산학협력단 | 뇌파를 이용한 인지 훈련 응용 프로그램 생성 장치, 방법 및 그 기록 매체 |
CN105487864A (zh) * | 2015-11-26 | 2016-04-13 | 北京京东尚科信息技术有限公司 | 代码自动生成的方法和装置 |
CN106528165A (zh) * | 2016-11-11 | 2017-03-22 | 深圳中兴网信科技有限公司 | 代码生成方法及代码生成系统 |
CN109032662A (zh) * | 2018-06-19 | 2018-12-18 | 上海陆家嘴国际金融资产交易市场股份有限公司 | 代码文件生成方法、装置、计算机设备和存储介质 |
CN109710238A (zh) * | 2018-12-20 | 2019-05-03 | 国云科技股份有限公司 | 一种基于Spring Cloud的代码生成方法 |
CN110221872A (zh) * | 2019-04-22 | 2019-09-10 | 五八有限公司 | 页面跳转方法、装置、电子设备和存储介质 |
CN110032369A (zh) * | 2019-04-24 | 2019-07-19 | 成都市映潮科技股份有限公司 | 一种代码自动生成方法、装置及介质 |
CN110262797A (zh) * | 2019-06-10 | 2019-09-20 | 杭州米络星科技(集团)有限公司 | 一种应用模块化及路由跳转方法 |
CN110308900A (zh) * | 2019-06-27 | 2019-10-08 | 广州华多网络科技有限公司 | 页面路由文档的生成方法、装置、计算机设备及存储介质 |
CN110489106A (zh) * | 2019-07-22 | 2019-11-22 | 北京字节跳动网络技术有限公司 | 一种项目初始化代码的生成方法、装置、介质和电子设备 |
CN110764775A (zh) * | 2019-09-06 | 2020-02-07 | 平安普惠企业管理有限公司 | 一种应用程序整合的方法、装置、存储介质和服务器 |
CN110727438A (zh) * | 2019-09-11 | 2020-01-24 | 宝付网络科技(上海)有限公司 | 基于SpringBoot的web系统自动生成工具 |
CN110968230A (zh) * | 2019-12-05 | 2020-04-07 | 上海风秩科技有限公司 | 一种控制控件的显示方法、显示装置及可读存储介质 |
CN111061475A (zh) * | 2019-12-13 | 2020-04-24 | 中国南方电网有限责任公司 | 软件代码生成方法、装置、计算机设备和存储介质 |
CN111488095A (zh) * | 2020-04-07 | 2020-08-04 | 中国人民财产保险股份有限公司 | 一种用户登录管理方法及装置 |
Non-Patent Citations (1)
Title |
---|
一种基于Velocity的代码自动生成技术研究;孔得雨 等;《计算机应用与软件》;第31卷(第10期);第20-23,33页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113608726A (zh) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Saks | JavaScript Frameworks: Angular vs React vs Vue. | |
CA2390440C (en) | System and method for multiple level architecture by use of abstract application notation | |
Jazayeri | Some trends in web application development | |
Boduch et al. | React and React Native: A complete hands-on guide to modern web and mobile development with React. js | |
KR20050039551A (ko) | 컴퓨터 플랫폼용 프로그래밍 인터페이스 | |
CN104111826A (zh) | 一种软件项目开发方法及装置 | |
US20120110444A1 (en) | Help Document Animated Visualization | |
US20120166977A1 (en) | User programming access to data model in user interface design | |
Del Sole | Microsoft computer vision APIs distilled: Getting started with cognitive services | |
CN116560683A (zh) | 软件更新方法、装置、设备及存储介质 | |
KR101552914B1 (ko) | 웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체 | |
CN115113850A (zh) | 一种跨平台应用的构建、运行方法、服务器、终端和系统 | |
Nagel | Professional c# 6 and. net core 1.0 | |
US10031749B2 (en) | Creation of a help file | |
Freeman | Pro react 16 | |
Del Sole | Microsoft computer vision apis distilled | |
CN113608726B (zh) | 代码生成方法、装置、电子设备及存储介质 | |
CN113342399B (zh) | 应用项目的结构配置方法、装置及可读存储介质 | |
CN112632436A (zh) | 一种网页显示方法、装置、电子设备及存储介质 | |
Bazelli et al. | WL++: a framework to build cross-platform mobile applications and RESTful back-ends | |
Yi et al. | Design and Implementation of Music Web Application based on Vue and Spring Boot | |
Gjesdal | A Modular Integrated Development Environment for Coloured Petri Net Models | |
US20230132877A1 (en) | Displaying multiple representations of system management operations in a user interface | |
Devedžić et al. | Clarifying the meta | |
Lv et al. | Implementation of Application Asset Analysis and Management Tool Based on Zowe |
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 |