基于代码自动生成技术的小程序辅助开发系统设计与实现

2021-12-23 12:49彭淑燕刘思聪
微型电脑应用 2021年12期
关键词:字段引擎页面

彭淑燕, 刘思聪

(江苏经贸职业技术学院 智能工程技术学院,江苏 南京 210046)

0 引言

目前越来越多的行业都开始将小程序作为其主要的流量入口。小程序作为一种典型的轻应用,具有免安装、快速触达用户、用完即走等特点。作为最早提出的一种小程序,微信小程序截止到2019年底,已经积累了约500万个应用,累计使用人数已经超过了9亿人次。随着微信小程序的使用范围越来越广,越来越多的开发者加入到了小程序的设计与开发当中。但是由于微信小程序开发具有自身独特的体系架构,使得很多开发者需要重新学习相关的开发规范与语法。这样就导致很多开发者的开发成本上升,从而不利于小程序的推广与应用。

鉴于此,本文提出利用Java模板引擎并结合类反射技术来进行微信小程序代码的自动生成,从而可以大幅提高小程序的开发速度,缩短小程序的发布周期。首先通过分析小程序中的常用功能,来构建出若干功能类。然后利用模板引擎来加载相关的源码模板文件,最后依据不同的界面设计需求,利用反射技术来将相应的功能类配置信息加载至引擎模板中[1],并最终通过模板引擎来编译生成具体的小程序源码。

通过上述系统,可以快速地根据不同的业务需求来搭配不同的逻辑组件,进而来构建相应的微信小程序App。而且由于该系统定义了一系列的公共接口,第三方开发人员也可以根据相关的接口规范来进行二次开发[2]。

1 系统架构设计

本文所设计系统遵循MVC架构规范,对于系统的视图、控制、实体对象都进行了分层设计[3]。具体来说,该系统可由以下几个模块组成。

1.1 UI交互模块

该模块的作用主要是为用户提供一个可视化的图形交互界面,实现用户的交互操作以及对后端数据进行可视化渲染。该模块作为本系统的图形化交互窗口,一方面将后台数据以直观的方式呈现给用户,一方面也会将用户的操作指令及相关数据通过API数据接口传递至其它模块。具体的API数据接口格式如表1所示。

表1 API数据接口结构

1.2 响应控制模块

该模块的作用是对用户的操作进行响应。该模块可以调用模板引擎模块,通过类反射技术来生成相应的小程序代码。该模块主要接收UI交互界面所传递的用户数据。在获取到用户数据后,该模块首先需要对数据进行格式解析。首先需要从接口数据的Data字段中获得用户数据。需要注意的是,由于本系统允许用户传递空值数据(Null),因此响应控制模块需要先对用户数据进行非空判定(Is_Null)。当确定上述数据不为空时,才对用户数据进行格式解析。具体方法为首先对Data字段的值按@符进行分割,之后对获取到的每一个键值再按冒号进行分割,之后将冒号右侧的值作为最终的用户数据,并进行处理。当用户数据处理完毕后,如果没有任何错误异常信息出现,则该模块会对Status字段进行数据填充,具体值为200,同时对Msg字段赋值:“Success”。如果在上述过程中出现了异常错误信息,则终止整个响应流程,并为Status字段赋值为500,Msg字段赋值:“Fail”。其他情况,按照响应的代码进行填充。如果该用户操作不需要获取后台服务器数据,则Result字段不进行填充,直接按空值进行传输。否则,将相应的数据按照“Key1:Value1@Key2:Value2……”的形式进行填充。所有操作结束后,将上述API接口数据传输回UI交互模块当中。UI交互模块会自动解析上述API数据,并进行相应的界面渲染与响应。

1.3 对象操作模块

该模块主要对系统中的数据表进行对象关系映射(ORM),从而将对数据库的操作转变为对系统实例对象的操作[4]。上述3个模块之间存在着相互依赖关系。具体的系统架构设计如图1所示。

图1 系统架构设计图

2 系统技术实现

2.1 UI交互模块实现

本系统采用B/S结构,该架构模式具有系统平台依赖度低、部署灵活、能够实现系统功能热更新等优点。在UI交互模块中包含了所有的系统可视化页面,上述页面都是基于HTML,CSS以及VUE前端框架开发而成的。具体而言,在上述页面当中,HTML确定了页面的基本框架布局结构,利用DIV元素作为页面布局的框架模块,首先设置每个功能模块的空间位置。之后通过设置不同DIV元素的空间定位属性,来确定不同功能模块之间的空间相对位置。在确定了模块间的空间相对位置后,使用CSS样式来对页面整体结构进行外观美化。当静态页面搭建完成后,再基于VUE框架的模板功能(Template),将静态页面按功能模块的不同划分至不同的模板当中。当页面对后台数据进行渲染时,将上述功能模板按需进行组合,并最终与后台数据一起构成完整的动态渲染页面内容。具体过程如图2所示。

图2 UI交互模块实现原理图

2.2 响应控制模块实现

响应控制模块的实现主要基于Java语言的SpringBoot框架来实现。该模块的作用主要是用来响应前端用户请求,处理传输数据以及向前端页面传输后台数据。该模块中每一类用户请求都会被单独抽象为一个独立的Java类。每一类中都包含以下几个基本操作响应函数:(1)add;(2)update;(3)delete;(4)find。除此以外,每个响应类中,还包含若干特殊函数,用来响应用户的不同操作请求。每个用户响应类中都会添加SpringBoot的用户响应注解(RequestMapping)。通过该注解,可以将用户的操作与响应类中的相关函数关联起来,从而可以实现对用户操作的响应[7]。

当前端页面传递的数据被用户响应类获取后,会首先将上述数据保存至一个String类型的变量当中,之后利用split工具函数对Data字段中的数据按冒号进行解析,并将解析后的数据保存到一个临时数组变量当中。如果获取到的解析结果长度值小于2时,则判定当前用户没有向后台响应函数传递数据。反之,则从临时数组变量中获取第2个位置上的数据,该数据即为用户数据。获得用户数据后,继续利用split函数来按“@”符进行格式解析。解析后得到数据均被保存于临时数组变量当中,之后所有用户数据均以冒号为特征符号进行二次解析,并将解析后的数据传入响应的适配器类(Adaptive)中进行进一步的处理。如果用户数据需要存储至数据库时,则响应的适配器类调用后台对象操作模块中的相关方法来进行数据库操作。另一方面,如果用户数据需要结合模板引擎(Volicity)来生成相关的小程序代码时,响应控制模块也会调用模板引擎的相关方法,在类反射器的帮助下,向代码模板中填充相关的实例数据,并最终生成小程序代码[8]。生成的相关代码以压缩包的形式向用户提供。需要注意的是,当使用模板引擎进行代码生成时,需要首先确保用户传递的数据能够被正确的实例化,要点是用户数据必须含有完整路径的Java类名,否则用户数据无法完成实例化操作,最终会导致小程序代码生成失败。具体流程如图3所示。

图3 响应控制模块工作流程图

2.3 对象操作模块实现

该模块主要基于Spring Data JPA框架技术[5-6]来实现对象-关系映射(ORM)。在本系统中主要抽象出了12种代码模板对象,并且支持用户进行代码模板的自定义操作。具体的代码模板对象如表2所示。

表2 代码模板列表

上述模板对象,均通过JPA框架存储于系统数据库中。可以按需进行模块组合。

3 总结

小程序作为一种典型的轻应用,具有免安装、快速触达用户、用完即走等特点,使其应用范围越来越广,越来越多的开发者加入到了小程序的设计与开发当中。但是由于小程序开发具有自身独特的体系架构,而且目前各大公司均推出了自己的小程序平台,使得很多开发者需要重新学习相关的开发规范与语法。这样就导致很多开发者的开发成本上升,小程序应用的开发周期拉长,从而不利于小程序的推广与应用。本研究所提出的基于Java模板引擎并结合类反射技术来进行小程序代码的自动生成系统,可以大幅提高小程序的开发速度,缩短小程序的发布周期。经过一系列的实践检验,发现该系统能够稳定,高效地进行小程序的开发工作,达到了本研究的设计目的,性能稳定、高效。这也为以后的小程序开发提供了一种新的设计思路。

猜你喜欢
字段引擎页面
刷新生活的页面
图书馆中文图书编目外包数据质量控制分析
答案
新海珠,新引擎,新活力!
三生 三大引擎齐发力
蓝谷: “涉蓝”新引擎
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述
关于CNMARC的3--字段改革的必要性与可行性研究
Web安全问答(3)