CN108776592A - 一种页面构建的方法、装置、设备及存储介质 - Google Patents
一种页面构建的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN108776592A CN108776592A CN201810503363.5A CN201810503363A CN108776592A CN 108776592 A CN108776592 A CN 108776592A CN 201810503363 A CN201810503363 A CN 201810503363A CN 108776592 A CN108776592 A CN 108776592A
- Authority
- CN
- China
- Prior art keywords
- page
- script
- component
- service logic
- data
- 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.)
- Granted
Links
Classifications
-
- 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)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种页面构建的方法、装置、设备及存储介质,其中,该方法应用于基于混合开发模式所开发的应用程序,且该方法包括:获取来自服务端的页面更新信息,页面更新信息包括:页面布局数据及通过第一脚本语言编写的业务逻辑数据;基于预置的数据传输通道,通过第一脚本语言组件将业务逻辑数据发送至第二脚本语言组件;基于业务逻辑数据及页面布局数据,通过原生***构建目标页面;本发明的方法、装置、设备及存储介质,通过应用程序的原生***执行服务端下发的页面构建信息以完成页面构建,从而,就可以实现应用程序的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种页面构建的方法、装置、设备及存储介质。
背景技术
随着互联网技术和智能终端技术的发展,各种应用已经普及到大众生活的方方面面,例如,观影、购物、支付、社交、提供各种资讯等等。目前这些智能终端的应用常采用本地应用(NativeApp)实现,本地应用是通过使用原生操作***提供的API(ApplicationProgramming Interface,应用程序编程接口)编程实现,可以保证应用的高性能和良好的交互体验。
然而,现有的本地应用中页面的交互行为(如交互跳转)在智能终端固化,如果想改变应用的交互行为,必须依赖运营商对不同平台(安卓***或ios***等)下的发版的修改,智能终端再重新安装本地应用。所以,终端应用的更新严重依赖该应用的发版,导致终端应用更新的成本较高。
发明内容
本发明的主要目的在于提出一种页面构建的方法、装置、设备及存储介质,其克服了现有技术中因只能通过重新发版才能完成终端应用的更新而导致更新成本较高的问题。
根据本发明的第一个方面,提供了一种页面构建的方法,所述方法包括:获取来自服务端的页面更新信息,所述页面更新信息包括:页面布局数据及通过第一脚本语言编写的业务逻辑数据;基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,在混合开发模式下,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互,所述第二脚本语言组件注册于原生***;基于所述业务逻辑数据及所述页面布局数据,通过所述原生***构建目标页面。
可选的,在所述获取来自服务端的页面更新信息之后,且在所述通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件之前,所述方法还包括:对所述页面更新信息是否合法进行校验;在校验通过的情况下,将所述页面更新信息存储至本地预设位置,以供所述第一脚本语言组件将所述业务逻辑数据从所述本地预设位置发送至第二脚本语言组件。
可选的,所述基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,包括:根据获取到的页面更新信息,生成所述页面更新信息的索引文件;基于所述索引文件,通过所述第一脚本语言组件查找到所述业务逻辑数据,所述第一脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的组件所实现的功能相对应的非原生组件;通过所述第一脚本语言组件将所述业务逻辑数据转换为所述原生***可以执行的业务逻辑数据;将转换为所述原生***可以执行的业务逻辑数据发送至所述第二脚本语言组件。
可选的,所述基于所述业务逻辑数据及所述页面布局数据,通过所述原生***构建目标页面,包括:对依据所述索引文件查找到的所述页面布局数据进行解析,得到布局元素;基于所述布局元素,通过所述原生***反射执行所述原生***可以执行的业务逻辑数据,以生成视图数据;将所述视图数据添加到所述第二脚本语言组件中进行加载耦合,以完成所述目标页面构建。
可选的,所述原生***可以执行的业务逻辑数据包括:页面更新逻辑数据;
在所述将视图数据添加到所述第二脚本语言组件中进行加载耦合,以完成所述目标页面构建之后,所述方法还包括:基于所述页面更新逻辑数据,通过所述原生***查找到所述视图数据;基于所述视图数据,通过原生***反射执行所述页面更新逻辑数据,以完成对所述目标页面的更新。
根据本发明的第二个方面,提供了一种页面构建的装置,包含于基于混合开发模式所开发的应用程序,所述装置包括:获取模块,用于获取来自服务端的页面更新信息,所述页面更新信息包括:页面布局数据及通过第一脚本语言编写的业务逻辑数据;发送模块,用于基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,在混合开发模式下,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互,所述第二脚本语言组件注册于原生***;构建模块,用于基于所述业务逻辑数据及所述页面布局数据,通过所述原生***构建目标页面。
可选的,所述装置包括:校验模块,用于在所述获取来自服务端的页面更新信息之后,且在所述通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件之前,对所述页面更新信息是否合法进行校验;存储模块,用于在校验通过的情况下,将所述页面更新信息存储至本地预设位置,以供所述第一脚本语言组件将所述业务逻辑数据从所述本地预设位置发送至第二脚本语言组件。
可选的,所述发送模块包括:索引单元,用于根据获取到的页面更新信息,生成所述页面更新信息的索引文件;查找单元,用于基于所述索引文件,通过所述第一脚本语言组件查找到所述业务逻辑数据,所述第一脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的组件所实现的功能相对应的非原生组件;转换单元,用于通过所述第一脚本语言组件将所述业务逻辑数据转换为所述原生***可以执行的业务逻辑数据;发送单元,用于将转换为所述原生***可以执行的业务逻辑数据发送至所述第二脚本语言组件。
可选的,所述构建模块包括:解析单元,用于对依据所述索引文件查找到的所述页面布局数据进行解析,得到布局元素;生成单元,用于基于所述布局元素,通过所述原生***反射执行所述原生***可以执行的业务逻辑数据,以生成视图数据;加载单元,用于将所述视图数据添加到所述第二脚本语言组件中进行加载耦合,以完成所述目标页面构建。
可选的,所述原生***可以执行的业务逻辑数据包括:页面更新逻辑数据;所述装置还包括:视图查找单元,用于在所述将视图数据添加到所述第二脚本语言组件中进行加载耦合,以完成所述目标页面构建之后,基于所述页面更新逻辑数据,通过所述原生***查找到所述视图数据;更新模块,用于基于所述视图数据,通过原生***反射执行所述页面更新逻辑数据,以完成对所述目标页面的更新。
根据本发明的第三个方面,提供了一种电子设备,包括处理器和存储器;所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种页面构建的方法。
根据本发明的第四个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的一种页面构建的方法。
本发明有益效果如下:通过服务端下发页面更新信息至应用程序,然后通过应用程序的原生***执行所述页面更新信息以完成目标页面的构建,从而,就可以实现应用程序的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,就此,通过采用与应用程序的原生语言不同的第一脚本语言编写业务逻辑数据,便于扩展和推广。
附图说明
图1为本发明第一实施例一种页面构建的方法的流程框图;
图2为本发明第二实施例一种页面构建的方法的流程框图;
图3为本发明第三实施例一种页面构建的方法的流程框图;
图4为本发明第四实施例一种页面构建的方法的流程框图;
图5为本发明第五实施例一种页面构建的方法的流程框图;
图6为本发明第六实施例一种页面构建的方法中JS端与Native端的交互简图;
图7为本发明第五实施例一种页面构建的方法中JS端的生命周期与Native端生命周期同步的结构简图;
图8为本发明第七实施例一种页面构建的装置的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
为了便于理解本发明实施例,下面通过几个具体实施例对本发明的实施过程进行详细的阐述。
本发明第一实施例提供一种页面构建的方法,所述方法包括:获取来自服务端的页面更新信息,所述页面更新信息包括:页面布局数据及通过第一脚本语言编写的业务逻辑数据;基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,在混合开发模式下,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互,所述第二脚本语言组件注册于原生***;基于所述业务逻辑数据及所述页面布局数据,通过所述原生***构建目标页面。
就此,通过服务端下发页面更新信息至基于混合开发模式所开发的应用程序,然后通过该应用程序的原生***执行所述页面更新信息以完成目标页面的构建,从而,就可以实现应用程序的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,即该第一脚本语言可为非原生语言,就此,通过采用该第一脚本语言编写业务逻辑数据,便于扩展和推广。
图1为本发明第一实施例一种页面构建的方法的流程框图。根据图1所示,本发明第一实施例提供了一种页面构建的方法,其应用于基于混合开发模式所开发的应用程序,所述方法包括:
S1:获取来自服务端的页面更新信息,所述页面更新信息包括:页面布局数据及通过第一脚本语言编写的业务逻辑数据;
在该应用程序检测到服务端存在页面更新信息时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该页面更新信息至应用程序。其中,该页面更新信息包括:页面布局数据及通过第一脚本语言编写的业务逻辑数据。
其中,该页面布局数据包括但不限于以下一种或多种:页面样式数据、组成页面的元素组件及页面元素的颜色组件。
而且,编写该业务逻辑数据的第一脚本语言可以为非原生语言,如:该第一脚本语言为直译式脚本语言JavaScript,而应用程序的原生语言为JAVA。当然,该编写业务逻辑数据的第一脚本语言也可为原生语言,如:该第一脚本语言与原生语言均为JAVA。
其中,编写该页面布局数据的语言可为可扩展标记语言XML。
在本实施例中,并不对该编写页面布局数据及编写该业务逻辑数据的语言种类进行限定,只需其满足本实施例的要求即可。
S2:基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,在混合开发模式下,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互,所述第二脚本语言组件注册于原生***;
通过第一脚本语言组件将该业务逻辑数据发送至第二脚本语言组件,而且,该业务逻辑数据是通过数据传输通道发送至第二脚本语言组件的,其中,脚本语言组件注册于应用程序的原生***,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互。
S3:基于所述业务逻辑数据及所述页面布局数据,通过所述原生***构建目标页面。
具体的,应用程序通过原生***执行所述业务逻辑数据,以对页面布局数据拼接,从而完成目标页面的构建。
当然,在目标页面构建完成后,可以通过所述第二脚本语言组件对所述目标页面进行展示。
就此,通过服务端下发页面更新信息至基于混合开发模式所开发的应用程序,然后通过该应用程序的原生***执行所述页面更新信息以完成目标页面的构建,从而,就可以实现应用程序的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,即该第一脚本语言可为非原生语言,就此,通过采用该第一脚本语言编写业务逻辑数据,便于扩展和推广。
图2为本发明第二实施例一种页面构建的方法的流程框图。根据图2所示,本发明第二实施例提供了一种页面构建的方法,所述方法包括:
S1:获取来自服务端的页面更新信息,所述页面更新信息包括:页面布局数据及通过第一脚本语言编写的业务逻辑数据;
S2:基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,在混合开发模式下,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互,所述第二脚本语言组件注册于原生***;
S3:基于所述业务逻辑数据及所述页面布局数据,通过所述原生***构建目标页面。
其中,在上述步骤S1及步骤S2之间还包括以下步骤:
S10:对所述页面更新信息是否合法进行校验;在校验通过的情况下,将所述页面更新信息存储至本地预设位置,以供所述第一脚本语言组件将所述业务逻辑数据从所述本地预设位置发送至第二脚本语言组件。
即:在从服务端成功下载页面更新信息后,通过对已下载的页面更新信息进行校验,校验内容包括:对页面更新信息的安全性、完整性以及准确性进行校验,从而有助于确定应用程序所获得的是正确、可用的页面更新信息,也保证了该获取的页面更新信息具有良好的安全性及完整性。此外,在本实施例中,并不对校验内容作出限定,只需该校验步骤可以满足本实施例的要求即可。
而且,在校验通过后,将该页面更新信息保存至本地预定位置,并由此生成索引文件。通过该索引文件可以在本地磁盘调用该下载的页面更新信息。
可选的,若该页面更新信息的校验未通过,删除该未通过校验的页面更新信息。
具体的,在本实施例中,该索引文件可以为统一的索引信息,即:通过该索引信息即可查找到存储在本地磁盘的页面布局数据及业务逻辑数据。当然,在本实施例中,也可进行以下设置:该索引文件包括:布局索引文件及逻辑索引文件,通过该布局索引文件可以查找到该页面布局数据,通过该逻辑索引文件可以查找到该业务逻辑数据。就此,有助于在页面构建过程中对页面构建数据进行快速的查找调用。
图3为本发明第三实施例一种页面构建的方法的流程框图。根据图3所示,本发明第三实施例提供了一种页面构建的方法,所述方法包括:
S1:获取来自服务端的页面更新信息,所述页面更新信息包括:页面布局数据及通过第一脚本语言编写的业务逻辑数据;
S2:基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,在混合开发模式下,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互,所述第二脚本语言组件注册于原生***;
S3:基于所述业务逻辑数据及所述页面布局数据,通过所述原生***构建目标页面。
其中,在上述步骤S1及步骤S2之间还包括以下步骤:
S10:对所述页面更新信息是否合法进行校验;在校验通过的情况下,将所述页面更新信息存储至本地预设位置,以供所述第一脚本语言组件将所述业务逻辑数据从所述本地预设位置发送至第二脚本语言组件。
此外,其中步骤S2的一种实现方式包括:
S21:根据获取到的页面更新信息,生成所述页面更新信息的索引文件;基于所述索引文件,通过所述第一脚本语言组件查找到所述业务逻辑数据,所述第一脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的程序所实现的功能相对应的非原生组件;通过所述第一脚本语言组件将所述业务逻辑数据转换为所述原生***可以执行的业务逻辑数据;将转换为所述原生***可以执行的业务逻辑数据发送至所述第二脚本语言组件。
在本实施例中,基于该索引文件,应用程序通过第一脚本语言组件查找业务逻辑数据,所述第一脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的程序所实现的功能相对应的非原生组件。然后,通过该第一脚本语言组件将该业务逻辑数据进行转换,以得到原生***可以执行的业务逻辑数据。因为,如果第一脚本语言不同于应用程序的脚本语言,则该未转换之前的业务逻辑数据是无法被原生***执行的。为了使得从服务端获取的业务逻辑可以被原生***执行,所以,在本实施例中对该从服务端获取的业务逻辑进行了如上转换,而且,在得到可被原生***执行的业务逻辑数据后,应用程序将转换为所述原生***可以执行的业务逻辑数据发送至所述第二脚本语言组件。
图4为本发明第四实施例一种页面构建的方法的流程框图。根据图4所示,本发明第四实施例提供了一种页面构建的方法,所述方法包括:
S1:获取来自服务端的页面更新信息,所述页面更新信息包括:页面布局数据及通过第一脚本语言编写的业务逻辑数据;
S2:基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,在混合开发模式下,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互,所述第二脚本语言组件注册于原生***;
S3:基于所述业务逻辑数据及所述页面布局数据,通过所述原生***构建目标页面。
其中,在上述步骤S1及步骤S2之间还包括以下步骤:
S10:对所述页面更新信息是否合法进行校验;在校验通过的情况下,将所述页面更新信息存储至本地预设位置,以供所述第一脚本语言组件将所述业务逻辑数据从所述本地预设位置发送至第二脚本语言组件。
此外,其中步骤S2的一种实现方式包括:
S21:根据获取到的页面更新信息,生成所述页面更新信息的索引文件;基于所述索引文件,通过所述第一脚本语言组件查找到所述业务逻辑数据,所述第一脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的程序所实现的功能相对应的非原生组件;通过所述第一脚本语言组件将所述业务逻辑数据转换为所述原生***可以执行的业务逻辑数据;将转换为所述原生***可以执行的业务逻辑数据发送至所述第二脚本语言组件。
在本实施例中,上述步骤S3的一种实现方式包括:
S31:对依据所述索引文件查找到的所述页面布局数据进行解析,得到布局元素;
在本实施例中,应用程序还需要通过索引文件查找页面布局数据,在查找该页面布局数据后,应用程序通过原生***对其进行解析,得到布局元素。
S32:基于所述布局元素,通过所述原生***反射执行所述原生***可以执行的业务逻辑数据,以生成视图数据;
基于该布局元素,应用程序通过原生***反射执行上述的原生***可以执行的业务逻辑数据,从而生成视图数据。
S33:将所述视图数据添加到所述第二脚本语言组件中进行加载耦合,以完成所述目标页面构建。
将生成的视图数据添加到第二脚本语言组件中,以便完成该视图数据与第二脚本语言组件的加载耦合,从而,可以完成目标页面的构建。
图5为本发明第五实施例一种页面构建的方法的流程框图。根据图5所示,本发明第五实施例提供了一种页面构建的方法,所述方法包括:
S1:获取来自服务端的页面更新信息,所述页面更新信息包括:页面布局数据及通过第一脚本语言编写的业务逻辑数据;
S2:基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,在混合开发模式下,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互,所述第二脚本语言组件注册于原生***;
S3:基于所述业务逻辑数据及所述页面布局数据,通过所述原生***构建目标页面。
其中,在上述步骤S1及步骤S2之间还包括以下步骤:
S10:对所述页面更新信息是否合法进行校验;在校验通过的情况下,将所述页面更新信息存储至本地预设位置,以供所述第一脚本语言组件将所述业务逻辑数据从所述本地预设位置发送至第二脚本语言组件。
此外,其中步骤S2的一种实现方式包括:
S21:根据获取到的页面更新信息,生成所述页面更新信息的索引文件;基于所述索引文件,通过所述第一脚本语言组件查找到所述业务逻辑数据,所述第一脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的程序所实现的功能相对应的非原生组件;通过所述第一脚本语言组件将所述业务逻辑数据转换为所述原生***可以执行的业务逻辑数据;将转换为所述原生***可以执行的业务逻辑数据发送至所述第二脚本语言组件。
在本实施例中,上述步骤S3的一种实现方式包括:
S31:对依据所述索引文件查找到的所述页面布局数据进行解析,得到布局元素;
S32:基于所述布局元素,通过所述原生***反射执行所述原生***可以执行的业务逻辑数据,以生成视图数据;
S33:将所述视图数据添加到所述第二脚本语言组件中进行加载耦合,以完成所述目标页面构建。
此外,在上述步骤S33之后,本发明实施例还包括以下步骤:
S34:基于所述页面更新逻辑数据,通过所述原生***查找到所述视图数据;基于所述视图数据,通过原生***反射执行所述页面更新逻辑数据,以完成对所述目标页面的更新。其中,所述原生***可以执行的业务逻辑数据包括:页面更新逻辑数据。
在本实施例中,完成目标页面构建后,还可对该目标页面进行更新,具体的,所述原生***可以执行的业务逻辑数据包括:页面更新逻辑数据,所以,在本实施例中,基于所述页面更新逻辑数据,应用程序通过所述原生***查找到所述视图数据,并且基于所述视图数据,应用程序还通过原生***反射执行所述页面更新逻辑数据以对视图数据进行更新,从而可以完成对所述目标页面的更新。
此外,在本实施例中,完成目标数据的页面更新逻辑数据与转换之前的业务逻辑数据并设于页面更新信息中。所以,在本实施例中,通过第一脚本语言组件查找到该页面更新逻辑数据,而且,通过所述第一脚本语言组件将该页面更新逻辑数据转换为所述原生***可以执行的页面更新逻辑数据;将转换为所述原生***可以执行的页面更新逻辑数据发送至所述第二脚本语言组件。然后,基于该页面更新逻辑数据,应用程序通过原生***查找到所述视图数据,该页面更新逻辑数据,应用程序通过原生***反射执行所述页面更新逻辑数据以对视图数据进行更新,从而可以完成对所述目标页面的更新。
为了更好说明本实施例所述方法的实施过程,下面结合一个具体应用示例,对本实施例所述方法进行说明。
图6为本发明第六实施例一种页面构建的方法中JS端与Native端的交互简图;图7为本发明第五实施例一种页面构建的方法中JS端的生命周期与Native端生命周期同步的结构简图。
本发明第六实施例提供一种页面构建的方法,该方法应用于设有安卓***的应用程序中。该应用程序基于热更新框架DU完成其自身的热更新操作。
在本实施例中,JS端只用于逻辑控制,而页面的开发及展示均是在客户端Native完成的。从而,使得该页面的开发更加简单并且能在更多方面的保留原生的一些特性。
根据图6与图7所示,本实施例具体包括:
1、首先在原生***AndroidManifest.xml中注册一个页面组件BaseCmActivity.java,使得在后续建立页面时,都可以通过启动这个页面组件Activity完成,而该页面组件Activity具体的展示内容可以根据每次启动时所接收到的参数控制,该步骤即为页面组件Activity的“占坑”。
2、通过单例关键代码ProtocolManager进行JS端和客户端Native的数据通信,具体的,将Native的生命周期同步至JS端,即:BaseCmActivity.java的每个生命周期的方法执行完之后都会回调到JS端的Activity.js,具体的如图7所示。从而,使得JS端也存在页面对应的生命周期。即:Activity.js是BaseCmActivity.java子类。所以,每次新创建一个Activity.js的子类就创建了一个BaseCmActivity.java的子类,而且这个Activity还不用在AndroidManifest.xml中注册。
3、JS端的Activity和Native端的Activity之间的相互启动可以分为:Native端的Activity相互启动、Native端启动JS端的Activity、JS端的Activity相互启动和JS端Activity启动原生的Activity。
a)Native端Activity相互启动,其为原生Activity的启动方式,在此不作赘述。
b)Native端启动JS端的Activity:首先,启动BaseCmActivity,并传递对应的JS端的Activity.js文件地址、其对应的布局文件地址和其他需要的参数。
c)JS端的Activity相互启动:因为每一个JS端的Activity都是BaseCmActivity,所以可以在JS端反射执行BaseCmActivity的startActivity方法,并传递对应的JS端的Activity.js文件地址、其对应的布局文件地址和其他需要的参数。
d)JS端的Activity启动原生的Activity:与JS端的Activity相互启动类似,只不过传给startActivity的参数是原生的Activity类名和改Activity需要的参数。
4、在写原生的Activity时需要先写xml(Extensible Markup Language,可扩展标记语言)布局文件,然后在Activity的onCreate方法中再设置setContentVIEW。5.因为本实施例中所有的业务逻辑都在js端,所以,js端视图数据VIEW与Native的页面一一对应。使得JS端能动态获页面上的所有元素并能更新元素的属性值。而在Native端,通过FindVIEWById找到对应的视图数据,然后通过调用该VIEW的方法进行属性值的修改。而在进行页面渲染时JS端也设计有这样的FindVIEWById的的方法供开发者调用。在JS端通过列表VIEWList存储VIEW对应的类名和id值。在映射到Native创建原生界面时,也会在Native端保留一个文件夹map缓存当前Activiy页面中的所有VIEW实例和对应的类名、id值。从而可以根据当前Activity的类名类名找到对应的BaseCmActivity实例,然后又根据VIEW的id在BaseCmActivity缓存的TemplateVIEWVo寻找对应的VIEW。在找到Native端对应的VIEW即可获知该VIEW的文件名ClassName,从而只需要知道方法名就可以通过Java反射机制进行方法的调用,实现对VIEW的属性值进行更新。
而且,通过服务端下发页面更新信息至应用程序,然后通过应用程序的原生***执行所述页面更新信息以完成目标页面的构建,从而,就可以实现应用程序的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,就此,通过采用与应用程序的原生语言不同的第一脚本语言编写业务逻辑数据,便于扩展和推广。
图8为本发明第七实施例一种页面构建的装置的结构示意图。根据图8所示,本发明第七实施例提供了一种页面构建的装置,所述装置包括:
获取模块110,用于获取来自服务端的页面更新信息,所述页面更新信息包括:页面布局数据及通过第一脚本语言编写的业务逻辑数据;发送模块120,用于基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,在混合开发模式下,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互,所述第二脚本语言组件注册于原生***;构建模块130,用于基于所述业务逻辑数据及所述页面布局数据,通过所述原生***构建目标页面。
可选的,所述装置包括:校验模块,用于在所述获取来自服务端的页面更新信息之后,且在所述通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件之前,对所述页面更新信息是否合法进行校验;存储模块,用于在校验通过的情况下,将所述页面更新信息存储至本地预设位置,以供所述第一脚本语言组件将所述业务逻辑数据从所述本地预设位置发送至第二脚本语言组件。
可选的,所述发送模块120包括:索引单元,用于根据获取到的页面更新信息,生成所述页面更新信息的索引文件;查找单元,用于基于所述索引文件,通过所述第一脚本语言组件查找到所述业务逻辑数据,所述第一脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的程序所实现的功能相对应的非原生组件;转换单元,用于通过所述第一脚本语言组件将所述业务逻辑数据转换为所述原生***可以执行的业务逻辑数据;发送单元,用于将转换为所述原生***可以执行的业务逻辑数据发送至所述第二脚本语言组件。
可选的,所述构建模块130包括:解析单元,用于对依据所述索引文件查找到的所述页面布局数据进行解析,得到布局元素;生成单元,用于基于所述布局元素,通过所述原生***反射执行所述原生***可以执行的业务逻辑数据,以生成视图数据;加载单元,用于将所述视图数据添加到所述第二脚本语言组件中进行加载耦合,以完成所述目标页面构建。
可选的,所述原生***可以执行的业务逻辑数据包括:页面更新逻辑数据;所述装置还包括:视图查找单元,用于在所述将视图数据添加到所述第二脚本语言组件中进行加载耦合,以完成所述目标页面构建之后,基于所述页面更新逻辑数据,通过所述原生***查找到所述视图数据;更新模块,用于基于所述视图数据,通过原生***反射执行所述页面更新逻辑数据,以完成对所述目标页面的更新。
本发明第八实施例提供了一种电子设备,包括处理器和存储器;所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种页面构建的方法。
本发明第八实施例中的一种电子设备所涉及的名词及实现原理具体可以参照本发明实施例中的第一至六实施例的一种页面构建的方法,在此不再赘述。
本发明第九实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个模块,所述一个或者多个模块可被一个或者多个处理器执行,以实现上述的一种页面构建的方法。
本发明第九实施例中的一种计算机可读存储介质所涉及的名词及实现原理具体可以参照本发明实施例中的第一至六实施例的一种页面构建的方法,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (12)
1.一种页面构建的方法,其特征在于,应用于基于混合开发模式所开发的应用程序,所述方法包括:
获取来自服务端的页面更新信息,所述页面更新信息包括:页面布局数据及通过第一脚本语言编写的业务逻辑数据;
基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,在混合开发模式下,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互,所述第二脚本语言组件注册于原生***;
基于所述业务逻辑数据及所述页面布局数据,通过所述原生***构建目标页面。
2.根据权利要求1所述的方法,其特征在于,在所述获取来自服务端的页面更新信息之后,且在所述通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件之前,所述方法还包括:
对所述页面更新信息是否合法进行校验;
在校验通过的情况下,将所述页面更新信息存储至本地预设位置,以供所述第一脚本语言组件将所述业务逻辑数据从所述本地预设位置发送至第二脚本语言组件。
3.根据权利要求1所述的方法,其特征在于,所述基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,包括:
根据获取到的页面更新信息,生成所述页面更新信息的索引文件;
基于所述索引文件,通过所述第一脚本语言组件查找到所述业务逻辑数据,所述第一脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的程序所实现的功能相对应的非原生组件;
通过所述第一脚本语言组件将所述业务逻辑数据转换为所述原生***可以执行的业务逻辑数据;
将转换为所述原生***可以执行的业务逻辑数据发送至所述第二脚本语言组件。
4.根据权利要求3所述的方法,其特征在于,所述基于所述业务逻辑数据及所述页面布局数据,通过所述原生***构建目标页面,包括:
对依据所述索引文件查找到的所述页面布局数据进行解析,得到布局元素;
基于所述布局元素,通过所述原生***反射执行所述原生***可以执行的业务逻辑数据,以生成视图数据;
将所述视图数据添加到所述第二脚本语言组件中进行加载耦合,以完成所述目标页面构建。
5.根据权利要求4所述的方法,其特征在于,所述原生***可以执行的业务逻辑数据包括:页面更新逻辑数据;
在所述将视图数据添加到所述第二脚本语言组件中进行加载耦合,以完成所述目标页面构建之后,所述方法还包括:
基于所述页面更新逻辑数据,通过所述原生***查找到所述视图数据;
基于所述视图数据,通过原生***反射执行所述页面更新逻辑数据,以完成对所述目标页面的更新。
6.一种页面构建的装置,其特征在于,包含于基于混合开发模式所开发的应用程序,所述装置包括:
获取模块,用于获取来自服务端的页面更新信息,所述页面更新信息包括:页面布局数据及通过第一脚本语言编写的业务逻辑数据;
发送模块,用于基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,在混合开发模式下,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互,所述第二脚本语言组件注册于原生***;
构建模块,用于基于所述业务逻辑数据及所述页面布局数据,通过所述原生***构建目标页面。
7.根据权利要求6所述的装置,其特征在于,所述装置包括:
校验模块,用于在所述获取来自服务端的页面更新信息之后,且在所述通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件之前,对所述页面更新信息是否合法进行校验;
存储模块,用于在校验通过的情况下,将所述页面更新信息存储至本地预设位置,以供所述第一脚本语言组件将所述业务逻辑数据从所述本地预设位置发送至第二脚本语言组件。
8.根据权利要求6所述的装置,其特征在于,所述发送模块包括:
索引单元,用于根据获取到的页面更新信息,生成所述页面更新信息的索引文件;
查找单元,用于基于所述索引文件,通过所述第一脚本语言组件查找到所述业务逻辑数据,所述第一脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的程序所实现的功能相对应的非原生组件;
转换单元,用于通过所述第一脚本语言组件将所述业务逻辑数据转换为所述原生***可以执行的业务逻辑数据;
发送单元,用于将转换为所述原生***可以执行的业务逻辑数据发送至所述第二脚本语言组件。
9.根据权利要求8所述的装置,其特征在于,所述构建模块包括:
解析单元,用于对依据所述索引文件查找到的所述页面布局数据进行解析,得到布局元素;
生成单元,用于基于所述布局元素,通过所述原生***反射执行所述原生***可以执行的业务逻辑数据,以生成视图数据;
加载单元,用于将所述视图数据添加到所述第二脚本语言组件中进行加载耦合,以完成所述目标页面构建。
10.根据权利要求9所述的装置,其特征在于,所述原生***可以执行的业务逻辑数据包括:页面更新逻辑数据;
所述装置还包括:
视图查找单元,用于在所述将视图数据添加到所述第二脚本语言组件中进行加载耦合,以完成所述目标页面构建之后,基于所述页面更新逻辑数据,通过所述原生***查找到所述视图数据;
更新模块,用于基于所述视图数据,通过原生***反射执行所述页面更新逻辑数据,以完成对所述目标页面的更新。
11.一种电子设备,其特征在于,包括处理器和存储器;
所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现权利要求1至5中任一项所述的一种页面构建的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1至5中任一项所述的一种页面构建的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810503363.5A CN108776592B (zh) | 2018-05-23 | 2018-05-23 | 一种页面构建的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810503363.5A CN108776592B (zh) | 2018-05-23 | 2018-05-23 | 一种页面构建的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108776592A true CN108776592A (zh) | 2018-11-09 |
CN108776592B CN108776592B (zh) | 2022-04-05 |
Family
ID=64027558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810503363.5A Active CN108776592B (zh) | 2018-05-23 | 2018-05-23 | 一种页面构建的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108776592B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110221848A (zh) * | 2019-04-23 | 2019-09-10 | 五八有限公司 | App页面更新方法、装置、电子设备及存储介质 |
CN110389754A (zh) * | 2019-06-18 | 2019-10-29 | 北京奇艺世纪科技有限公司 | 业务处理方法、***、服务器、终端、电子设备及存储介质 |
WO2021135598A1 (zh) * | 2020-05-29 | 2021-07-08 | 平安科技(深圳)有限公司 | 基于索引和值引更新前端页面的方法、装置、计算机设备 |
CN113094043A (zh) * | 2019-12-23 | 2021-07-09 | 北京神州泰岳软件股份有限公司 | 一种页面布局方法、装置和页面开发平台 |
CN114090083A (zh) * | 2020-07-31 | 2022-02-25 | 中移(苏州)软件技术有限公司 | 一种可视化组件配置方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130017337A (ko) * | 2011-08-10 | 2013-02-20 | 케이티하이텔 주식회사 | 하이브리드 앱 개발 플랫폼 구조 및 그 테스트 방법, 그리고 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. |
KR20160012030A (ko) * | 2014-07-23 | 2016-02-02 | 엘지전자 주식회사 | 디스플레이 장치 및 그의 동작 방법 |
CN105354013A (zh) * | 2014-08-18 | 2016-02-24 | 阿里巴巴集团控股有限公司 | 应用界面渲染方法及装置 |
CN105354014A (zh) * | 2014-08-18 | 2016-02-24 | 阿里巴巴集团控股有限公司 | 应用界面渲染展示方法及装置 |
CN107391169A (zh) * | 2017-06-09 | 2017-11-24 | 口碑控股有限公司 | 安卓页面的动态更新方法和装置 |
CN107463405A (zh) * | 2017-08-04 | 2017-12-12 | 深圳市华傲数据技术有限公司 | 一种应用程序的更新方法及装置 |
CN107608691A (zh) * | 2017-08-18 | 2018-01-19 | 阿里巴巴集团控股有限公司 | 一种页面更新方法和装置 |
CN107967139A (zh) * | 2016-10-17 | 2018-04-27 | 网易(杭州)网络有限公司 | 游戏的热更新方法及装置 |
-
2018
- 2018-05-23 CN CN201810503363.5A patent/CN108776592B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130017337A (ko) * | 2011-08-10 | 2013-02-20 | 케이티하이텔 주식회사 | 하이브리드 앱 개발 플랫폼 구조 및 그 테스트 방법, 그리고 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. |
KR20160012030A (ko) * | 2014-07-23 | 2016-02-02 | 엘지전자 주식회사 | 디스플레이 장치 및 그의 동작 방법 |
CN105354013A (zh) * | 2014-08-18 | 2016-02-24 | 阿里巴巴集团控股有限公司 | 应用界面渲染方法及装置 |
CN105354014A (zh) * | 2014-08-18 | 2016-02-24 | 阿里巴巴集团控股有限公司 | 应用界面渲染展示方法及装置 |
CN107967139A (zh) * | 2016-10-17 | 2018-04-27 | 网易(杭州)网络有限公司 | 游戏的热更新方法及装置 |
CN107391169A (zh) * | 2017-06-09 | 2017-11-24 | 口碑控股有限公司 | 安卓页面的动态更新方法和装置 |
CN107463405A (zh) * | 2017-08-04 | 2017-12-12 | 深圳市华傲数据技术有限公司 | 一种应用程序的更新方法及装置 |
CN107608691A (zh) * | 2017-08-18 | 2018-01-19 | 阿里巴巴集团控股有限公司 | 一种页面更新方法和装置 |
Non-Patent Citations (2)
Title |
---|
姚燕: "动态软件更新—文献综述和实验研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
张昕等: "反射中间件研究综述", 《计算机科学》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110221848A (zh) * | 2019-04-23 | 2019-09-10 | 五八有限公司 | App页面更新方法、装置、电子设备及存储介质 |
CN110389754A (zh) * | 2019-06-18 | 2019-10-29 | 北京奇艺世纪科技有限公司 | 业务处理方法、***、服务器、终端、电子设备及存储介质 |
CN110389754B (zh) * | 2019-06-18 | 2023-12-15 | 北京奇艺世纪科技有限公司 | 业务处理方法、***、服务器、终端、电子设备及存储介质 |
CN113094043A (zh) * | 2019-12-23 | 2021-07-09 | 北京神州泰岳软件股份有限公司 | 一种页面布局方法、装置和页面开发平台 |
WO2021135598A1 (zh) * | 2020-05-29 | 2021-07-08 | 平安科技(深圳)有限公司 | 基于索引和值引更新前端页面的方法、装置、计算机设备 |
CN114090083A (zh) * | 2020-07-31 | 2022-02-25 | 中移(苏州)软件技术有限公司 | 一种可视化组件配置方法、装置、设备及存储介质 |
CN114090083B (zh) * | 2020-07-31 | 2023-08-15 | 中移(苏州)软件技术有限公司 | 一种可视化组件配置方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108776592B (zh) | 2022-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108776592A (zh) | 一种页面构建的方法、装置、设备及存储介质 | |
CN108279932B (zh) | 一种移动终端动态配置用户界面方法和装置 | |
CN106843828B (zh) | 界面显示、加载方法及装置 | |
WO2020155777A1 (zh) | Ui自动化功能测试方法、测试装置、测试设备及存储介质 | |
US10659566B1 (en) | Demo recording utility | |
CN104978194B (zh) | 一种网页前端开发方法及装置 | |
CN104899047B (zh) | 网页框架部署方法和*** | |
CN104731589A (zh) | 用户界面的自动生成方法及自动生成装置 | |
CN105138448A (zh) | 一种在前端测试页面的方法和装置 | |
CN107885551A (zh) | 一种服务部署方法、装置、可读介质及存储控制器 | |
CN106293743A (zh) | 一种移动建模***及构建移动应用并实现跨平台发布的方法 | |
CN108829378A (zh) | 一种应用软件的开发方法、装置及电子设备 | |
CN106997298A (zh) | 一种应用资源获取方法及装置 | |
CN105700925A (zh) | 一种app的界面实现方法和装置 | |
CN108023918A (zh) | 一种服务信息获取方法、装置及*** | |
CN106055334A (zh) | 代码管理***及方法 | |
US20160004515A1 (en) | Method for providing application development environment and device | |
CN107688529A (zh) | 组件调试方法和装置 | |
CN105893073A (zh) | 应用程序的更新方法、业务服务器、推送服务器和*** | |
CN104424225B (zh) | 基于文件传输过程的文件处理方法及装置 | |
CN107301137A (zh) | Rset接口实现方法和装置及电子设备和计算机可读存储介质 | |
CN107797823A (zh) | 业务规则管理方法、装置、存储介质和计算机设备 | |
CN102779045B (zh) | 一种界面生成方法、界面编辑器及电子设备 | |
CN113641591A (zh) | 测试用例生成方法及装置、测试方法及装置 | |
CN105278971A (zh) | 一种移动终端安装包的批量生成方法及装置 |
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 |