发明内容
本公开实施例至少提供一种代码生成方法、装置、计算机设备及存储介质。
第一方面,本公开实施例提供了一种代码生成方法,包括:
获取待接入目标前端框架的网页应用对应的组件配置对象;所述组件配置对象包括组件样式模板和组件状态模板;
利用预先开发的样式兼容插件,对所述组件样式模板进行信息配置,得到与所述目标前端框架适配的组件样式信息;
基于预先开发的面向各前端框架的接口分支代码以及所述目标前端框架的标识信息,确定与所述目标前端框架的标识信息匹配的目标接口分支代码,并基于针对每个接口分支代码预先设置的第一组件状态信息以及所述目标接口分支代码,对所述组件状态模板进行信息配置,得到与所述目标前端框架适配的第二组件状态信息;
利用编译构建脚本对所述组件样式信息和所述第二组件状态信息进行整合,得到与所述目标接口分支代码映射的组件代码。
一种可选的实施方式中,利用预先开发的样式兼容插件,对所述组件样式模板进行信息配置,得到与所述目标前端框架适配的组件样式信息,包括:
获取对所述样式组件模板进行自定义配置和/或预先配置得到的初始样式信息;
利用预先开发的样式兼容插件,对所述初始样式信息进行样式规则名称和样式规则取值转换,得到与所述目标前端框架匹配的组件样式信息。
一种可选的实施方式中,基于针对每个接口分支代码预先设置的前端框架的第一组件状态信息以及所述目标接口分支代码,对所述组件状态模板进行信息配置,得到与所述目标前端框架适配的第二组件状态信息,包括:
基于针对每个接口分支代码预先设置的前端框架的第一组件状态信息以及所述目标接口分支代码,确定所述目标接口分支代码对应的目标组件状态信息;
利用所述目标组件状态信息,对所述组件状态模板进行信息配置,得到与所述目标前端框架适配的第二组件状态信息。
一种可选的实施方式中,基于预先开发的面向各前端框架的接口分支代码以及所述目标前端框架的标识信息,确定与所述目标前端框架的标识信息匹配的目标接口分支代码之后,所述方法还包括:
从所述预先开发的面向各前端框架的接口分支代码中,删除除所述目标接口分支代码以外的其他接口分支代码;
基于针对每个接口分支代码预先设置的第一组件状态信息以及所述目标接口分支代码,对所述组件状态模板进行信息配置,得到与所述目标前端框架适配的第二组件状态信息,包括:
基于针对所述目标接口分支代码预先设置的第一组件状态信息以及所述目标接口分支代码,对所述组件状态模板进行信息配置,得到与所述目标前端框架适配的第二组件状态信息。
一种可选的实施方式中,在得到所述与所述目标应用程序接口映射的组件代码之后,所述方法还包括:
调用所述目标应用程序接口,运行所述组件代码,对所述目标组件的内部状态参数进行更新。
一种可选的实施方式中,获取待接入目标前端框架的网页应用对应的组件配置对象,包括:
利用项目脚手架创建与目标前端框架对应的项目模板;
获取所述项目模板中配置的待接入目标前端框架的网页应用对应的组件配置对象。
一种可选的实施方式中,利用编译构建脚本对所述组件样式信息和所述目标组件状态信息进行整合,得到与所述目标接口分支代码映射的组件代码,包括:
获取针对所述目标前端框架中的各个组件进行自定义配置得到的组件视图信息;
利用编译构建脚本对所述组件样式信息、所述第二组件状态信息以及所述组件视图信息进行整合,得到与所述目标接口分支代码映射的组件代码。
第二方面,本公开实施例还提供一种代码生成装置,包括:
获取模块,用于获取待接入目标前端框架的网页应用对应的组件配置对象;所述组件配置对象包括组件样式模板和组件状态模板;
第一配置模块,用于利用预先开发的样式兼容插件,对所述组件样式模板进行信息配置,得到与所述目标前端框架适配的组件样式信息;
第二配置模块,用于基于预先开发的面向各前端框架的接口分支代码以及所述目标前端框架的标识信息,确定与所述目标前端框架的标识信息匹配的目标接口分支代码,并基于针对每个接口分支代码预先设置的第一组件状态信息以及所述目标接口分支代码,对所述组件状态模板进行信息配置,得到与所述目标前端框架适配的第二组件状态信息;
整合模块,用于利用编译构建脚本对所述组件样式信息和所述第二组件状态信息进行整合,得到与所述目标应用程序接口映射的组件代码。
第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本公开实施例提供的代码生成方法,预先开发的样式兼容插件可以兼容对各个前端框架的样式规则转换,利用预先开发的样式兼容插件对组件样式模板进行信息配置,可以得到适配于目标前端框架的组件样式信息;通过将面向各个前端框架的接口分支代码集成起来,利用预先开发的面向各前端框架的接口分支代码以及目标前端框架的标识信息,可以得到与目标前端框架的标识信息匹配的目标接口分支代码,进而根据针对每个接口分支代码预先设置的第一组件状态信息,可以得到适配于目标前端框架的第二组件状态信息,因此,针对任何前端框架,利用上述样式兼容插件和接口分支代码,可以得到接入到任何前端框架的组件代码,使用较高兼容性的样式兼容插件以及预先集成的接口分支代码,可以减少代码的开发成本,从而提高组件代码的生成效率。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
在网页应用开发工程中,通常利用前端框架进行网页设计。目前被广泛使用的前端框架有很多种,例如Vue、React等。
不同前端框架之间在编程语言、配置、运行方式等方面是存在差异的,为了实现开发的组件(即软件开发工具包)能够接入到各个前端框架中,通常有两种解决方案:一种是通过开发代码转换工具实现组件在不同前端框架之间的代码转换,但是代码转换工具通常是定向转换的,因此不同前端框架之间需要开发多套代码转换工具;另一种是提升组件的兼容性,但是这种方式需要额外的开发成本才能实现组件与前端框架内的数据通信。上述两种解决方案的开发成本较高。
基于此,本公开实施例提供的代码生成方法,预先开发的样式兼容插件可以兼容对各个前端框架的样式规则转换,利用预先开发的样式兼容插件对组件样式模板进行信息配置,可以得到适配于目标前端框架的组件样式信息;通过将面向各个前端框架的接口分支代码集成起来,利用预先开发的面向各前端框架的接口分支代码以及目标前端框架的标识信息,可以得到与目标前端框架的标识信息匹配的目标接口分支代码,进而根据针对每个接口分支代码预先设置的第一组件状态信息,可以得到适配于目标前端框架的第二组件状态信息,因此,针对任何前端框架,利用上述样式兼容插件和接口分支代码,可以得到接入到任何前端框架的组件代码,使用较高兼容性的样式兼容插件以及预先集成的接口分支代码,可以减少代码的开发成本,从而提高组件代码的生成效率。
针对以上方案所存在的缺陷以及解决方案,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种代码生成方法进行详细介绍,本公开实施例所提供的代码生成方法的执行主体一般为具有一定计算能力的计算机设备。
前端框架中封装了可以简化网页设计的功能,例如,对超文本标记语言的文档操作、各种控件(按钮、表单等)功能,通过前端框架可以开发出在本公开实施例中,是使用预先开发的脚手架工具生成可以接入到前端框架的网页应用的软件开发工具包(SDK),即组件代码。
下面将具体介绍使用预先开发的项目脚手架工具生成代码的过程。
参见图1所示,为本公开实施例提供的代码生成方法的流程图,所述方法包括S101~S104,其中:
S101:获取待接入目标前端框架的网页应用对应的组件配置对象;所述组件配置对象包括组件样式模板和组件状态模板。
目标前端框架可以是基于Javascript语言编写的,可用于扩展Javascript脚本语言或层叠样式表(Cascading Style Sheets,CSS)或超文本标记语言(Hyper Text MarkupLanguage,HTML)的编写方式,例如Vue、React等。
这里,如图2所示,可以利用预先开发好的项目脚手架工具创建与目标前端框架对应的项目模板,具体地,可以利用项目脚手架工具从远端服务器获取一个项目模板到本地,这个项目模板可以是一个固定的目录结构,里面包括一些有默认值的配置信息,这里获取到的项目模板中可以包括组件样式模板、组件状态模板、组件视图模板和编译构建脚本。
其中,组件样式模板可以为组件的样式文件目录,组件样式模板中可以包括预先配置的初始样式信息,这里的初始样式信息可以是less语言格式的。开发人员可以对初始样式信息进行编辑,得到自定义配置的初始样式信息。组件样式模板中的初始样式信息(预先配置的初始样式信息和/或自定义配置的初始样式信息)可以经样式兼容插件进行样式规则转换,得到符合各个前端框架的样式规范的、css语言格式的的样式信息。
组件状态模板可以为组件的逻辑文件目录,组件状态模板中可以预先设置一个Javascript脚本。开发人员可以使用Javascript脚本定义所有组件内部的状态处理逻辑。
组件视图模板可以为组件的视图文件目录,组件视图模板中可以预先设置有各个前端框架对应的视图模板文件,例如,React前端框架对应.jsx文件,vue前端框架对应.vue文件,小程序(微信标准/字节标准)对应.wxml文件。组件视图模板可以用于定义各个组件的层级关系,主要包括目标前端框架中的组件、子组件之间的层级关系。
编译构建脚本可以为预设的编译构建脚本程序,通过对各类信息(组件样式信息、组件状态信息等)进行整合,构建组件代码。
在本公开实施例中,还包括预先开发的应用程序API接口库、预先开发的样式兼容插件。其中,API接口库中包括面向各前端框架的接口分支代码。
其中,在项目脚手架的开发阶段,面向各前端框架的接口分支代码中可以分别传入组件状态信息,用于进行组件状态信息的配置和更新。这里,各个接口分支代码中传入了对应各个前端框架的组件状态信息,即后文中提及的第一组件状态信息。在项目脚手架的编译阶段,可以根据输入的目标前端框架的标识信息(例如名称),删除目标前端框架对应的接口分支代码以外的其他接口分支代码,仅保留目标前端框架对应的接口分支代码。在项目脚手架的执行阶段,也就是生成网页应用的组件代码阶段,目标前端框架对应的接口分支代码可以把第一组件状态信息传入到目标前端框架所携带的原生应用程序接口中。
样式兼容插件,即less插件,可以用于根据前端框架的类型,预先配置初始样式信息,以及对预先配置的初始样式信息和/或自定义配置的初始样式信息进行样式规则转换,即样式规则名称和样式规则取值转换。使用样式兼容插件时,输入为初始样式信息的源文件,这里的输入可以是less语言格式的,输出为针对前端框架做兼容适配的组件样式信息,这里的输出可以是css语言格式的。
S102:利用预先开发的样式兼容插件,对所述组件样式模板进行信息配置,得到与所述目标前端框架适配的组件样式信息。
在具体实施中,可以先获取对样式组件模板进行自定义配置和/或预先配置得到的初始样式信息;然后利用预先开发的样式兼容插件,对初始样式信息进行样式规则名称和样式规则取值转换,得到与目标前端框架匹配的组件样式信息。
在本公开实施例中,less插件可以先将初始样式信息由less语言格式转换成css语言格式,例如,编译前初始样式信息为:
编译后为:
.class-a.class-b{
font:14px;
}
然后在对初始样式信息进行样式规则转换,即样式规则名称和样式规则取值转换,例如,编译前初始样式信息为:
编译后为:
.class-a.class-b{
font-size:14rpx;
}
S103:基于预先开发的面向各前端框架的接口分支代码以及所述目标前端框架的标识信息,确定与所述目标前端框架的标识信息匹配的目标接口分支代码,并基于针对每个接口分支代码预先设置的第一组件状态信息以及所述目标接口分支代码,对所述组件状态模板进行信息配置,得到与所述目标前端框架适配的第二组件状态信息。
这里,在预先开发的API接口库中集成了面向各个前端框架的接口分支代码,每个接口分支代码对应一个前端框架。每个接口分支代码中还预先设置了对应的前端框架的第一组件状态信息。其中,第一组件状态信息可以指各个组件之间的处理逻辑信息,比如一个时间或者计时器,会有自己的数值,每个数值在更迭时会有对应的处理逻辑。
这里,可以获取目标前端框架的标识信息,比如名称,然后根据目标前端框架的标识信息,从API接口库中查找与目标前端框架的标识信息匹配的目标接口分支代码。
在该过程中,还可以将除目标接口分支代码以外的其他接口分支代码删除,仅保留目标接口分支代码。
在一种实施方式中,可以基于针对每个接口分支代码预先设置的前端框架的第一组件状态信息以及目标接口分支代码,确定目标接口分支代码对应的目标组件状态信息,然后利用目标组件状态信息,对组件状态模板进行信息配置,得到与目标前端框架适配的第二组件状态信息。
这里,可以将传入目标接口分支代码中的目标组件状态信息传入至目标前端框架所携带的原生应用程序接口中。
S104:利用编译构建脚本对所述组件样式信息和所述第二组件状态信息进行整合,得到与所述目标接口分支代码映射的组件代码。
这里,可以执行目标脚手架命令,利用编译构建脚本对上述组件样式信息和第二组件状态信息进行整合。
在一种实施方式中,还可以获取针对目标前端框架中的各个组件进行自定义配置得到的组件视图信息;然后利用编译构建脚本对组件样式信息、第二组件状态信息以及组件视图信息进行整合,得到与目标接口分支代码映射的组件代码。
这里,组件视图信息可以是用户在组件视图模板中自定义设置的。针对不同的前端框架,设置的组件视图信息可以是不同的。
组件视图信息可以指各个组件、子组件之间的层级关系,以及上下级组件之间传递信息的方式。组件之间的层级关系可以影响组件之间的状态处理信息。因此,在实施过程中,可以将组件视图信息与组件状态信息进行绑定。进而,根据目标前端框架对应的组件样式信息、第二组件状态信息以及组件视图信息,生成与目标接口分支代码映射的组件代码。
在得到与目标应用程序接口映射的组件代码之后,还可以调用目标应用程序接口,运行组件代码,对目标组件的内部状态参数进行更新。
下面以开发网页阅读器为例,介绍利用预先开发的脚手架工具生成接入到各个前端框架的网页阅读器的代码的过程。
首先,可以使用预先开发好的项目脚手架工具创建名称为reader-sdk的前端项目。
然后从远端服务器获取一个项目模板拉取到本地。项目模板中配置有组件样式模板、组件状态模板、组件视图模板和编译构建脚本。组件样式模板、组件状态模板和组件视图模板上可以默认设置有配置信息。也可以获取用户可以在组件样式模板中编辑网页阅读器的布局组件样式信息,在组件状态模板中编辑网页阅读器的排版、切章翻页等各类交互的逻辑状态信息,在组件视图模板中按照各个前端框架的语言规范描述组件之间的层级关系。
其中,在对组件样式模板进行信息配置的时候,可以获取用户在less插件提供的各个配置文件中添加自定义的组件样式信息,例如字体大小等。
在对组件状态模板进行信息配置的时候,还可以利用预先开发的面向各个前端框架的接口分支代码中传入的组件状态信息,对组件状态模板进行信息配置。
这里,可以基于获取的目标前端框架的名称,确定与目标前端框架的名称对应的目标接口分支代码,然后,利用目标接口分支代码中传入的第一组件状态信息,对组件状态模板进行信息配置,得到与目标前端框架适配的第二组件状态信息。
最后,可以执行项目脚手架命令,利用编译构建脚本对组件样式信息、组件状态信息、组件视图信息进行整合,得到与目标接口分支代码映射的组件代码,也就是SDK。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与代码生成方法对应的代码生成装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述代码生成方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图3所示,为本公开实施例提供的一种代码生成装置的架构示意图,所述装置包括:获取模块301、第一配置模块302、第二配置模块303、整合模块304;其中,
获取模块301,用于获取待接入目标前端框架的网页应用对应的组件配置对象;所述组件配置对象包括组件样式模板和组件状态模板;
第一配置模块302,用于利用预先开发的样式兼容插件,对所述组件样式模板进行信息配置,得到与所述目标前端框架适配的组件样式信息;
第二配置模块303,用于基于预先开发的面向各前端框架的接口分支代码以及所述目标前端框架的标识信息,确定与所述目标前端框架的标识信息匹配的目标接口分支代码,并基于针对每个接口分支代码预先设置的第一组件状态信息以及所述目标接口分支代码,对所述组件状态模板进行信息配置,得到与所述目标前端框架适配的第二组件状态信息;
整合模块304,用于利用编译构建脚本对所述组件样式信息和所述第二组件状态信息进行整合,得到与所述目标应用程序接口映射的组件代码。
一种可选的实施方式中,第一配置模块302,具体用于:
获取对所述样式组件模板进行自定义配置和/或预先配置得到的初始样式信息;
利用预先开发的样式兼容插件,对所述初始样式信息进行样式规则名称和样式规则取值转换,得到与所述目标前端框架匹配的组件样式信息。
一种可选的实施方式中,第二配置模块303,具体用于:
基于针对每个接口分支代码预先设置的前端框架的第一组件状态信息以及所述目标接口分支代码,确定所述目标接口分支代码对应的目标组件状态信息;
利用所述目标组件状态信息,对所述组件状态模板进行信息配置,得到与所述目标前端框架适配的第二组件状态信息。
一种可选的实施方式中,所述装置还包括:
删除模块,用于从所述预先开发的面向各前端框架的接口分支代码中,删除除所述目标接口分支代码以外的其他接口分支代码;
第二配置模块303,具体用于:
基于针对所述目标接口分支代码预先设置的第一组件状态信息以及所述目标接口分支代码,对所述组件状态模板进行信息配置,得到与所述目标前端框架适配的第二组件状态信息。
一种可选的实施方式中,所述装置还包括:
调用模块,用于调用所述目标应用程序接口,运行所述组件代码,对所述目标组件的内部状态参数进行更新。
一种可选的实施方式中,获取模块301,具体用于:
利用项目脚手架创建与目标前端框架对应的项目模板;
获取所述项目模板中配置的待接入目标前端框架的网页应用对应的组件配置对象。
一种可选的实施方式中,整合模块304,具体用于:
获取针对所述目标前端框架中的各个组件进行自定义配置得到的组件视图信息;
利用编译构建脚本对所述组件样式信息、所述第二组件状态信息以及所述组件视图信息进行整合,得到与所述目标接口分支代码映射的组件代码。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图4所示,为本公开实施例提供的计算机设备400的结构示意图,包括处理器401、存储器402、和总线403。其中,存储器402用于存储执行指令,包括内存4021和外部存储器4022;这里的内存4021也称内存储器,用于暂时存放处理器401中的运算数据,以及与硬盘等外部存储器4022交换的数据,处理器401通过内存4021与外部存储器4022进行数据交换,当计算机设备400运行时,处理器401与存储器402之间通过总线403通信,使得处理器401在执行以下指令:
获取待接入目标前端框架的网页应用对应的组件配置对象;所述组件配置对象包括组件样式模板和组件状态模板;
利用预先开发的样式兼容插件,对所述组件样式模板进行信息配置,得到与所述目标前端框架适配的组件样式信息;
基于预先开发的面向各前端框架的接口分支代码以及所述目标前端框架的标识信息,确定与所述目标前端框架的标识信息匹配的目标接口分支代码,并基于针对每个接口分支代码预先设置的第一组件状态信息以及所述目标接口分支代码,对所述组件状态模板进行信息配置,得到与所述目标前端框架适配的第二组件状态信息;
利用编译构建脚本对所述组件样式信息和所述第二组件状态信息进行整合,得到与所述目标接口分支代码映射的组件代码。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的代码生成方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的代码生成方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。