CN112764746A - 数据处理方法、装置、电子设备及存储介质 - Google Patents
数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112764746A CN112764746A CN201911061692.XA CN201911061692A CN112764746A CN 112764746 A CN112764746 A CN 112764746A CN 201911061692 A CN201911061692 A CN 201911061692A CN 112764746 A CN112764746 A CN 112764746A
- Authority
- CN
- China
- Prior art keywords
- data
- logic module
- user interface
- module
- updated
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 28
- 238000009877 rendering Methods 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 19
- 238000004806 packaging method and process Methods 0.000 claims abstract description 9
- 238000000034 method Methods 0.000 claims description 41
- 238000004891 communication Methods 0.000 claims description 25
- 230000015654 memory Effects 0.000 claims description 20
- 230000007246 mechanism Effects 0.000 claims description 13
- 238000012795 verification Methods 0.000 claims description 7
- 239000000126 substance Substances 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 9
- 230000008569 process Effects 0.000 description 17
- 239000000243 solution Substances 0.000 description 15
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007790 scraping Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了数据处理方法、装置、电子设备及存储介质,互联网应用技术,尤其涉及浏览器及终端本地应用数据处理技术,具体实现方案为:宿主应用的逻辑模块,拉取用于更新的远程资源包;其中,宿主应用的代码包括逻辑模块和视图模块,逻辑模块用于将用户界面数据进行封装,视图模块用于根据封装的用户界面数据进行用户界面的渲染;逻辑模块根据远程资源包确定待更新数据;逻辑模块通过通道将获取到的待更新数据状态发送至视图模块;视图模块根据待更新数据状态,进行用户界面的渲染;视图模块在渲染后的用户界面中接收事件信息,通过通道将事件信息反馈至逻辑模块。便于进行升级更新,提高更新效率。
Description
技术领域
本申请涉及互联网应用技术,尤其涉及浏览器及终端本地应用数据处理技术。
背景技术
目前大量应用功能都需要基于移动终端来实现,具体的解决方案有多种,例如,某个应用功能可以开发成客户端、H5(HTML 5)页面、混合Hybrid形式或小程序等,可统称为应用功能的移动端。
但是,在需要进行移动端的更新时,需要为不同解决方案的移动端分别编辑更新数据包,无法实现一套代码完成多个解决方案移动端的更新,因此更新效率低。
发明内容
本申请提供一种数据处理方法、装置、电子设备及存储介质,以优化移动端的实现方案,便于进行升级更新,提高更新效率。
第一方面,本申请实施例提供了一种数据处理方法,应用于作为移动端的宿主应用,方法包括:
宿主应用的逻辑模块,拉取用于更新的远程资源包;其中,宿主应用的代码包括逻辑模块和视图模块,逻辑模块用于将用户界面数据进行封装,视图模块用于根据封装的用户界面数据进行用户界面的渲染;
逻辑模块根据远程资源包确定待更新数据;
逻辑模块通过通道将获取到的待更新数据状态发送至视图模块;
视图模块根据待更新数据状态,进行用户界面的渲染;
视图模块在渲染后的用户界面中接收事件信息,通过通道将事件信息反馈至逻辑模块。
上述申请实施例能够由逻辑模块进行用户界面数据的封装,由视图模块对用户界面数据进行渲染;逻辑模块拉取用于更新的远程资源包后,根据远程资源包确定待更新数据,通过通道将获取的待更新数据状态发送至视图模块;视图模块根据待更新数据状态进行用户界面的渲染,在渲染后的用户界面中接收事件信息,通过通道将事件信息反馈至逻辑模块。用户界面数据的内容的变化是由逻辑模块判定出用户界面显示的内容发生变化所触发的,可实现由数据驱动视图的更新。由于逻辑模块与视图模块功能分离,逻辑模块仅负责宿主应用的逻辑,而不同解决方案中对数据处理的逻辑是相同的,区别往往在于界面的不同,因此可实现使用一套代码完成多个解决方案移动端的更新,提高更新效率。在更新时,逻辑模块处理需要更新的数据更新状态,无需考虑版本问题,进而解除版本限制,提高易用性。
在上述申请的一个实施例中,若宿主应用的类型为本地应用客户端,则逻辑模块通过第一网页控件加载,视图模块通过第二网页控件加载;通道为网页控件之间的进程间通信。
在上述申请实施例中,网页控件为终端中运行的进程,使用网页控件加载逻辑模块和视图模块,并通过进程间通信实现逻辑模块与视图模块间的通信,进程使用系统资源进行计算,计算速度快,进程间通信的数据传输速度快且稳定,能够在本地应用客户端中实现高效的数据更新。
在上述申请的一个实施例中,若宿主应用的类型为浏览器,则逻辑模块和视图模块通过浏览器进行加载;
相应的,逻辑模块通过通道将获取到的待更新数据状态发送至视图模块,包括:
逻辑模块基于发布订阅者事件机制,向视图模块发送待更新数据状态的数据状态更新事件,以进行事件订阅;
相应的,视图模块在渲染后的用户界面中接收事件信息,通过通道将事件信息反馈至逻辑模块,包括:
视图模块在渲染后的用户界面中接收事件信息,通过发布订阅者事件机制,将事件信息反馈至订阅了事件信息的逻辑模块。
在上述申请实施例中,浏览器中通过加载逻辑模块和视图模块,能够在浏览器中基于发布订阅者事件机制,实现逻辑模块与视图模块之间的数据交互,在浏览器中实现高效的数据更新。
在上述申请的一个实施例中,视图模块中包括H5组件或系统原生控件,用于渲染生成用户界面。在上述申请实施例中,可以使用H5页面或系统原生控件,进而实现多元化的页面显示。在浏览器中视图模块使用H5页面能够实现轻便准确的界面显示。
在上述申请的一个实施例中,在视图模块根据待更新数据状态,进行用户界面的渲染之前,还包括:
若宿主应用的类型为本地应用客户端,则视图模块使用Schema协议调用系统原生控件;
视图模块将系统原生控件覆盖至待更新数据的H5页面。
在上述申请实施例中,在本地应用客户端中使用H5组件和系统原生控件相结合的方式,能够提供类似系统原生的展示效果,同时具备系统原生控件的响应效率,提高页面性能,解决页面闪烁的问题。
在上述申请的一个实施例中,还包括:若宿主应用的类型为本地应用客户端,则逻辑模块在获取到用户界面打开指示时,建立对应于各打开的用户界面的历史栈,历史栈包括一个或多个网页控件,历史栈的栈顶为当前显示的网页控件,历史栈中存储有以当前显示的网页控件为栈顶的网页控件层级序列,每个网页控件表示一个对应于用户界面的视图对象。
在上述申请实施例中,使用历史栈存储一个或多个网页控件,形成视图对象的历史记录,不仅能够存储页面中的数据,还能够为用户提供准确的返回页面,提高页面访问准确性。
在上述申请的一个实施例中,在建立对应于各打开的用户界面的历史栈之后,还包括:逻辑模块根据用户当前访问的用户界面,对历史栈进行更新。
在上述申请实施例中,在建立历史栈后,根据用户当前访问的视图对象对历史栈的内容进行调整,使得历史栈的栈顶为当前访问的视图对象,使得历史栈能够与用户访问的视图对象匹配,提高历史栈的实时性。
在上述申请的一个实施例中,还包括:
在运行宿主应用时,逻辑模块通过服务器判断是否需要更新版本;
若判断需要更新版本,如果宿主应用为本地应用客户端,逻辑模块通过内容分发网络CDN获取本地资源包,根据本地资源包进行代码更新;
若判断需要更新版本,如果宿主应用为浏览器,逻辑模块通过访问预设域名加载浏览器资源包,根据浏览器包进行代码更新。
在上述申请实施例中,逻辑模块能够通过服务器确定是否需要更新,当需要更新时,本地应用客户端通过内容分发网络获取本地资源包,并以此进行更新;浏览器通过访问预设域名加载浏览器资源包,并以此进行更新,资源包用于对本地应用客户端或浏览器中的逻辑模块、通道以及视图模块的代码进行更新,实现热更新。
在上述申请的一个实施例中,根据本地资源包进行代码更新,包括:
若宿主应用的类型为本地应用客户端,则逻辑模块根据本地资源包的URL、本地资源包的MD5以及配置文件TOKEN,对本地资源包进行校验,校验成功时,根据本地资源包进行代码更新。
在上述申请实施例中,在使用本地资源包进行更新之前,使用本地资源包的URL、本地资源包的MD5以及配置文件TOKEN进行校验,能够提高更新行为的安全性和准确性。
在上述申请的一个实施例中,宿主应用的逻辑模块,拉取用于更新的远程资源包,包括:
若宿主应用的类型为本地应用客户端,如果本地资源包加载失败,则系统启动浏览器,将浏览器应用作为新的宿主应用,以重新执行拉取操作。
在上述申请实施例中,可以在本地资源包加载失败时,使用浏览器作为新的宿主应用,并使用浏览器包进行更新显示,保障用户体验,提高可靠性。
在上述申请的一个实施例中,逻辑模块根据远程资源包确定待更新数据,包括:
逻辑模块根据远程资源包中携带的数据的待更新数据状态确定待更新数据,数据包括:用户界面显示的内容数据;逻辑模块在本地缓存中根据待更新数据进行数据更新。
在上述申请实施例中,逻辑模块根据待更新数据状态,能够对用户界面显示的内容数据进行更新,实现数据驱动视图的实时更新,同时本地缓存提供了持久化缓存能力,提升页面性能。
第二方面,本申请实施例还提供了一种数据处理装置,应用于作为移动端的宿主应用,宿主应用的代码包括逻辑模块和视图模块,逻辑模块用于将用户界面数据进行封装,视图模块用于根据封装的用户界面数据进行用户界面的渲染;
逻辑模块用于,拉取用于更新的远程资源包;
逻辑模块还用于,根据远程资源包确定待更新数据;
逻辑模块还用于,通过通道将获取到的待更新数据状态发送至视图模块;
视图模块用于,根据待更新数据状态,进行用户界面的渲染;
视图模块还用于,在渲染后的用户界面中接收事件信息,通过通道将事件信息反馈至逻辑模块。
上述申请实施例能够由逻辑模块进行用户界面数据的封装,由视图模块对用户界面数据进行渲染;逻辑模块拉取用于更新的远程资源包后,根据远程资源包确定待更新数据,通过通道将获取的待更新数据状态发送至视图模块;视图模块根据待更新数据状态进行用户界面的渲染,在渲染后的用户界面中接收事件信息,通过通道将事件信息反馈至逻辑模块。用户界面数据的内容的变化是由逻辑模块判定出用户界面显示的内容发生变化所触发的,可实现由数据驱动视图的更新。由于逻辑模块与视图模块功能分离,逻辑模块仅负责宿主应用的逻辑,而不同解决方案中对数据处理的逻辑是相同的,区别往往在于界面的不同,因此可实现使用一套代码完成多个解决方案移动端的更新,提高更新效率。在更新时,逻辑模块处理需要更新的数据更新状态,无需考虑版本问题,进而解除版本限制,提高易用性。
第三方面,本申请实施例还提供了一种电子设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如第一方面所示的方法。
第四方面,本申请实施例还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行如第一方面所示的方法。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请第一实施例的示意图;
图2是根据本申请第二实施例的示意图;
图3是根据本申请第三实施例的示意图;
图4是根据本申请第四实施例的示意图;
图5是用来实现本申请实施例的数据处理方法的电子设备的框图;
图6是可以实现本申请实施例的数据处理场景图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
实施例一
图1为本申请实施例提供的数据处理方法的示意图,方法应用于端动态化技术,具体可以为移动终端上的动态更新显示的情况。该方法可以由移动终端执行,移动终端可以为智能手机、平板电脑、个人计算机等。该方法应用于作为移动端的宿主应用,宿主应用为执行本申请提供的数据处理方法的应用,宿主应用可以为本地应用客户端(Native App)也可以为浏览器。
通常不同的宿主应用需要分别编辑代码,但同一个软件逻辑在不同宿主应用(又称宿主环境)中运行时,主体逻辑相同,不同仅在于适应不同的宿主应用,因此容易出现重复开发的问题。为了避免重复开发,减少工作量,本申请实施例提供了一种应用结构,包括系统层、容器层和视图层。容器层位于系统层与视图层之间。
系统层运行有操作系统,如安卓系统(Android)或苹果系统(iOS)。
容器层相当于本申请实施例中的逻辑模块,包括:浏览器内核(Browser)、桥保护(Bridge Provider)、本地应用客户端的应用程序接口(Native API)、硬件访问接口(Hardware API)以及扩展应用程序接口(Inject API)或系统数据库对象的调用接口(Schema)。
其中,浏览器内核(Browser)用于为用户提供网络信息的浏览功能,以及访问外部域名的功能。桥保护(Bridge Provider)用于建立容器层与视图层之间的连接,完成容器层与视图层之间的数据通信。通过本地应用客户端的应用程序接口(Native API)可对本地应用客户端中的数据进行处理,如获取数据的更新情况。硬件访问接口可以用于向本地存储器(如缓存)读写数据。扩展应用程序接口为备用的可扩充的接口。系统数据库对象的调用接口可以调用系统数据库中的原生组件。
视图层相当于本申请实施例中的视图模块,包括:H5页面及模板(H5Pages/template)、H5页面软件架构(Framework)、Java语言编辑的通道(JavaScript Bridge,JsBridge),本地应用客户端活动(Native Activities)。
视图层主要用于进行界面的渲染,例如基于H5页面软件架构对H5页面及模板的渲染,以及本地应用客户端活动的渲染。Java语言编辑的通道(JsBridge)用于在H5页面与本地应用客户端之间进行双向通信。
基于前述应用架构,本申请实施例提供的数据处理方法包括:
步骤110、宿主应用的逻辑模块,拉取用于更新的远程资源包。
当用户界面数据发生变化时,逻辑模块通过服务器拉取更新的远程资源包。服务器为移动终端提供应用程序接口(Application Programming Interface,API),远程资源包中包括宿主应用前台显示的数据。可选的,远程资源包中可以标识出数据是否需要更。
其中,宿主应用的代码包括逻辑模块和视图模块,逻辑模块用于将用户界面数据进行封装,视图模块用于根据封装的用户界面数据进行用户界面的渲染。
本申请实施例中,将宿主应用的代码拆分为两部分,分别为逻辑模块和视图模块。逻辑模块(Service)用于将用户界面数据进行封装,并对数据进行逻辑处理。视图模块(View)用于根据封装的用户界面数据进行用户界面(User Interface,UI)的渲染。
逻辑模块与视图模块之间的关系为主从(Master-Worker)关系。一个逻辑模块可以与多个视图模块通信,每个视图模块用于渲染一个视图对象,视图对象可以为页面。一个页面中显示有多个数据。
例如,本地应用客户端可以为网盘应用,同时用户通过浏览器也可访问到网盘。在一个网盘界面中,一个页面中包含的数据可以为:会员信息、用户被允许使用的网盘容量、用户基本信息或网盘中的商品列表等。
步骤120、逻辑模块根据远程资源包确定待更新数据。
逻辑模块对远程资源包进行解析。服务器反馈给逻辑模块的远程资源包中可通过数据状态(state)描述每个数据的更新情况。逻辑模块根据每个数据的数据状态可确定待更新数据。
进一步的,逻辑模块根据远程资源包中携带的数据的待更新数据状态确定待更新数据,数据包括:用户界面显示的内容数据;逻辑模块在本地缓存中根据待更新数据进行数据更新。
在宿主应用运行过程中,可以使用对用户界面中显示的内容数据进行实时更细。当某个内容数据需要变更时,逻辑模块除了通知视图模块进行渲染之外,还可以对存储的变更前的数值进行修改,以便缓存中存储的数据的实时性。
逻辑模块根据待更新数据状态,能够对用户界面显示的内容数据进行更新,实现数据驱动视图的实时更新,同时本地缓存提供了持久化缓存能力,提升页面性能。
步骤130、逻辑模块通过通道将获取到的待更新数据状态发送至视图模块。
逻辑模块与视图模块通过通道(tunnel)进行通信,可以根据宿主应用的不同配置不同的通道,通过桥保护(Bridge Provider)抹平Native App和移动端浏览器的环境差异性。桥保护(Bridge Provider)中适配有多种业务线提供的桥连能力,如应用程序接口API注入、系统数据库调用schema协议等。业务方只需根据桥保护提供的标准接口对侨连能力进行注入即可。此外,桥保护(Bridge Provider)可以通知客户端代为发送异步化接口请求(统一接口鉴权),利用客户端持久化缓存能力存储接口数据。
步骤140、视图模块根据待更新数据状态,进行用户界面的渲染。
视图模块通过通道接收到待更新数据状态,对待更新数据状态标识的数据进行渲染,达到更新显示。视图模块渲染得到的用户界面为用户通过移动终端屏幕观看到的画面。
步骤150、视图模块在渲染后的用户界面中接收事件信息,通过通道将事件信息反馈至逻辑模块。
用户除了观看移动终端显示的用户界面以及用户界面中包含的数据外,还可以通过触摸屏输入操作,如点击某个按钮、输入某个信息等。用户在用户界面执行操作时,视图模块获取到该操作并将该操作转换为事件,并将该事件通过通道反馈至逻辑模块。逻辑模块基于接收到的事件信息对用户操作进行响应。
本申请实施例能够由逻辑模块进行用户界面数据的封装,由视图模块对用户界面数据进行渲染;逻辑模块拉取用于更新的远程资源包后,根据远程资源包确定待更新数据,通过通道将获取的待更新数据状态发送至视图模块;视图模块根据待更新数据状态进行用户界面的渲染,在渲染后的用户界面中接收事件信息,通过通道将事件信息反馈至逻辑模块。用户界面数据的内容的变化是由逻辑模块判定出用户界面显示的内容发生变化所触发的,可实现由数据驱动视图的更新。由于逻辑模块与视图模块功能分离,逻辑模块仅负责宿主应用的逻辑,而不同解决方案中对数据处理的逻辑是相同的,区别往往在于界面的不同,因此可实现使用一套代码完成多个解决方案移动端的更新,提高更新效率。在更新时,逻辑模块处理需要更新的数据更新状态,无需考虑版本问题,进而解除版本限制,提高易用性。
实施例二
图2为本申请实施例提供的数据处理方法的示意图,作为对上述实施例的进一步说明,宿主应用的类型为本地应用客户端,上述方法还包括:逻辑模块通过第一网页控件加载,视图模块通过第二网页控件加载;通道为网页控件之间的进程间通信。整体流程可以通过下述方式进行实施:
步骤210、通过第一网页控件加载宿主应用的逻辑模块;通过第二网页控件加载宿主应用的视图模块。
网页控件(WebView)用于在本地应用程序客户端中模拟浏览器,进行网络资源的加载和显示。每个网页控件由一个进程执行。
可以使用DefinePlugin和Tree-shaking技术在前端工程化中构建适用于本地应用客户端的代码包。
步骤220、逻辑模块,拉取用于更新的远程资源包。
步骤230、逻辑模块根据远程资源包确定待更新数据。
步骤240、逻辑模块通过网页控件之间的进程间通信(Inter-ProcessCommunication,IPC)将获取到的待更新数据状态发送至视图模块。
第一网页控件和第二网页控件均有进行执行。由于第一网页控件加载有逻辑模块,第二网页控件加载有视图模块,因此逻辑模块与视图模块之间的通信实际为两个进程之间的通信。此时,可以使用进程间通信作为通道,将逻辑模块获取到的待更新数据状态传送至视图模块。
步骤250、视图模块根据待更新数据状态,进行用户界面的渲染。
当宿主应用为本地应用客户端时,视图模块用于渲染的对象包括H5组件和/或系统原生控件。H5组件具有极强的自定义属性,可以自由编辑板式与内容。系统原生控件属于操作系统原生的组件,其渲染效果以及展示效率均高于H5组件。在本地应用客户端中可以根据业务需求等因素选择H5组件或系统原生控件,进而实现多元化的页面显示。在浏览器中视图模块使用H5页面能够实现轻便准确的界面显示。
H5组件虽然具有较高的可编辑性,但是系统允许显示H5组件的位置是有限的,H5组件影响面较小,且容易出现动画卡顿、页面闪烁等问题。基于此,除了独立使用H5组件或系统原生控件之外,还可以基于系统原生控件的混合开发(Hybrid),实现将H5组件与系统原生控件相结合。
在步骤250之前,若宿主应用的类型为本地应用客户端,则视图模块使用Schema协议调用系统原生控件;视图模块将系统原生控件覆盖至待更新数据的H5页面。
Schema协议用于进行系统数据库对象的调用,通过Schema协议能够调用系统原生控件,如Header、TabBar等。调用系统原生组件后,视图模块对原生组件进行渲染,然后,在网页控件(WebView)加载之前,将已渲染的系统原生控件覆盖到H5页面上,实现H5组件与系统原生控件相结合。特别是对于系统不允许H5组件显示的位置,可以通过调用和渲染系统原生组件覆盖到该位置上。
在本申请实施例中,在本地应用客户端中使用H5组件和系统原生控件相结合的方式,能够提供类似系统原生的展示效果,同时具备系统原生控件的响应效率,提高页面性能,解决页面闪烁、动画卡顿的问题。
步骤260、视图模块在渲染后的用户界面中接收事件信息,通过网页控件之间的进程间通信将事件信息反馈至逻辑模块。
进一步的,对于本地应用客户端,用户在使用过程中会出现页面的跳转,并产生浏览轨迹。通常历史记录只记录用户浏览过的网页的地址,但这种方式容易出现再次访问上级页面时,页面中的数据异常的情况,基于此,上述方法还包括:
若宿主应用的类型为本地应用客户端,则逻辑模块在获取到用户界面打开指示时,建立对应于各打开的用户界面的历史栈。
其中,历史栈包括一个或多个网页控件,历史栈的栈顶为当前显示的网页控件,历史栈中存储有以当前显示的网页控件为栈顶的网页控件层级序列,每个网页控件表示一个对应于用户界面的视图对象。
逻辑模块维护一个栈结构。栈中存储视图对象,视图对象除了包括网页控件的地址,即统一资源定位符(Uniform Resource Locator,URL),还包括网页控件中的数据,如用户输入的或系统根据用户在先操作生成的数据等。
本地应用客户端中每个视图对象均为一个独立的网页控件。为了模拟原生应用的页面跳转操作,网页控件数量不超过上限数量,上限数量可以为9个。页面间参数传递统一使用查询字符串querystring格式,使Native App的历史栈与移动端浏览器功能类似。查询字符串querystring格式为统一资源定位符中问号之后的部分,用于定位网页控件。
随着用户的浏览,逻辑模块根据用户当前访问的用户界面,对历史栈进行更新。
用户访问初始页(如首页)时,将初始页存入栈的底部,此时栈中只有初始页,初始页同时作为栈底和栈顶。当用户浏览初始页的下级菜单时,将用户浏览的下级菜单(如二级页)存储栈,下级菜单作为新的栈顶,初始页作为栈底。以此类推,如果用户持续点击访问当前页面的下级页面,则持续将下级页面入栈,作为新的栈顶。
当用户访问当前页面的上一级菜单时,从栈中,将该当前页面删除,并存入用户访问的该上一级菜单。实现根据用户访问情况实时调整栈内数据。
用户对页面的访问方式包括逐级访问、打开页面、重定向以及后退等。示例性的,在一个使用场景中,本地应用客户端的视图对象包括首页、二级页、专辑页、单品页。
在一种情况中,当用户逐级访问首页、二级页、专辑页、单品页时,历史栈中从栈顶到栈底的数据内容呈一下变化,“首页”、“二级页-首页”、“专辑页-二级页-首页”、“单品页-专辑页-二级页-首页”。
在另一种情况中,历史栈的数据内容为“单品页-专辑页-二级页-首页”,此时,若用户重新打开二级页,则将打开的新的二级页面添加到栈顶,历史栈中的数据内容为“二级页-单品页-专辑页-二级页-首页”。
在另一种情况中,历史栈的数据内容为“单品页-专辑页-二级页-首页”,此时,若用户在单品页中重定向二级页面,则将历史栈中栈顶的单品页修改为二级页,历史栈中的数据内容为“二级页-专辑页-二级页-首页”。
在再一种情况中,历史栈的数据内容为“二级页-单品页-专辑页-二级页-首页”,当用户返回时,将栈顶的二级页出栈,历史栈中的数据内容为“单品页-专辑页-二级页-首页”。当用户再次点击返回时,将栈顶的单品页出栈,历史栈中的数据内容为“专辑页-二级页-首页”。
本申请实施例中,网页控件为终端中运行的进程,使用网页控件加载逻辑模块和视图模块,并通过进程间通信实现逻辑模块与视图模块间的通信,进程使用系统资源进行计算,计算速度快,进程间通信的数据传输速度快且稳定,能够在本地应用客户端中实现高效的数据更新。
实施例三
图3为本申请实施例提供的数据处理方法的示意图,作为对上述实施例的进一步说明,若宿主应用的类型可以为浏览端,上述方法还包括:若宿主应用的类型为浏览器,则逻辑模块和视图模块通过浏览器进行加载,整体流程可以通过下述方式进行实施:
步骤310、通过浏览器加载逻辑模块和视图模块。
在浏览器中,使用JavaScript脚本模拟实现逻辑模块和视图模块。可以使用DefinePlugin和Tree-shaking技术在前端工程化中构建适用于浏览器的代码包。由于不同宿主环境存在差异性,需要使用DefinePlugin和Tree-shaking技术在前端工程化中进行差异化构建,同一套代码形成适应不同宿主环境的代码包。
步骤320、逻辑模块,拉取用于更新的远程资源包。
步骤330、逻辑模块根据远程资源包确定待更新数据。
步骤340、逻辑模块基于发布订阅者事件机制,向视图模块发送待更新数据状态的数据状态更新事件,以进行事件订阅。
浏览器中事件监听(Event-listen)的方式对事件进行传输。视图模块可订阅数据更新事件,逻辑模块当确定更新数据时,根据待更新数据状态生成一个更新事件,逻辑模块发布该更新事件。此时视图模块可接收到其订阅的数据更新事件,完成数据的传输。或者,视图模块也可订阅逻辑模块发布的全部事件。
步骤350、视图模块根据待更新数据状态,进行用户界面的渲染。
浏览器中的视图模块中可包括H5组件或系统原生控件,用于渲染生成用户界面。优选的,使用H5组件进行渲染。
步骤360、视图模块在渲染后的用户界面中接收事件信息,通过发布订阅者事件机制,将事件信息反馈至订阅了事件信息的逻辑模块。
发布订阅者事件机制是一个双向的数据交互机制。逻辑模块可定于视图模块发布的全部时间。当用户在用户界面中输入用户操作时,视图模块生成用户操作对应的事件信息,发布该事件信息。逻辑模块若预先订阅了该事件,或预先订阅了视图模块发布的全部事件,则逻辑模块可接收到该事件信息。
本申请实施例中,浏览器通过JavaScript语言加载逻辑模块和视图模块,能够在浏览器中基于发布订阅者事件机制,实现逻辑模块与视图模块之间的数据交互,在浏览器中实现高效的数据更新。
实施例四
图4为本申请实施例提供的数据处理方法的示意图,作为对上述实施例的进一步说明,包括:
步骤410、在运行宿主应用时,逻辑模块通过服务器判断是否需要更新版本。
服务器为移动终端提供更新查询接口,可通过AJAX请求(Requet)的形式发起请求,逻辑模块通过该接口可以将移动终端本地的版本发送至服务器,服务器比较最新版本与逻辑模块上传的版本,若两个版本相同,则无需更新。若逻辑模块上传的版本低于最新版本,则确定需要更新。
步骤420、若判断需要更新版本,如果宿主应用为本地应用客户端,逻辑模块通过内容分发网络(Content Delivery Network,CDN)获取本地资源包,根据本地资源包进行代码更新。
内容分发网络CDN可快速的为逻辑模块发送本地资源包。本地资源包中包含有新版本的逻辑模块、视图模块以及通道的代码。
进一步的,若宿主应用的类型为本地应用客户端,则逻辑模块根据本地资源包的URL、本地资源包的MD5以及配置文件TOKEN,对本地资源包进行校验,校验成功时,根据本地资源包进行代码更新。
由于网页插件的更新包有多重,为了保证下载的本地资源包是准确的,可以使用本地资源包的URL、本地资源包的MD5以及配置文件TOKEN对本地资源包进行校验。
在上述申请实施例中,在使用本地资源包进行更新之前,使用本地资源包的URL、本地资源包的MD5以及配置文件TOKEN进行校验,能够提高更新行为的安全性和准确性。
步骤430、若判断需要更新版本,如果宿主应用为浏览器,逻辑模块通过访问服务器加载浏览器资源包,根据浏览器包进行代码更新。
步骤440、宿主应用的逻辑模块,拉取用于更新的远程资源包。
步骤450、逻辑模块根据远程资源包确定待更新数据。
步骤460、逻辑模块通过通道将获取到的待更新数据状态发送至视图模块。
步骤470、视图模块根据待更新数据状态,进行用户界面的渲染。
步骤480、视图模块在渲染后的用户界面中接收事件信息,通过通道将事件信息反馈至逻辑模块。
需要说明的是,步骤410至步骤430可以位于步骤440至步骤480之前、之中或之后执行。
进一步的,若宿主应用的类型为本地应用客户端,如果本地资源包加载失败,则系统启动浏览器,将浏览器应用作为新的宿主应用,以重新执行拉取操作。
当本地应用客户端的逻辑模块出现远程配置信息或者资源包加载失败,或者本地资源包及配置信息丢失的情况时,无法进行代码更新更新。为了保证能够为用户继续提供稳定的服务,启动浏览器,并加载浏览器资源包,浏览器通过访问预设域名可获取到更新的代码,根据更新的代码对浏览器中的逻辑模块、视图模块以及通道的代码进行热更新。
在上述申请实施例中,可以在本地资源包加载失败时,使用浏览器作为新的宿主应用,并使用浏览器包进行更新显示,保障用户体验,提高可靠性。
进一步的,在构建资源包时,也可以对本地资源包进行校验,校验成功后,更新服务器端的本地资源包。构建资源包包括构建本地资源包和浏览器资源包。开始构建后,1)建立并完成对本地资源包的编辑,得到本地资源包的初始文档。2)对本地资源包的初始文档进行压缩,得到本地资源包。3)上传本地资源包。4)判断是否上传成功。如果上传成功,则执行5)如果上传不成功返回执行1)。5)根据本地资源包的URL、本地资源包的MD5以及配置文件TOKEN进行校验。6)判断是否校验成功。如果校验成功,则执行7)如果校验不成功,则返回执行1)。7)建立并完成对本地资源包的编辑,得到浏览器资源包。
下面通过一个示例对本实施例中本地应用客户端对本地资源包的获取过程进行说明,此示例中可以由逻辑模块判断是否启动更新,下述步骤由逻辑模块执行,具体包括:
1)加载本地和远程的配置信息(如版本信息)
2)判断是否加载成功。如果加载成功则执行3)如果不成功则执行4)。
3)判断资源是否需要更新。如果需要更新,则执行5)。如果不需要更新执行6)。
4)启动浏览器应用,通过浏览器应用获取浏览器资源包,加载浏览器资源包,完成资源更新。
5)通过内容分发网络获取远程的本地资源包,加载远程的本地资源包。执行7)
6)如果资源不需要更新,则判断本地是否存在本地资源包。如果存在则使用本地资源包进行渲染,完成更新。如果本地不存在本地资源包,则返回执行5)。
7)判断本地资源包是否加载成功。如果加载成功则执行8),如果加载不成功,则执行4)。
8)如果本地资源包加载成功,则使用本地资源包的URL、本地资源包的MD5以及配置文件TOKEN进行校验。如果校验成功,则执行9),如果不成功,则执行4)。
9)解压本地资源包,根据本地资源包进行渲染。在缓存中存储配置以及资源,以完成本地资源包的更新。
本申请实施例逻辑模块能够在需要更新时,本地应用客户端通过内容分发网络获取本地资源包,并以此进行更新;浏览器通过访问预设域名加载浏览器资源包,并以此进行更新,资源包用于对本地应用客户端或浏览器中的逻辑模块、通道以及视图模块的代码进行更新,实现热更新。
实施例五
图5为本申请实施例五提供的数据处理装置500的结构示意图,应用于作为移动端的宿主应用,宿主应用的代码包括逻辑模块501和视图模块502,逻辑模块501用于将用户界面数据进行封装,视图模块502用于根据封装的用户界面数据进行用户界面的渲染;
逻辑模块501用于,拉取用于更新的远程资源包;
逻辑模块501还用于,根据远程资源包确定待更新数据;
逻辑模块501还用于,通过通道503将获取到的待更新数据状态发送至视图模块502;
视图模块502用于,根据待更新数据状态,进行用户界面的渲染;
视图模块502还用于,在渲染后的用户界面中接收事件信息,通过通道将事件信息503反馈至逻辑模块501。
进一步的,还包括加载模块,用于若宿主应用的类型为本地应用客户端,则逻辑模块501通过第一网页控件加载,视图模块502通过第二网页控件加载;通道503为网页控件之间的进程间通信。
进一步的,加载模块用于,若宿主应用的类型为浏览器,则逻辑模块501和视图模块502通过浏览器进行加载;
逻辑模块501还用于,基于发布订阅者事件机制,向视图模块502发送待更新数据状态的数据状态更新事件,以进行事件订阅;
视图模块502还用于,在渲染后的用户界面中接收事件信息,通过发布订阅者事件机制,将事件信息反馈至订阅了事件信息的逻辑模块501。
进一步的,视图模块502中包括H5组件或系统原生控件,用于渲染生成用户界面。
进一步的,视图模块502还用于,若宿主应用的类型为本地应用客户端,则使用Schema协议调用系统原生控件;
视图模块502将系统原生控件覆盖至待更新数据的H5页面。
进一步的,逻辑模块501还用于:若宿主应用的类型为本地应用客户端,则在获取到用户界面打开指示时,建立对应于各打开的用户界面的历史栈,历史栈包括一个或多个网页控件,历史栈的栈顶为当前显示的网页控件,历史栈中存储有以当前显示的网页控件为栈顶的网页控件层级序列,每个网页控件表示一个对应于用户界面的视图对象。
进一步的,逻辑模块501还用于:逻辑模块501根据用户当前访问的用户界面,对历史栈进行更新。
进一步的,逻辑模块501还用于:在运行宿主应用时,逻辑模块501通过服务器判断是否需要更新版本;
若判断需要更新版本,如果宿主应用为本地应用客户端,逻辑模块501通过内容分发网络CDN获取本地资源包,根据本地资源包进行代码更新;
若判断需要更新版本,如果宿主应用为浏览器,逻辑模块501通过访问服务器加载浏览器资源包,根据浏览器包进行代码更新。
进一步的,逻辑模块501还用于:若宿主应用的类型为本地应用客户端,则逻辑模块501根据本地资源包的URL、本地资源包的MD5以及配置文件TOKEN,对本地资源包进行校验,校验成功时,根据本地资源包进行代码更新。
进一步的,还包括启动模块,用于若宿主应用的类型为本地应用客户端,如果本地资源包加载失败,则系统启动浏览器,将浏览器应用作为新的宿主应用,以重新执行拉取操作。
进一步的,逻辑模块501还用于,根据远程资源包中携带的数据的待更新数据状态确定待更新数据,数据包括:用户界面显示的内容数据;
逻辑模块501在本地缓存中根据待更新数据进行数据更新。
本申请实施例能够由逻辑模块501进行用户界面数据的封装,由视图模块502对用户界面数据进行渲染;逻辑模块501拉取用于更新的远程资源包后,根据远程资源包确定待更新数据,通过通道503将获取的待更新数据状态发送至视图模块502;视图模块502根据待更新数据状态进行用户界面的渲染,在渲染后的用户界面中接收事件信息,通过通道503将事件信息反馈至逻辑模块501。用户界面数据的内容的变化是由逻辑模块501判定出用户界面显示的内容发生变化所触发的,可实现由数据驱动视图的更新。由于逻辑模块501与视图模块502功能分离,逻辑模块501仅负责宿主应用的逻辑,而不同解决方案中对数据处理的逻辑是相同的,区别往往在于界面的不同,因此可实现使用一套代码完成多个解决方案移动端的更新,提高更新效率。在更新时,逻辑模块501处理需要更新的数据更新状态,无需考虑版本问题,进而解除版本限制,提高易用性。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图6所示,是根据本申请实施例的数据处理方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图6所示,该电子设备包括:一个或多个处理器601、存储器602,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图6中以一个处理器601为例。
存储器602即为本申请所提供的非瞬时计算机可读存储介质。其中,存储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本申请所提供的数据处理方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的数据处理方法。
存储器602作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的数据处理方法对应的程序指令/模块(例如,附图5所示的逻辑模块501、视图模块502和通道503)。处理器601通过运行存储在存储器602中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据处理方法。
存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据数据处理的电子设备的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器602可选包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至数据处理的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
数据处理方法的电子设备还可以包括:输入装置603和输出装置604。处理器601、存储器602、输入装置603和输出装置604可以通过总线或者其他方式连接,图6中以通过总线连接为例。
输入装置603可接收输入的数字或字符信息,以及产生与数据处理的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置604可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本申请实施例的技术方案,能够由逻辑模块进行用户界面数据的封装,由视图模块对用户界面数据进行渲染;逻辑模块拉取用于更新的远程资源包后,根据远程资源包确定待更新数据,通过通道将获取的待更新数据状态发送至视图模块;视图模块根据待更新数据状态进行用户界面的渲染,在渲染后的用户界面中接收事件信息,通过通道将事件信息反馈至逻辑模块。用户界面数据的内容的变化是由逻辑模块判定出用户界面显示的内容发生变化所触发的,可实现由数据驱动视图的更新。由于逻辑模块与视图模块功能分离,逻辑模块仅负责宿主应用的逻辑,而不同解决方案中对数据处理的逻辑是相同的,区别往往在于界面的不同,因此可实现使用一套代码完成多个解决方案移动端的更新,提高更新效率。在更新时,逻辑模块处理需要更新的数据更新状态,无需考虑版本问题,进而解除版本限制,提高易用性。
在上述申请实施例中,网页控件为终端中运行的进程,使用网页控件加载逻辑模块和视图模块,并通过进程间通信实现逻辑模块与视图模块间的通信,进程使用系统资源进行计算,计算速度快,进程间通信的数据传输速度快且稳定,能够在本地应用客户端中实现高效的数据更新。
在上述申请实施例中,浏览器中通过JavaScript语言加载逻辑模块和视图模块,能够在浏览器中基于发布订阅者事件机制,实现逻辑模块与视图模块之间的数据交互,在浏览器中实现高效的数据更新。
在上述申请实施例中,可以使用H5页面或系统原生控件,进而实现多元化的页面显示。在浏览器中视图模块使用H5页面能够实现轻便准确的界面显示。
在上述申请实施例中,在本地应用客户端中使用H5组件和系统原生控件相结合的方式,能够提供类似系统原生的展示效果,同时具备系统原生控件的响应效率,提高页面性能,解决页面闪烁的问题。
在上述申请实施例中,使用历史栈存储一个或多个网页控件,形成视图对象的历史记录,不仅能够存储页面中的数据,还能够为用户提供准确的返回页面,提高页面访问准确性。
在上述申请实施例中,在建立历史栈后,根据用户当前访问的视图对象对历史栈的内容进行调整,使得历史栈的栈顶为当前访问的视图对象,使得历史栈能够与用户访问的视图对象匹配,提高历史栈的实时性。
在上述申请实施例中,逻辑模块能够通过服务器确定是否需要更新,当需要更新时,本地应用客户端通过内容分发网络获取本地资源包,并以此进行更新;浏览器通过访问预设域名加载浏览器资源包,并以此进行更新,资源包用于对本地应用客户端或浏览器中的逻辑模块、通道以及视图模块的代码进行更新,实现热更新。
在上述申请实施例中,在使用本地资源包进行更新之前,使用本地资源包的URL、本地资源包的MD5以及配置文件TOKEN进行校验,能够提高更新行为的安全性和准确性。
在上述申请实施例中,可以在本地资源包加载失败时,使用浏览器作为新的宿主应用,并使用浏览器包进行更新显示,保障用户体验,提高可靠性。
在上述申请实施例中,逻辑模块根据待更新数据状态,能够对用户界面显示的内容数据进行更新,实现数据驱动视图的实时更新,同时本地缓存提供了持久化缓存能力,提升页面性能。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (14)
1.一种数据处理方法,其特征在于,应用于作为移动端的宿主应用,所述方法包括:
所述宿主应用的逻辑模块,拉取用于更新的远程资源包;其中,所述宿主应用的代码包括逻辑模块和视图模块,所述逻辑模块用于将用户界面数据进行封装,所述视图模块用于根据封装的用户界面数据进行用户界面的渲染;
所述逻辑模块根据所述远程资源包确定待更新数据;
所述逻辑模块通过通道将获取到的待更新数据状态发送至所述视图模块;
所述视图模块根据所述待更新数据状态,进行用户界面的渲染;
所述视图模块在渲染后的用户界面中接收事件信息,通过所述通道将所述事件信息反馈至所述逻辑模块。
2.根据权利要求1所述的数据处理方法,其特征在于:
若所述宿主应用的类型为本地应用客户端,则所述逻辑模块通过第一网页控件加载,所述视图模块通过第二网页控件加载;所述通道为网页控件之间的进程间通信。
3.根据权利要求1所述的数据处理方法,其特征在于:
若所述宿主应用的类型为浏览器,则所述逻辑模块和所述视图模块通过所述浏览器进行加载;
相应的,所述逻辑模块通过通道将获取到的待更新数据状态发送至所述视图模块,包括:
所述逻辑模块基于发布订阅者事件机制,向所述视图模块发送待更新数据状态的数据状态更新事件,以进行事件订阅;
相应的,所述视图模块在渲染后的用户界面中接收事件信息,通过所述通道将所述事件信息反馈至所述逻辑模块,包括:
所述视图模块在渲染后的用户界面中接收事件信息,通过发布订阅者事件机制,将所述事件信息反馈至订阅了事件信息的逻辑模块。
4.根据权利要求2或3所述的数据处理方法,其特征在于,所述视图模块中包括H5组件或系统原生控件,用于渲染生成用户界面。
5.根据权利要求2所述的数据处理方法,其特征在于,在所述视图模块根据所述待更新数据状态,进行用户界面的渲染之前,还包括:
若所述宿主应用的类型为本地应用客户端,则所述视图模块使用Schema协议调用系统原生控件;
所述视图模块将所述系统原生控件覆盖至待更新数据的H5页面。
6.根据权利要求2所述的数据处理方法,其特征在于,还包括:
若所述宿主应用的类型为本地应用客户端,则所述逻辑模块在获取到用户界面打开指示时,建立对应于各打开的用户界面的历史栈,所述历史栈包括一个或多个网页控件,所述历史栈的栈顶为当前显示的网页控件,所述历史栈中存储有以所述当前显示的网页控件为栈顶的网页控件层级序列,每个网页控件表示一个对应于用户界面的视图对象。
7.根据权利要求6所述的数据处理方法,其特征在于,在建立对应于各打开的用户界面的历史栈之后,还包括:
所述逻辑模块根据用户当前访问的用户界面,对所述历史栈进行更新。
8.根据权利要求1所述的数据处理方法,其特征在于,还包括:
在运行所述宿主应用时,所述逻辑模块通过服务器判断是否需要更新版本;
若判断需要更新版本,如果所述宿主应用为本地应用客户端,所述逻辑模块通过内容分发网络CDN获取本地资源包,根据所述本地资源包进行代码更新;
若判断需要更新版本,如果所述宿主应用为浏览器,所述逻辑模块通过访问服务器加载浏览器资源包,根据所述浏览器包进行代码更新。
9.根据权利要求8所述的数据处理方法,其特征在于,根据所述本地资源包进行代码更新,包括:
若所述宿主应用的类型为本地应用客户端,则所述逻辑模块根据本地资源包的URL、所述本地资源包的MD5以及配置文件TOKEN,对所述本地资源包进行校验,校验成功时,根据所述本地资源包进行代码更新。
10.根据权利要求8所述的数据处理方法,其特征在于,还包括:
若所述宿主应用的类型为本地应用客户端,如果本地资源包加载失败,则系统启动浏览器,将所述浏览器应用作为新的宿主应用,以重新执行拉取操作。
11.根据权利要求1所述的数据处理方法,其特征在于,所述逻辑模块根据所述远程资源包确定待更新数据,包括:
所述逻辑模块根据远程资源包中携带的数据的待更新数据状态确定待更新数据,所述数据包括:用户界面显示的内容数据;
所述逻辑模块在本地缓存中根据待更新数据进行数据更新。
12.一种数据处理装置,其特征在于,应用于作为移动端的宿主应用,所述宿主应用的代码包括逻辑模块和视图模块,所述逻辑模块用于将用户界面数据进行封装,所述视图模块用于根据封装的用户界面数据进行用户界面的渲染;
所述逻辑模块用于,拉取用于更新的远程资源包;
所述逻辑模块还用于,根据所述远程资源包确定待更新数据;
所述逻辑模块还用于,通过通道将获取到的待更新数据状态发送至所述视图模块;
所述视图模块用于,根据所述待更新数据状态,进行用户界面的渲染;
所述视图模块还用于,在渲染后的用户界面中接收事件信息,通过所述通道将所述事件信息反馈至所述逻辑模块。
13.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-11中任一项所述的方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911061692.XA CN112764746B (zh) | 2019-11-01 | 2019-11-01 | 数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911061692.XA CN112764746B (zh) | 2019-11-01 | 2019-11-01 | 数据处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112764746A true CN112764746A (zh) | 2021-05-07 |
CN112764746B CN112764746B (zh) | 2024-04-09 |
Family
ID=75692371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911061692.XA Active CN112764746B (zh) | 2019-11-01 | 2019-11-01 | 数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112764746B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407292A (zh) * | 2021-08-16 | 2021-09-17 | 北京蔚领时代科技有限公司 | Ui数据处理系统 |
CN113434176A (zh) * | 2021-06-29 | 2021-09-24 | 青岛海尔科技有限公司 | 数据更新处理方法、装置、存储介质及电子装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020143800A1 (en) * | 2001-01-24 | 2002-10-03 | Henrik Lindberg | Model view controller |
US20080243935A1 (en) * | 2007-03-27 | 2008-10-02 | International Business Machines Corporation | Method, apparatus, and computer program product for managing data in a browser-based application |
US20090313004A1 (en) * | 2008-06-16 | 2009-12-17 | Real Dice Inc. | Platform-Independent Application Development Framework |
US20100082123A1 (en) * | 2008-09-30 | 2010-04-01 | Rockwell Automation Technologies, Inc. | Modular object and host matching |
US20100082130A1 (en) * | 2008-09-30 | 2010-04-01 | Rockwell Automation Technologies, Inc. | Modular object publication and discovery |
US20110010390A1 (en) * | 2009-07-13 | 2011-01-13 | Vmware, Inc. | Concurrency control in a file system shared by application hosts |
CN103605499A (zh) * | 2012-10-29 | 2014-02-26 | 百度在线网络技术(北京)有限公司 | 应用程序的开发装置及方法、应用程序的控制装置及方法 |
CN106991154A (zh) * | 2017-03-29 | 2017-07-28 | 百度在线网络技术(北京)有限公司 | 网页渲染方法、装置、终端及服务器 |
US20180176097A1 (en) * | 2016-12-21 | 2018-06-21 | You I Labs Inc. | System and method for cloud-based user interface application deployment |
CN109766098A (zh) * | 2019-01-09 | 2019-05-17 | 腾讯科技(深圳)有限公司 | 应用程序的运行方法、设备及存储介质 |
-
2019
- 2019-11-01 CN CN201911061692.XA patent/CN112764746B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020143800A1 (en) * | 2001-01-24 | 2002-10-03 | Henrik Lindberg | Model view controller |
US20080243935A1 (en) * | 2007-03-27 | 2008-10-02 | International Business Machines Corporation | Method, apparatus, and computer program product for managing data in a browser-based application |
US20090313004A1 (en) * | 2008-06-16 | 2009-12-17 | Real Dice Inc. | Platform-Independent Application Development Framework |
US20100082123A1 (en) * | 2008-09-30 | 2010-04-01 | Rockwell Automation Technologies, Inc. | Modular object and host matching |
US20100082130A1 (en) * | 2008-09-30 | 2010-04-01 | Rockwell Automation Technologies, Inc. | Modular object publication and discovery |
US20110010390A1 (en) * | 2009-07-13 | 2011-01-13 | Vmware, Inc. | Concurrency control in a file system shared by application hosts |
CN103605499A (zh) * | 2012-10-29 | 2014-02-26 | 百度在线网络技术(北京)有限公司 | 应用程序的开发装置及方法、应用程序的控制装置及方法 |
US20180176097A1 (en) * | 2016-12-21 | 2018-06-21 | You I Labs Inc. | System and method for cloud-based user interface application deployment |
CN106991154A (zh) * | 2017-03-29 | 2017-07-28 | 百度在线网络技术(北京)有限公司 | 网页渲染方法、装置、终端及服务器 |
CN109766098A (zh) * | 2019-01-09 | 2019-05-17 | 腾讯科技(深圳)有限公司 | 应用程序的运行方法、设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434176A (zh) * | 2021-06-29 | 2021-09-24 | 青岛海尔科技有限公司 | 数据更新处理方法、装置、存储介质及电子装置 |
CN113407292A (zh) * | 2021-08-16 | 2021-09-17 | 北京蔚领时代科技有限公司 | Ui数据处理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112764746B (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11144711B2 (en) | Webpage rendering method, device, electronic apparatus and storage medium | |
US11025750B2 (en) | Determining whether to perform requests at a server or at a client device based on resources provided by the client device | |
CN110704136B (zh) | 小程序组件的渲染方法、客户端、电子设备及存储介质 | |
CN111158818A (zh) | 一种页面渲染方法和装置 | |
CN109165050B (zh) | 程序的运行方法、装置、计算设备以及存储介质 | |
WO2023093429A1 (zh) | 微应用的运行方法、装置、设备、存储介质及程序产品 | |
CN111158799A (zh) | 一种页面渲染方法、装置、电子设备及存储介质 | |
CN111478956B (zh) | 小程序包的部署、预览方法和装置 | |
CN109240697B (zh) | 调用处理方法及装置、存储介质 | |
CN111770161B (zh) | https的嗅探跳转方法和装置 | |
JP5936103B2 (ja) | クライアントでJavaメソッドを呼び出すシステム、コンピュータ、方法及びプログラム | |
WO2020143159A1 (zh) | 一种用户界面的处理方法和装置 | |
US20220027168A1 (en) | Process initiation | |
US11882154B2 (en) | Template representation of security resources | |
US9059959B2 (en) | Client side management of HTTP sessions | |
CN112764746B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US10725797B2 (en) | Service-driven dynamic user interface technology | |
US20210117170A1 (en) | Wrapping method, registration method, device, and rendering apparatus | |
US10042521B1 (en) | Emulation of control resources for use with converted content pages | |
CN104102536A (zh) | 一种数据的展示方法和系统 | |
CN114661274A (zh) | 用于生成智能合约的方法和装置 | |
CN116149639A (zh) | 一种组件开发的方法、装置、电子设备和存储介质 | |
CN113342450A (zh) | 页面处理的方法、装置、电子设备及计算机可读介质 | |
CN113722115A (zh) | 调用接口的方法、装置、设备和计算机可读介质 | |
KR101553539B1 (ko) | 동적 링크 제공 방법 및 이를 수행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 |
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 |