CN108279902B - 基于Lua脚本技术的多终端共享底层框架生成、应用方法 - Google Patents
基于Lua脚本技术的多终端共享底层框架生成、应用方法 Download PDFInfo
- Publication number
- CN108279902B CN108279902B CN201810125990.XA CN201810125990A CN108279902B CN 108279902 B CN108279902 B CN 108279902B CN 201810125990 A CN201810125990 A CN 201810125990A CN 108279902 B CN108279902 B CN 108279902B
- Authority
- CN
- China
- Prior art keywords
- lua
- layer
- database
- file
- script
- 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
Images
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
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及基于Lua脚本技术的多终端共享底层框架生成、应用方法,与现有技术相比解决了多终端无法共享底层框架的缺陷。本发明包括以下步骤:Lua引擎初始化;UI层的建立;Lua层的建立;UI层与Lua层的关联;数据库层与Lua层的关联。本发明将多个平台不同的开发方式在底层进行融合,使得各个平台只关注UI层的实现,而无需关注底层框架的形成,大幅度降低各个平台的开发时间和复杂度,提升了迭代的速度。
Description
技术领域
本发明涉及数据处理技术领域,具体来说是基于Lua脚本技术的多终端共享底层框架生成、应用方法。
背景技术
随着互联网技术的发展,多端协作的概念越来越被重视,特别是移动互联网的发展,促使软件服务商在开发产品时都需要考虑开发多个平台和终端的产品,比如WEB网站、手机APP、PC客户端等。目前,对于不同的终端都需要采用对应的编程语言实现,从底层数据处理到业务交互,每个端都需要编写一整套的代码。而事实上,同一款产品的数据库结构、底层业务逻辑都基本相同。
特别是,近年来互联网的火爆带动了软件的不断发展,现有的开发方式开发起来无疑会做重复工作,并且在后期的软件维护中也继续需要针对不同平台做维护,导致后期维护成本较高。
因此,如何能设计一种能够让多个终端共用的一套底层框架已经成为急需解决的技术问题。
发明内容
本发明的目的是为了解决现有技术中多终端无法共享底层框架的缺陷,提供一种基于Lua脚本技术的多终端共享底层框架生成、应用方法来解决上述问题。
为了实现上述目的,本发明的技术方案如下:
基于Lua脚本技术的多终端共享底层框架生成方法,包括以下步骤:
11)Lua引擎初始化,将脚本解密加载到应用内存;
12)UI层的建立,设定UI层,用于多终端与用户的交互处理;
13)Lua层的建立,Lua层用于产生具体的业务逻辑供各个终端使用的Lua脚本,逻辑内容包括业务内容以及对数据库的操作,数据库操作为Lua产生SQL语句,由各个终端连接数据库执行该SQL,并将执行结果返回给Lua;
14)UI层与Lua层的关联,UI层与Lua层建立数据类型和数据结构的关联;
15)数据库层与Lua层的关联,数据库层与Lua层建立数据类型和数据结构的关联。
所述的Lua引擎初始化包括以下步骤:
21)获取本地Lua层程序包的版本号LocalVersion,通过网络请求获得远程最新版本号RemoteVersion;
22)当RemoteVersion大于LocalVersion,下载远程程序包覆盖本地程序包,修改本地Lua层程序包版本号LocalVersion的值为远程最新版本号RemoteVersion;
23)获取本地Lua层程序包;
231)检查文件是否完整,包括文件字节数、文件MD5值,防止使用不合法的程序包;
232)文件不完整,提示异常,退出程序;文件完整,加载文件流到内存;
24)使用DES解密算法,对加载到内存的文件流进行解密;
25)将解密后的内容装载到Lua系统引擎,待后续业务处理调用。
所述UI层的建立步骤为UI控件使用各端原生控件或封装控件,控件布局及事件响应处理的逻辑使用LUA进行管理;
其基本定义如下:
布局的基本单元为页面,一个页面根为一个层,层中包含多个元素,元素为控件或层;
页面布局步骤如下:
31)若页面根层没有包含内容,绘制一个空白页面;;
32)若页面根层包含元素,则遍历绘制所有元素;
如果层是横向布局,则层中的元素按照横向依次绘制,如果层是纵向布局,则层中的元素按照纵向依次绘制;
321)如果元素是控件,则绘制相应控件;
如果控件是标题栏,绘制标题栏,设置标题内容、字体样式;
如果是文本框,绘制文本框,设置输入内容格式、长度限制;
如果是按钮,绘制按钮,设置按钮样式;
如果控件有事件定义,则在绘制的控件上绑定响应的事件处理逻辑,事件包括点击、滑动、touch、内容变化;
322)如果元素是层,返回32)步骤递归处理。
所述Lua层的建立包括页面布局的定义管理、业务逻辑的处理和Lua程序包打包;
其中,页面布局的定义管理包括以下步骤:
41)在页面根层定义一个空白层;
42)定义层的布局方向,如果层是横向布局,则层中的元素按照横向依次绘制,如果层是纵向布局,则层中的元素按照纵向依次绘制;
若包含控件,则定义控件,进行标题栏、文本框和按钮的定义;
43)如果控件需要绑定事件,则需定义的控件上绑定响应的事件处理逻辑,其中事件包括点击、滑动、touch、内容变化;
43)如果层中包含层,返回42)递归处理继续定义。
所述UI层与Lua层的关联包括以下步骤:
51)利用Lua引擎将Lua脚本实现的函数压入堆栈中;
52)利用UI层提供的Lua文件名和方法名调用堆栈中的业务逻辑函数,将执行结果返回给UI层;
53)进行参数类型的转换,各平台UI层传递给Lua层的参数,统一转换JSON格式字符串,利用JSON4LUA转换成Lua的table类型供Lua层使用,Lua执行的结果参数,通过JSON4LUA转换成JSON字符串返回给UI层。
所述数据库层与Lua层的关联包括以下步骤:
61)Lua层产生SQL语句,传递给各平台数据库层;
62)各平台数据库层使用原生操作数据库的方式,执行来自Lua层的SQL,然后将执行结果返回给Lua层;
63)Lua与数据库的联接通过将各个平台原生语言实现的操作数据库的扩展函数注册到Lua解释器中供Lua进行调用。
基于Lua脚本技术的多终端共享底层框架的应用方法,包括以下步骤:
71)终端引入Lua库并进行配置,将Lua库的源码包放到对应工程目录下;
72)实现Lua引擎,其具体步骤如下:
721)建立Lua解释器对象,把所有Lua标准类库加载到该解释器中;
722)将各个平台语言实现的扩展函数注册到解释器中,包括操作数据库、日志打印;
723)编写执行调用Lua方法的通用方法,使其能够正确传递界面参数以及获取Lua的返回参数;
73)JSON的解析和生成,针对Lua的基本数据类型进行与JSON格式的字符串的转换,采用Craig Mason-Jones实现的JSON4Lua方案,其具体步骤如下:
731)利用string json.encode控件将lua数据解析成JSON字符串;
732)利用lua_object json.decode控件将JSON字符串转换成Lua对应的数据;
74)将实现了业务逻辑的Lua脚本文件引入到项目中,将事先加密好的Lua脚本文件放到代码工程中,各个平台在启动程序的地方以读取工程内部文件的方式加载Lua脚本文件,其具体步骤如下:
741)解密Lua文件,利用流读取lua脚本的内容,然后将其赋值给字符串变量,实现对Lua脚本的读取,并且放入Lua调用表中;
742)UI层调用Lua,用一个变量记录Lua脚本的文件名和方法名,文件名和方法名以成对的形式存储;当UI层需要调用Lua方法时,根据提供的文件名和方法名调用对应的lua脚本方法,执行过程中使用注册的日志打印方法进行调试。
所述业务逻辑的处理包括以下步骤:
81)业务方法的定义,根据具体的业务需求及前端UI交互的需要,定义方法的功能、传入参数及返回结果;
82)SQL语句组装,根据定义的参数及业务逻辑对参数进行逻辑运算或处理,结合数据库设计及数据存储的逻辑,使用标准SQL语法,拼写所需的数据库查询、新增或更新所需的SQL语句;
83)执行SQL,根据82)步骤生成的SQL语句,调用各端的数据库连接接口,执行相应的SQL,取得相应的数据库操作结果;
84)对数据库操作的结果再根据业务逻辑需要,组织数据结构为81)业务方法的定义步骤中定义的返回结果定义的要求;
85)返回操作结果给UI层。
所述Lua程序包打包包括以下步骤:
91)代码混淆处理,对代码进行替换关键字及函数移位的方法再将所有的Lua源码文件压缩为一个文件;
92)对压缩文件使用DES算法进行加密;
93)取得加密后的程序包的字节大小及MD5值再定义版本号,将此信息均存储于服务端,用于各客户端验证程序包是否合法有效时使用。
有益效果
本发明的基于Lua脚本技术的多终端共享底层框架生成、应用方法,与现有技术相比将多个平台不同的开发方式在底层进行融合,使得各个平台只关注UI层的实现,而无需关注底层框架的形成,大幅度降低各个平台的开发时间和复杂度,提升了迭代的速度。
附图说明
图1为本发明的方法顺序图。
具体实施方式
为使对本发明的结构特征及所达成的功效有更进一步的了解与认识,用以较佳的实施例及附图配合详细的说明,说明如下:
Lua脚本作为嵌入式脚本具有轻量小巧、跨平台、可拓展的特性,根据这些特性可以使用Lua作为底层框架的实现语言,供其他平台调用。将整个方案分成三个层次,分别是UI层、Lua层、数据库层。
针对于UI层,各个平台的UI层使用自己的语言实现与用户的交互,涉及的数据类型和数据结构可以不同。UI层只需要与Lua层交互,但是交互衔接处的数据类型和数据结构,各个平台需保持一致,并且统一用JSON(JavaScript Object Notation)数据格式。
针对于Lua层,而各个平台引入Lua框架,编写执行调用Lua方法的通用方法,并能够正确传递界面参数以及获取Lua的返回参数。用Lua脚本产生具体的业务逻辑供各个平台使用,逻辑内容包括业务内容以及对数据库的操作。当然此处的数据库操作,指的是Lua只负责产生SQL语句,然后由各个平台连接数据库执行该SQL,并将执行结果返回给Lua。Lua脚本采用文件形式存储,针对安全性考虑,对Lua脚本进行加密和解密处理。各个平台使用DES加密算法,将Lua脚本加密好放入工程内,然后在启动app的地方,解密Lua文件,利用流读取lua脚本的内容并将其赋值给字符串变量,并且放入Lua调用表中。
针对于数据库层,统一数据库表和字段,将数据库中的表和字段做到最大冗余。不同的终端可以根据功能在数据表结构上需要调用的数据不同,但为了能够使得各个终端能够使用同一套底层框架,保持数据库表的最大冗余。Lua脚本本身不需要连接任何类型的数据库,只需要生成标准的SQL语句即可。不同的平台可能使用的数据库类型或版本不同,比如WEB端可能使用Oracle或者MySql,而移动端可能使用的是SQLite或者SQLServer。连接数据库交给各个平台去操作。LUA将需要执行SQL传回各个平台执行。
这样设计的好处在于,让各个平台只需要实现UI层的展示,任何底层增删改数据库或者业务逻辑都使用Lua脚本进行实现,并且一套Lua脚本,可以供多个平台使用。
如图1所示,本发明所述的基于Lua脚本技术的多终端共享底层框架生成方法,包括以下步骤:
第一步,Lua引擎初始化,将脚本解密加载到应用内存。其具体步骤如下:
(1)获取本地Lua层程序包的版本号LocalVersion,通过网络请求获得远程最新版本号RemoteVersion。
(2)当RemoteVersion大于LocalVersion,即服务器有更新版本的Lua可以用于本地更新。下载远程程序包覆盖本地程序包,修改本地Lua层程序包版本号LocalVersion的值为远程最新版本号RemoteVersion。
(3)获取本地Lua层程序包;
检查文件是否完整,包括文件字节数、文件MD5值,防止使用不合法的程序包;
文件不完整,提示异常,退出程序;文件完整,加载文件流到内存;
(4)使用DES解密算法,对加载到内存的文件流进行解密。这里采用解密到内存的处理方式,相对于解密到本地文件,增加了恶意窃取和泄漏的难度,提高安全性。
(5)将解密后的内容装载到Lua系统引擎,待后续业务处理调用。
第二步,UI层的建立,设定UI层,用于多终端与用户的交互处理。
UI层的建立步骤为设UI控件使用各端原生控件或封装控件,控件布局及事件响应处理的逻辑使用LUA进行管理;为了确保各端UI交互逻辑的一致性,UI控件仍然使用各端原生控件或封装控件。
其基本定义如下:
布局的基本单元为页面,一个页面根为一个层,层中包含多个元素,元素为控件或层。
页面布局步骤如下:
(1)若页面根层没有包含内容,绘制一个空白页面;;
(2)若页面根层包含元素,则遍历绘制所有元素;
如果层是横向布局,则层中的元素按照横向依次绘制,如果层是纵向布局,则层中的元素按照纵向依次绘制;
(21)如果元素是控件,则绘制相应控件;
如果控件是标题栏,绘制标题栏,设置标题内容、字体样式;
如果是文本框,绘制文本框,设置输入内容格式、长度限制;
如果是按钮,绘制按钮,设置按钮样式;
如果控件有事件定义,则在绘制的控件上绑定响应的事件处理逻辑,事件包括点击、滑动、touch、内容变化;
(22)如果元素是层,返回(2)步骤对其他元素递归处理。
第三步,Lua层的建立。Lua层用于产生具体的业务逻辑供各个终端使用的Lua脚本,逻辑内容包括业务内容以及对数据库的操作,数据库操作为Lua产生SQL语句,由各个终端连接数据库执行该SQL,并将执行结果返回给Lua。
Lua层的建立也就相当于初始化Lua解释器,并且将各个平台的扩展函数注册到解释器中,包括操作数据库、日志打印等公共方法,保证Lua方法中可以直接调用。编写执行调用Lua方法的通用方法,使其能够正确传递界面参数以及获取Lua的返回参数。
Lua层的建立包括页面布局的定义管理、业务逻辑的处理和Lua程序包打包。
其中,页面布局的定义管理包括以下步骤:
(1)在页面根层定义一个空白层;
(2)定义层的布局方向,如果层是横向布局,则层中的元素按照横向依次绘制,如果层是纵向布局,则层中的元素按照纵向依次绘制;
若包含控件,则定义控件,进行标题栏、文本框和按钮的定义;
(3)如果控件需要绑定事件,则需定义的控件上绑定响应的事件处理逻辑,其中事件包括点击、滑动、touch、内容变化;
(3)如果层中包含层,返回(2)递归处理继续其他层的定义。
所述业务逻辑的处理包括以下步骤:
(1)业务方法的定义,根据具体的业务需求及前端UI交互的需要,定义方法的功能、传入参数及返回结果;
(2)SQL语句组装,根据定义的参数及业务逻辑对参数进行逻辑运算或处理,结合数据库设计及数据存储的逻辑,使用标准SQL语法,拼写所需的数据库查询、新增或更新所需的SQL语句;
(3)执行SQL,根据(2)步骤SQL语句组装生成的SQL语句,调用各端的数据库连接接口,执行相应的SQL,取得相应的数据库操作结果;
(4)对数据库操作的结果再根据业务逻辑需要,组织数据结构为业务方法的定义步骤中定义的返回结果定义的要求;
(5)返回操作结果给UI层。
所述Lua程序包打包包括以下步骤:
(1)代码混淆处理,对代码进行替换关键字及函数移位的方法再将所有的Lua源码文件压缩为一个文件;
(2)对压缩文件使用DES算法进行加密;
(3)取得加密后的程序包的字节大小及MD5值再定义版本号,将此信息均存储于服务端,用于各客户端验证程序包是否合法有效时使用。
第四步,UI层与Lua层的关联,UI层与Lua层建立数据类型和数据结构的关联。其具体步骤如下:
(1)利用Lua引擎将Lua脚本实现的函数压入堆栈中;
(2)利用UI层提供的Lua文件名和方法名调用堆栈中的业务逻辑函数,将执行结果返回给UI层;
(3)进行参数类型的转换,各平台UI层的传递给Lua层的参数,统一转换JSON格式字符串,利用JSON4LUA转换成Lua的table类型供Lua层使用,Lua执行的结果参数,通过JSON4LUA转换成JSON字符串返回给UI层。
第五步,数据库层与Lua层的关联,数据库层与Lua层建立数据类型和数据结构的关联。其具体步骤如下:
(1)Lua层产生SQL语句,传递给各平台数据库层;
(2)各平台数据库层使用原生操作数据库的方式,执行来自Lua层的SQL,然后将执行结果返回给Lua层;
(3)Lua与数据库的联接通过将各个平台原生语言实现的操作数据库的扩展函数注册到Lua解释器中供Lua进行调用。
在此,还提供一种基于Lua脚本技术的多终端共享底层框架的应用方法,包括以下步骤:
(1)终端引入Lua库并进行配置,将Lua库的源码包放到对应工程目录下。例如,针对于安卓系统,将Lua库以及LuaJava的源码包放到安卓工程中,将LuaJava.jar放到工程libs目录下、将Lua库及LuaJava的C源码统一打包为libluajava.so库文件放在工程libs/armeabi目录下。
Lua中有8个基本数据类型,分别为:nil、boolean、number、string、userdata、function、thread和table。然而各个平台原生语言最后都是用的JSON格式的字符串,因此在此进行转换。采用的是Craig Mason-Jones实现的JSON4Lua方案,其中stringjson.encode(lua_object)是将lua数据解析成JSON字符串,lua_object json.decode(json_string)是将JSON字符串转换成Lua对应的数据。
(2)实现Lua引擎,其具体步骤如下:
A、建立Lua解释器对象,把所有Lua标准类库加载到该解释器中;
B、将各个平台语言实现的扩展函数注册到解释器中,包括操作数据库、日志打印;
C、编写执行调用Lua方法的通用方法,使其能够正确传递界面参数以及获取Lua的返回参数。
(3)JSON的解析和生成,针对Lua的基本数据类型进行与JSON格式的字符串的转换,采用Craig Mason-Jones实现的JSON4Lua方案,其具体步骤如下:
A、利用string json.encode控件将lua数据解析成JSON字符串;
B、利用lua_object json.decode控件将JSON字符串转换成Lua对应的数据;
(4)将实现了业务逻辑的Lua脚本文件引入到项目中,将事先加密好的Lua脚本文件放到代码工程中,各个平台在启动程序的地方以读取工程内部文件的方式加载Lua脚本文件,其具体步骤如下:
A、解密Lua文件,利用流读取lua脚本的内容,然后将其赋值给字符串变量,实现对Lua脚本的读取,并且放入Lua调用表中;
B、UI层调用Lua,用一个变量记录Lua脚本的文件名和方法名,文件名和方法名以成对的形式存储;当UI层需要调用Lua方法时,根据提供的文件名和方法名调用对应的lua脚本方法,执行过程中使用注册的日志打印方法进行调试。
本发明通过实现可靠的技术开发框架,降低开发人员重新设计开发框架的成本,优化代码质量与代码逻辑;通过Lua脚本语言来开发应用,降低开发代码行数,提高代码的复用性,实现一套脚本代码,多个平台使用。从测试阶段来讲,脚本语言更加适用于测试,能够提高应用的可测试性。从发布和部署以及维护阶段来讲,由于支持脚本加密和动态更新技术,能够有效防止脚本被修改的风险。通过Lua和原生语言两种语言的通讯,使Lua语言间接调用原生语言,使应用可以直接运行在设备上,最终既能提高开发效率,又能不损失应用的执行效率。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明的范围内。本发明要求的保护范围由所附的权利要求书及其等同物界定。
Claims (7)
1.基于Lua脚本技术的多终端共享底层框架生成方法,其特征在于,包括以下步骤:
11)Lua引擎初始化,将脚本解密加载到应用内存;
12)UI层的建立,设定UI层,用于多终端与用户的交互处理;
13)Lua层的建立,Lua层用于产生具体的业务逻辑供各个终端使用的Lua脚本,逻辑内容包括业务内容以及对数据库的操作,数据库操作为Lua产生SQL语句,由各个终端连接数据库执行该SQL,并将执行结果返回给Lua;
14)UI层与Lua层的关联,UI层与Lua层建立数据类型和数据结构的关联;所述UI层与Lua层的关联包括以下步骤:
51)利用Lua引擎将Lua脚本实现的函数压入堆栈中;
52)利用UI层提供的Lua文件名和方法名调用堆栈中的业务逻辑函数,将执行结果返回给UI层;
53)进行参数类型的转换,各平台UI层传递给Lua层的参数,统一转换JSON格式字符串,利用JSON4LUA转换成Lua的table类型供Lua层使用,Lua执行的结果参数,通过JSON4LUA转换成JSON字符串返回给UI层;
15)数据库层与Lua层的关联,数据库层与Lua层建立数据类型和数据结构的关联;所述数据库层与Lua层的关联包括以下步骤:
61)Lua层产生SQL语句,传递给各平台数据库层;
62)各平台数据库层使用原生操作数据库的方式,执行来自Lua层的SQL,然后将执行结果返回给Lua层;
63)Lua与数据库的联接通过将各个平台原生语言实现的操作数据库的扩展函数注册到Lua解释器中供Lua进行调用。
2.根据权利要求1所述的基于Lua脚本技术的多终端共享底层框架生成方法,其特征在于,所述的Lua引擎初始化包括以下步骤:
21)获取本地Lua层程序包的版本号LocalVersion,通过网络请求获得远程最新版本号RemoteVersion;
22)当RemoteVersion大于LocalVersion,下载远程程序包覆盖本地程序包,修改本地Lua层程序包版本号LocalVersion的值为远程最新版本号RemoteVersion;
23)获取本地Lua层程序包;
231)检查文件是否完整,包括文件字节数、文件MD5值,防止使用不合法的程序包;
232)文件不完整,提示异常,退出程序;文件完整,加载文件流到内存;
24)使用DES解密算法,对加载到内存的文件流进行解密;
25)将解密后的内容装载到Lua系统引擎,待后续业务处理调用。
3.根据权利要求1所述的基于Lua脚本技术的多终端共享底层框架生成方法,其特征在于,所述UI层的建立步骤为UI控件使用各端原生控件或封装控件,控件布局及事件响应处理的逻辑使用LUA进行管理;
其基本定义如下:
布局的基本单元为页面,一个页面根为一个层,层中包含多个元素,元素为控件或层;
页面布局步骤如下:
31)若页面根层没有包含内容,绘制一个空白页面;
32)若页面根层包含元素,则遍历绘制所有元素;
如果层是横向布局,则层中的元素按照横向依次绘制,如果层是纵向布局,则层中的元素按照纵向依次绘制;
321)如果元素是控件,则绘制相应控件;
如果控件是标题栏,绘制标题栏,设置标题内容、字体样式;
如果是文本框,绘制文本框,设置输入内容格式、长度限制;
如果是按钮,绘制按钮,设置按钮样式;
如果控件有事件定义,则在绘制的控件上绑定响应的事件处理逻辑,事件包括点击、滑动、touch、内容变化;
322)如果元素是层,返回32)步骤递归处理。
4.根据权利要求1所述的基于Lua脚本技术的多终端共享底层框架生成方法,其特征在于,所述Lua层的建立包括页面布局的定义管理、业务逻辑的处理和Lua程序包打包;
其中,页面布局的定义管理包括以下步骤:
41)在页面根层定义一个空白层;
42)定义层的布局方向,如果层是横向布局,则层中的元素按照横向依次绘制,如果层是纵向布局,则层中的元素按照纵向依次绘制;
若包含控件,则定义控件,进行标题栏、文本框和按钮的定义;
43)如果控件需要绑定事件,则需定义的控件上绑定响应的事件处理逻辑,其中事件包括点击、滑动、touch、内容变化;
43)如果层中包含层,返回42)递归处理继续定义。
5.根据权利要求4所述的基于Lua脚本技术的多终端共享底层框架生成方法,其特征在于,所述业务逻辑的处理包括以下步骤:
81)业务方法的定义,根据具体的业务需求及前端UI交互的需要,定义方法的功能、传入参数及返回结果;
82)SQL语句组装,根据定义的参数及业务逻辑对参数进行逻辑运算或处理,结合数据库设计及数据存储的逻辑,使用标准SQL语法,拼写所需的数据库查询、新增或更新所需的SQL语句;
83)执行SQL,根据82)步骤生成的SQL语句,调用各端的数据库连接接口,执行相应的SQL,取得相应的数据库操作结果;
84)对数据库操作的结果再根据业务逻辑需要,组织数据结构为81)业务方法的定义步骤中定义的返回结果定义的要求;
85)返回操作结果给UI层。
6.根据权利要求4所述的基于Lua脚本技术的多终端共享底层框架生成方法,其特征在于,所述Lua程序包打包包括以下步骤:
91)代码混淆处理,对代码进行替换关键字及函数移位的方法再将所有的Lua源码文件压缩为一个文件;
92)对压缩文件使用DES算法进行加密;
93)取得加密后的程序包的字节大小及MD5值再定义版本号,将此信息均存储于服务端,用于各客户端验证程序包是否合法有效时使用。
7.根据权利要求1所述的基于Lua脚本技术的多终端共享底层框架的应用方法,其特征在于,包括以下步骤:
71)终端引入Lua库并进行配置,将Lua库的源码包放到对应工程目录下;
72)实现Lua引擎,其具体步骤如下:
721)建立Lua解释器对象,把所有Lua标准类库加载到该解释器中;
722)将各个平台语言实现的扩展函数注册到解释器中,包括操作数据库、日志打印;
723)编写执行调用Lua方法的通用方法,使其能够正确传递界面参数以及获取Lua的返回参数;
73)JSON的解析和生成,针对Lua的基本数据类型进行与JSON格式的字符串的转换,采用Craig Mason-Jones实现的JSON4Lua方案,其具体步骤如下:
731)利用string json.encode控件将lua数据解析成JSON字符串;
732)利用lua_object json.decode控件将JSON字符串转换成Lua对应的数据;
74)将实现了业务逻辑的Lua脚本文件引入到项目中,将事先加密好的Lua脚本文件放到代码工程中,各个平台在启动程序的地方以读取工程内部文件的方式加载Lua脚本文件,其具体步骤如下:
741)解密Lua文件,利用流读取lua脚本的内容,然后将其赋值给字符串变量,实现对Lua脚本的读取,并且放入Lua调用表中;
742)UI层调用Lua,用一个变量记录Lua脚本的文件名和方法名,文件名和方法名以成对的形式存储;当UI层需要调用Lua方法时,根据提供的文件名和方法名调用对应的lua脚本方法,执行过程中使用注册的日志打印方法进行调试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810125990.XA CN108279902B (zh) | 2018-02-08 | 2018-02-08 | 基于Lua脚本技术的多终端共享底层框架生成、应用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810125990.XA CN108279902B (zh) | 2018-02-08 | 2018-02-08 | 基于Lua脚本技术的多终端共享底层框架生成、应用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108279902A CN108279902A (zh) | 2018-07-13 |
CN108279902B true CN108279902B (zh) | 2021-02-12 |
Family
ID=62807870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810125990.XA Active CN108279902B (zh) | 2018-02-08 | 2018-02-08 | 基于Lua脚本技术的多终端共享底层框架生成、应用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108279902B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032607B (zh) * | 2018-07-25 | 2022-03-15 | 广州广知建信息科技有限公司 | 基于lua脚本的机房监控实时数据解析引擎及脚本调试工具 |
CN109213484A (zh) * | 2018-08-20 | 2019-01-15 | 北京知本源信息技术有限公司 | 在线协作设计图状态管理装置及方法 |
CN109271159A (zh) * | 2018-08-20 | 2019-01-25 | 北京知本源信息技术有限公司 | 树状逻辑式在线协作装置及方法 |
CN110874226B (zh) * | 2018-08-29 | 2023-05-02 | 山东华软金盾软件股份有限公司 | 一种android系统功能升级的方法 |
CN109445798B (zh) * | 2018-10-17 | 2022-04-22 | 厦门安胜网络科技有限公司 | 一种LuaJIT字节码的处理方法、装置及存储介质 |
CN111258844B (zh) * | 2019-11-28 | 2023-08-01 | 浙江中控信息产业股份有限公司 | 基于Lua脚本的动态复杂报警实现方法 |
CN110989996B (zh) * | 2019-12-02 | 2023-07-28 | 北京电子工程总体研究所 | 一种基于Qt脚本语言的目标轨迹数据产生方法 |
CN113032087B (zh) * | 2019-12-25 | 2024-02-23 | 亚信科技(南京)有限公司 | 一种基于Chromium内核的数据交互方法及装置 |
CN113138758B (zh) * | 2020-01-17 | 2023-06-06 | 福建天晴数码有限公司 | 一种可视化Lua代码生成的方法及终端 |
CN111814430B (zh) * | 2020-08-31 | 2020-12-04 | 南昌协达科技发展有限公司 | 实验结果文档处理方法、装置、存储介质及计算机设备 |
CN112579087A (zh) * | 2020-12-25 | 2021-03-30 | 四川长虹电器股份有限公司 | 基于Lua脚本的炒菜机人机界面的开发方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360288A (zh) * | 2011-09-29 | 2012-02-22 | 南京国电南自轨道交通工程有限公司 | 实时数据驱动的脚本化全组态hmi系统 |
CN107480365A (zh) * | 2017-08-09 | 2017-12-15 | 华中科技大学 | 一种程式化异质建模系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253946A (zh) * | 2010-05-20 | 2011-11-23 | 腾讯科技(北京)有限公司 | 基于lua脚本交互信息的方法、Web引擎和嵌入式终端 |
US20130073458A1 (en) * | 2011-09-19 | 2013-03-21 | Cardinalcommerce Corporation | Open wallet for electronic transactions |
US20130311974A1 (en) * | 2012-05-16 | 2013-11-21 | Zoltan Albrecht | Debugger integration of reporting tool renderer |
CN106209795A (zh) * | 2016-06-30 | 2016-12-07 | 大连楼兰科技股份有限公司 | 实现lua解析内网数据方法及系统 |
CN106383723B (zh) * | 2016-10-21 | 2019-12-31 | 浪潮通用软件有限公司 | 一种动态修改用户已安装移动App程序的方法 |
-
2018
- 2018-02-08 CN CN201810125990.XA patent/CN108279902B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360288A (zh) * | 2011-09-29 | 2012-02-22 | 南京国电南自轨道交通工程有限公司 | 实时数据驱动的脚本化全组态hmi系统 |
CN107480365A (zh) * | 2017-08-09 | 2017-12-15 | 华中科技大学 | 一种程式化异质建模系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108279902A (zh) | 2018-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108279902B (zh) | 基于Lua脚本技术的多终端共享底层框架生成、应用方法 | |
Herron | Node. js Web Development: Server-side web development made easy with Node 14 using practical examples | |
US9274784B2 (en) | Automatic deployment and update of hybrid applications | |
CN109491695A (zh) | 一种集成安卓应用的增量更新方法 | |
CN110825362A (zh) | 低代码应用软件开发系统及方法 | |
US20200065124A1 (en) | Shortening just-in-time code warm up time of docker containers | |
CN105335173A (zh) | 初始化智能终端设备的方法、装置及系统 | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
CN104572114A (zh) | 一种绑定装置、应用更新装置及方法以及应用 | |
CN106502746A (zh) | 应用程序的打包方法及装置 | |
CN112286504B (zh) | 移动APP中基于ReactNative实现小程序开发并加载的方法 | |
CN110673837B (zh) | 代码修复方法及装置、电子设备、计算机可读存储介质 | |
CN106569856A (zh) | 一种应用视图资源文件的加载方法和装置 | |
CN115629971A (zh) | 一种应用的开发系统和开发方法 | |
Saternos | Client-Server Web Apps with JavaScript and Java: Rich, Scalable, and RESTful | |
Rourke | Learn WebAssembly: Build web applications with native performance using Wasm and C/C++ | |
Di Pierro | web2py | |
CN108647142B (zh) | 一种Gatling压测脚本本地预编译调试方法及系统 | |
Bampakos et al. | Learning Angular: A no-nonsense guide to building web applications with Angular 15 | |
CN110032425A (zh) | 一种动态链接库文件虚拟化方法、系统及存储介质 | |
CN115113850A (zh) | 一种跨平台应用的构建、运行方法、服务器、终端和系统 | |
CN110659022B (zh) | 一种基于Java自动调用Python脚本的方法 | |
CN111880805A (zh) | 软件项目的包文件生成方法及装置、设备、存储介质 | |
CN109933355A (zh) | 应用程序升级方法及装置 | |
Bretet | Spring mvc cookbook |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 230088 first floor, no.19-6 Tianhu Road, high tech Zone, Shushan District, Hefei City, Anhui Province Applicant after: Anhui qisemi Information Technology Co.,Ltd. Address before: 230088 no.a-441, National University Science Park, 602 Huangshan Road, high tech Zone, Hefei City, Anhui Province Applicant before: HEFEI YINGYUN INFORMATION TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |