程序的运行方法、装置、计算设备以及存储介质与流程

文档序号:16536081发布日期:2019-01-08 19:54阅读:145来源:国知局
程序的运行方法、装置、计算设备以及存储介质与流程

本申请涉及信息技术领域,尤其涉及一种程序的运行方法、装置、计算设备以及存储介质。



背景技术:

随着信息技术的发展,线上活动可以满足越来越多用户的生活需求,如购物需求、观影需求、理财需求等等。用户可以通过在终端设备上安装各式各样的应用程序来进行线上活动,当用户获取该应用程序时,由于应用程序容量过大导致在下载以及运行该应用程序时都会导致耗时严重的问题,所以减少这种耗时是解决上述问题的关键。



技术实现要素:

本申请提出了以下技术方案,能够加快程序的启动时间以及运行时间。

本申请实例提出了一种程序的运行方法,所述方法包括:响应于程序的第一触发指令,从服务器获取所述程序的第一运行数据,所述第一运行数据至少包括用于启动程序的代码;运行所述第一运行数据,并根据所述第一运行数据展示所述程序的第一页面;响应于所述第一页面中控件的第二触发指令,确定所述控件对应的第二页面标识;当所述第二页面标识对应的运行数据不存在于所述第一运行数据中时,根据所述第二页面标识从所述服务器获取第二运行数据,所述第二运行数据包含所述第二页面标识对应的运行数据;及运行所述第二运行数据,并根据所述第二运行数据展示所述第二页面,所述第二运行数据包括程序的多个部分代码。

本申请实例还提出了一种程序的运行装置,所述装置包括:第一获取模块,响应于程序的第一触发指令,从服务器获取所述程序的第一运行数据,所述第一运行数据至少包括用于启动程序的代码;第一运行模块,运行所述第一运行数据,并根据所述第一运行数据展示所述程序的第一页面;确定模块,响应于所述第一页面中控件的第二触发指令,确定所述控件对应的第二页面标识;第二获取模块,当所述第二页面标识对应的运行数据不存在于所述第一运行数据中时,根据所述第二页面标识从所述服务器获取第二运行数据,所述第二运行数据包含所述第二页面标识对应的运行数据;及第二运行模块,运行所述第二运行数据,并根据所述第二运行数据展示所述第二页面,所述第二运行数据包括程序的多个部分代码。

在一些实例中,所述第二运行模块,当所述第二页面标识对应的运行数据存在于所述第一运行数据中时,运行所述第二页面标识对应的所述运行数据,并根据所述第二页面标识对应的运行数据展示所述第二页面。

在一些实例中,所述第一获取模块包括:发送单元,向所述服务器发送获取请求,所述获取请求携带所述程序的标识;接收单元,接收所述服务器响应于所述获取请求发送的所述第一运行数据。

在一些实例中,所述第一运行模块,通过运行容器运行所述第一运行数据;其中,所述第二运行模块,通过所述运行容器运行所述第二运行数据。

在一些实例中,所述装置进一步包括:存储模块,将获取到的所述第一运行数据存储至本地存储区域中;第一获取模块,获取所述本地存储区域中的所述第一运行数据,并将所述第一运行数据发送至所述运行容器中;当将所述第一运行数据发送至所述运行容器中后,第一运行模块,执行所述通过所述运行容器运行所述第一运行数据的步骤。

在一些实例中,所述第一运行数据包括所述第一页面对应的第一逻辑运行数据以及第一视图运行数据;其中,所述第一获取模块包括:第一获取单元,获取所述本地存储区域中的所述第一逻辑运行数据并发送至运行容器中;第二获取单元,当所述运行容器运行所述第一逻辑运行数据后,获取所述本地存储区域中的所述第一视图运行数据并发送至所述运行容器中,从而展示所述程序的第一页面。

在一些实例中,所述第一运行数据包括多个控件对应的页面跳转路径;其中,所述确定模块,根据所述控件确定第一页面跳转路径,将所述第一页面跳转路径作为所述第二页面标识;其中,所述第二获取模块,当确定所述第一页面跳转路径对应的运行数据不存在于所述第一运行数据中时,根据所述第一页面跳转路径,从所述服务器获取所述第二运行数据。

在一些实例中,所述确定模块,响应于所述第二页面中控件的第三触发指令,根据所述第一运行数据,确定所述第二页面中控件对应的第二页面跳转路径;所述装置进一步包括:第三获取模块,当所述第二页面跳转路径对应的运行数据不存在于所述第一运行数据中以及所述第二运行数据中时,根据所述第二页面跳转路径从所述服务器获取对应的第三运行数据,所述第三运行数据包含所述第二页面跳转路径对应的运行数据;第三运行模块,运行所述第三运行数据,并根据所述第三运行数据展示所述第三页面。

在一些实例中,所述第一运行模块,当所述第二页面跳转路径对应的运行数据存在于所述第一运行数据中时,运行所述第二页面跳转路径对应的运行数据,并根据所述第二页面跳转路径对应的运行数据展示所述第三页面。

在一些实例中,所述第一运行数据还包括所述多个页面跳转路径对应的第一逻辑运行数据以及第一视图运行数据;其中,所述第一获取模块,当确定所述第一页面跳转路径对应的运行数据存在于所述第一运行数据中时,获取所述本地存储区域中的与所述第一页面跳转路径对应的第一逻辑运行数据并发送至运行容器中;当所述运行容器运行所述第一页面跳转路径对应的第一逻辑运行数据后,获取所述本地存储区域中与所述第一页面跳转路径对应的第一视图运行数据并发送至所述运行容器中,从而展示所述程序的所述第二页面。

在一些实例中,所述第二运行数据包括与多个页面跳转路径对应的第二逻辑运行数据以及第二视图运行数据;其中,所述存储模块,将获取到的第二运行数据存储至本地存储区域中;其中,所述第二运行模块包括:获取单元,获取所述本地存储区域中的与第一页面跳转路径对应的第二逻辑运行数据并发送至运行容器中;当所述运行容器运行与第一页面跳转路径对应的第二逻辑运行数据后,获取所述本地存储区域中与第一页面跳转路径对应的第二视图运行数据并发送至所述运行容器中,从而展示所述第二页面。

本申请实例还提出了一种程序的运行方法,所述方法包括:接收表示程序部分代码的组合信息;根据所述组合信息,对所述程序部分代码进行组合,生成多个运行数据;当接收到所述运行数据的第一获取请求时,响应所述第一获取发送表示启动所述程序的第一运行数据;当接收到所述运行数据第二获取请求,所述第二获取请求携带跳转路径,获取与所述跳转路径对应的第二运行数据并响应所述第二获取请求发送所述第二运行数据。

本申请实例还提出了一种程序的运行装置,所述装置包括:接收模块,接收表示程序部分代码的组合信息;生成模块,根据所述组合信息,对所述程序部分代码进行组合,生成多个运行数据;发送模块,当接收到所述运行数据的第一获取请求时,响应所述第一获取发送表示启动所述程序的第一运行数据;发送模块,当接收到所述运行数据第二获取请求,所述第二获取请求携带跳转路径,获取与所述跳转路径对应的第二运行数据并响应所述第二获取请求发送所述第二运行数据。

本申请实例还提出了一种计算设备,包括存储器、处理器以及存储在所述存储器上并在所述处理器上运行的计算机程序;所述处理器执行所述计算机程序时实现上述的方法。

本申请实例还提出了一种存储介质,存储有一个或多个程序,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行上述的方法。

应用本发明的技术方案,可以先拉取程序的启动资源即第一运行数据,减少由于下载量过大而导致的耗时,同时在启动程序时能够加快启动时间,给用户带来良好的使用体验,当用户进行程序操作时,会根据用户的指令来确定待展示的页面标识即第二页面标识,当第二页面标识不存在于启动资源中时,根据第二页面标识拉取程序的其他运行资源,如第二运行数据,该第二运行数据中包含与第二页面标识对应的运行数据,从而大大优化了程序的运行速度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请一个实例的程序的运行方法适用的系统结构示意图;

图2a为本申请一个实例的程序的运行方法的流程图;

图2b为本申请一个实例的程序的运行方法的流程图;

图2c为本申请一个实例的程序的运行方法的流程图;

图3为本申请一个实例的运行分包时页面的展示实例;

图4为本申请一个实例的程序的运行方法的流程图;

图5为本申请一个实例的程序的运行装置的结构示意图;

图6为本申请一个实例的程序的运行装置的结构示意图;

图7为本申请一个实例的计算设备的硬件的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了描述上的简洁和直观,下文通过描述若干代表性的实施例来对本发明的方案进行阐述。实施例中大量的细节仅用于帮助理解本发明的方案。但是很明显,本发明的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本发明的方案,一些实施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”。下文中没有特别指出一个成分的数量时,意味着该成分可以是一个也可以是多个,或可理解为至少一个。

该技术方案基于母应用和子应用系统实现,具体的,子应用是依附于母应用运行的应用程序,可通过母应用下载、启动、运行、关闭子应用。母应用可以是社交应用、专门支持子应用的专用应用、文件管理应用、邮件应用或者游戏应用等。社交应用包括即时通信应用、sns(socialnetworkservice,社交网站)应用或者直播应用等。子应用则是可在母应用提供的环境中实现的应用,子应用具体可以是社交应用、文件管理应用、邮件应用或者游戏应用等。

以母应用为微信,子应用为小程序举例说明,微信小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。小程序搭建了一套在微信应用内运行第三方程序的系统。通过微信扫描二维码,搜索小程序名字,点击分享消息等方法,下载并运行微信小程序(即第三方程序),向用户提供服务。每个微信小程序都有一个对应的代码包,在运行小程序之前需要先把代码包下载到本地。因此在用户侧首次启动必然存在一次下载过程,体积大的代码包会下载耗时,下载耗时会影响启动耗时,体积越大的代码包对启动耗时的影响越大。

图1示出了本申请实例的程序的运行方法适用的系统100结构示意图。该系统100包括服务器101、网络102以及多个终端设备,如终端设备103和终端设备104。

其中,服务器101安装有用于拆分程序的应用服务器软件,将程序拆分成多个分包和一个启动包,服务器101还可以包括多个cdn服务器,将分包以及启动包发送至cdn服务器中,当任一个cdn服务器接收到客户端发送的获取请求,向客户端发送对应的启动包或分包。

终端设备103或104是指具有数据计算处理功能的设备,包括但不限于(安装有通信模块的)智能手机、掌上电脑、平板电脑等。终端设备101上安装有操作系统,包括但不限于:android操作系统、symbian操作系统、windowsmobile操作系统、以及苹果iphoneos操作系统等等。

终端设备103或104安装有客户端(如,社交app),该客户端通过网络102与服务器101进行信息交互,客户端可以发送获取请求至服务器101,来获取分包或启动包。

网络102可以是有线网络,也可以是无线网络。

基于系统100,本申请的实例提出了一种程序的运行方法,应用于终端设备103或104的客户端中。如图2所示,该方法200包括以下步骤:

步骤201:响应于程序的第一触发指令,从服务器获取所述程序的第一运行数据。

其中,第一触发指令可以为程序启动指令。

第一运行数据至少包括用于启动程序的代码,该代码可以为程序启动包,启动包包含有程序启动代码,用于启动程序,该启动包可以只有程序首页运行代码,也可以还有其他功能运行代码。

其中,所述从服务器获取所述程序的第一运行数据,包括:向所述服务器发送获取请求,所述获取请求携带所述程序的标识;接收所述服务器响应于所述获取请求发送的所述第一运行数据。

例如,根据前文所述,用户通过可以通过微信app搜索名称为“xx视频”的小程序,当搜索到该小程序后,用户发出启动该小程序的指令,即点击搜索到的该小程序。微信app响应于该触发指令,向服务器发送小程序获取请求,该获取请求可以携带该小程序的标识,服务器接收到该获取请求后,响应该获取请求,向微信app发送该小程序的启动包。

步骤202:运行所述第一运行数据,并根据所述第一运行数据展示所述程序的第一页面。

其中,第一页面可以为程序的起始页面或首页面。

在一些实例中,所述运行所述第一运行数据包括:通过所述运行容器运行所述第一运行数据。当运行该第一运行数据后,即可展示该小程序的起始页面。

步骤203:响应于所述第一页面中控件的第二触发指令,确定所述控件对应的第二页面标识。

其中,第二触发指令可以包括但不限于为页面跳转指令,如视频观看指令,音乐收听指令、游戏加载指令等。

第二页面可以为非起始页面的其他跳转页面,如,视频观看页面、音乐收听页面等。

控件可以为但不限于:图标、按钮等。

在一些实例中,如图2b所示,所述第一运行数据包括多个控件对应的页面跳转路径;其中,步骤2031:所述确定所述控件对应的第二页面标识,包括:根据所述控件确定第一页面跳转路径,将所述第一页面跳转路径作为所述第二页面标识。

其中,上述多个控件可以包括第一运行数据中包括的多个控件,还可以包括其他运行数据中包括的控件,如第二运行数据中的控件。

例如,根据前文所述,当用户点击视频小程序的起始页面中的视频介绍图标,即用户发出了对该视频进行观看的第二触发指令,微信app响应于该第二触发指令确定页面跳转路径。

步骤204:当所述第二页面标识对应的运行数据不存在于所述第一运行数据中时,根据所述第二页面标识从所述服务器获取所述第二运行数据,所述第二运行数据包括第二页面标识对应的运行数据。

其中,第二运行数据包括程序的多个部分代码,该部分代码可以包括程序分包,分包包含有程序功能代码,用于支持程序的功能运行,该分包中的功能代码可以是一种功能代码,比如电影相关功能代码,也可以是音乐相关功能代码,还可以是新闻相关功能代码。

需要说明的是,小程序的代码可以按照功能进行划分,将同一个功能下的页面的视图和逻辑放置于同一个目录下,对于一些跨功能之间公共逻辑,将其放置于启动包下。

在一些实例中,如图2b所示,步骤2041:所述当所述第二页面标识对应的运行数据不存在于所述第一运行数据中时,根据所述第二页面标识从所述服务器获取所述第二运行数据,包括:当确定所述第一页面跳转路径对应的运行数据不存在于所述第一运行数据中时,根据所述第一页面跳转路径,从所述服务器获取所述第二运行数据。

步骤205:运行所述第二运行数据,并根据所述第二运行数据展示所述第二页面。

在一些实例中,所述运行所述第二运行数据包括:通过所述运行容器运行所述第二运行数据,当运行该第二运行数据后,即可展示该小程序的第二页面。

本技术方案通过对通过将小程序代码包拆分成启动包和多个分包,根据用户的需求,按需加载,使之可以在支持更大的小程序代码包体积的情况下,不影响用户的启动体验。

在一些实例中,所述从服务器获取所述程序的第一运行数据,包括:向所述服务器发送获取请求,所述获取请求携带所述程序的标识;接收所述服务器响应于所述获取请求发送的所述第一运行数据。

例如,根据前文所述,用户通过可以通过微信app搜索名称为“xx视频”的小程序,当搜索到该小程序后,用户发出启动该小程序的指令,即点击搜索到的该小程序。微信app响应于该触发指令,向服务器发送小程序获取请求,该获取请求可以携带该小程序的标识,服务器接收到该获取请求后,响应该获取请求,向微信app发送该小程序的启动包代码。其中,启动包可以仅包含该视频小程序的起始页面的运行代码,如,初始页面视图层代码以及初始页面逻辑代码。

在一些实例中,所述运行所述第一运行数据包括:通过所述运行容器运行所述第一运行数据。其中,所述方法200进一步包括:将获取到的所述第一运行数据存储至本地存储区域中;获取所述本地存储区域中的所述第一运行数据,并将所述第一运行数据发送至所述运行容器中;当将所述第一运行数据发送至所述运行容器中后,执行通过所述运行容器运行所述第一运行数据的步骤。

其中,所述第一运行数据包括所述第一页面对应的第一逻辑运行数据以及第一视图运行数据。

所述获取所述本地存储区域中的所述第一运行数据,并将所述第一运行数据发送至所述运行容器中,包括:获取所述本地存储区域中的所述第一逻辑运行数据并发送至运行容器中;当所述运行容器运行所述第一逻辑运行数据后,获取所述本地存储区域中的所述第一视图运行数据并发送至所述运行容器中,从而展示所述程序的第一页面。

其中,运行容器为javascriptcore运行容器。

第一页面对应的第一逻辑运行数据为第一逻辑代码,即小程序的起始页面逻辑代码。

第一页面对应的第一视图运行数据为第一视图层代码,即小程序的起始页面视图层代码。

例如,根据前文所述,当微信app接收到服务器发送的第一运行数据后,可以将该第一运行数据存储到终端设备的本地存储区域内,微信app从本地存储区域内获取到该第一运行数据,将第一逻辑代码注入到javascriptcore运行容器中,当javascriptcore运行容器运行第一逻辑代码后,注入第一视图层代码,向用户展示该视频小程序的初始页面。

其中,javascriptcore运行容器内可以设置有逻辑层单元以及视图层单元,其中,逻辑层单元可用于执行页面逻辑代码,视图层单元可用于执行页面样式代码即页面视图层代码。逻辑层单元运行页面逻辑代码获取页面数据,并将该页面数据发送至对应视图层单元,视图层单元根据该页面数据对该页面进行渲染,当渲染完成后,该对应视图层单元向逻辑层单元发送渲染完成的通知。在渲染完成后,终端设备的操作系统将该渲染后的页面展示在应用程序窗口中。

在一些实例中,所述方法200进一步包括:当所述第二页面标识对应的运行数据不存在于所述第一运行数据中时,运行所述第二运行数据,并根据所述第二运行数据展示所述第二页面。

所述第一运行数据包括多个控件对应的页面跳转路径;其中,所述确定所述控件对应的第二页面标识,包括:根据所述控件确定第一页面跳转路径,将所述第一页面跳转路径作为所述第二页面标识;所述当所述第二页面标识对应的运行数据不存在于所述第一运行数据中时,从所述服务器获取所述第二运行数据,包括:当确定所述第一页面跳转路径对应的运行数据不存在于所述第一运行数据中时,根据所述第一页面跳转路径,从所述服务器获取所述第二运行数据。

其中,所述第二运行数据包括与多个页面跳转路径对应的第二逻辑运行数据以及第二视图运行数据;其中,所述方法200进一步包括:将获取到的第二运行数据存储至本地存储区域中。

运行所述第二运行数据包括:通过所述运行容器运行所述第二运行数据。

其中,所述运行所述第二运行数据,并根据所述第二运行数据展示所述第二页面,包括:获取所述本地存储区域中的与第一页面跳转路径对应的第二逻辑运行数据并发送至运行容器中;当所述运行容器运行与第一页面跳转路径对应的第二逻辑运行数据后,获取所述本地存储区域中与第一页面跳转路径对应的第二视图运行数据并发送至所述运行容器中,从而展示所述第二页面。

例如,根据前文所述,当用户点击视频小程序的起始页面中的“bb”电影视频介绍图标,即用户发出了对“bb”电影视频进行观看的第二触发指令,根据第一运行数据中存储的控件与页面跳转路径的对应关系,微信app响应于该控件的第二触发指令确定页面跳转路径,如,“aaa”,将该页面跳转路径作为该播放“bb”电影视频的页面标识,先在第一运行数据中查找是否存在与“aaa”对应的运行数据,当不存在运行数据时,则向服务器发送获取请求,该获取请求携带该页面跳转路径“aaa”,服务器根据该页面跳转路径“aaa”查找与该页面跳转路径“aaa”对应的分包代码,即第二运行数据,该分包代码中包含有与该页面跳转路径“aaa”对应的运行数据,服务器将该第二运行数据发送至微信app中,可以将该第二运行数据存储到终端设备的本地存储区域内,微信app从本地存储区域内获取到该第二运行数据,将该页面跳转路径“aaa”对应的第二逻辑代码注入到javascriptcore运行容器中,当javascriptcore运行容器运行该第二逻辑代码后,注入页面跳转路径“aaa”对应的第二视图层代码,向用户展示该视频小程序的第二页面,即播放“bb”电影视频的页面。

需要说明的是,启动包可以存储有该小程序所有控件对应的页面跳转路径,还可以启动包只存储有该启动包中控件对应的页面跳转路径以及分包中都存储有其分包中控件对应的页面跳转路径,当分包中可以存储有其分包中控件对应的页面跳转路径,就可以通过该分包确定页面跳转路径,并在当前已获取到的代码包中查找是否存在与该页面跳转路径对应的运行数据。

在一些实例中,所述方法200进一步包括:当所述第二页面标识对应的运行数据存在于所述第一运行数据中时,运行所述第二页面标识对应的所述运行数据,并根据所述第二页面标识对应的运行数据展示所述第二页面。

在一些实例中,所述第一运行数据还包括所述多个页面跳转路径对应的第一逻辑运行数据以及第一视图运行数据;其中,所述方法200进一步包括:当确定所述第一页面跳转路径对应的运行数据存在于所述第一运行数据中时,获取所述本地存储区域中的与所述第一页面跳转路径对应的第一逻辑运行数据并发送至运行容器中;当所述运行容器运行所述第一页面跳转路径对应的第一逻辑运行数据后,获取所述本地存储区域中与所述第一页面跳转路径对应的第一视图运行数据并发送至所述运行容器中,从而展示所述程序的第一页面。

例如,根据前文所述,当第一运行数据存在该运行数据时,获取所述本地存储区域中的该页面跳转路径“aaa”对应的逻辑代码以及视图层代码,将该页面跳转路径“aaa”对应的逻辑代码注入到javascriptcore运行容器中,当javascriptcore运行容器运行该逻辑代码后,注入页面跳转路径“aaa”对应的视图层代码,向用户展示该视频小程序的第二页面,即播放“bb”电影视频的页面。

应理解,当第一运行数据存在该运行数据时,由于在小程序初始化即启动时,可能只运行了启动逻辑代码以及启动视图层代码,所以当选择第一运行数据中的其他逻辑代码以及对应的视图层代码时,需要将其他逻辑代码以及对应的视图层代码注入到运行容器中。

在一些实例中,如图2c所示,所述方法200进一步包括:步骤206:响应于所述第二页面中控件的第三触发指令,根据所述第一运行数据,确定所述第二页面中控件对应的第二页面跳转路径;当所述第二页面跳转路径对应的运行数据不存在于所述第一运行数据中以及所述第二运行数据中时,根据所述第二页面跳转路径从所述服务器获取对应的第三运行数据;及运行所述第三运行数据,并根据所述第三运行数据展示所述第三页面,所述第三页面包括所述第二页面跳转路径对应的运行数据。

例如,根据前文所述,当用户点击播放“bb”电影视频的页面中的“cc”新闻视频介绍图标时,即用户发出了对“cc”新闻视频进行观看的第三触发指令,根据第一运行数据中存储的控件与页面跳转路径的对应关系,微信app响应于该控件的第三触发指令确定页面跳转路径,如,“ddd”,将该页面跳转路径作为该播放“cc”新闻视频的页面标识,先在第一运行数据以及第二运行数据中查找是否存在与“ddd”对应的运行数据,当均不存在运行数据时,则向服务器发送获取请求,该获取请求携带该页面跳转路径“ddd”,服务器根据该页面跳转路径“ddd”查找与该页面跳转路径“ddd”对应的分包代码,即第三运行数据,该分包代码中包含有与该页面跳转路径“ddd”对应的运行数据,服务器将该第三运行数据发送至微信app中,可以将该第三运行数据存储到终端设备的本地存储区域内,微信app从本地存储区域内获取到该第三运行数据,将该页面跳转路径“ddd”对应的第三逻辑代码注入到javascriptcore运行容器中,当javascriptcore运行容器运行该第三逻辑代码后,注入页面跳转路径“ddd”对应的第三视图层代码,向用户展示该视频小程序的第三页面,即播放“cc”新闻视频的页面。

此外,还可以根据所述第二运行数据,确定所述第二页面中控件对应的第二页面跳转路径。

在一些实例中,如图2c所示,所述方法200进一步包括:步骤207:当所述第二页面跳转路径对应的运行数据存在于所述第一运行数据中以及所述第二运行数据中时,运行所述第二页面跳转路径对应的运行数据,并根据所述第二页面跳转路径对应的运行数据展示所述第三页面。

例如,根据前文所述,当第一运行数据存在该运行数据时或第二运行数据存在该运行数据时,将该页面跳转路径“ddd”对应的逻辑代码注入到javascriptcore运行容器中,当javascriptcore运行容器运行该逻辑代码后,注入页面跳转路径“ddd”对应的视图层代码,向用户展示该视频小程序的第三页面,即播放“cc”新闻视频的页面。

应理解,当第一运行数据存在该运行数据时,由于在小程序初始化即启动时,可能只运行了启动逻辑代码以及启动视图层代码,所以当选择第一运行数据中的其他逻辑代码以及对应的视图层代码时,需要将其他逻辑代码以及对应的视图层代码注入到运行容器中。第二运行数据的运行情况与第一运行数据的运行情况相同,此处就不再赘述。

用户在使用小程序过程中,当微信app运行一个分包代码时,打开页面时,会短暂出现加载页面,通常不会超过1秒,图3示出了该加载页面的实例300,随后分包下的页面即展示在用户眼前。

小程序的启动包与多个分包的总和大小的上限从2mb增加到4mb,业务方可以增加更多小程序功能,用户可以在小程序上获得更丰富的体验。可以通过合理拆分启动包,将启动包控制在较小的体积,可以优化小程序的启动速度。

基于上述实例,本申请的实例提出了一种程序的运行方法,应用于服务器101中。如图4所示,该方法400包括以下步骤:

步骤401:接收表示程序部分代码的组合信息。

例如,开发者根据功能将小程序的代码进行拆分,可以拆分为多个代码文件,即部分代码,分别存储在服务器中,开发者通过在app.json(小程序配置文件)下配置分包组合的路径,即组合信息,即可完成分包的开发,通过微信开发者工具即可一键发布,无需考虑服务端问题。服务器接收微信开发者工具发送的该配置信息文件,即获取到该组合信息。

下述为配置文件中的代码:

步骤402:根据所述组合信息,对所述程序部分代码进行拆分,生成多个运行数据。

例如,根据前文所述,服务器根据配置文件中的启动包以及分包的拆分信息,将多个代码文件进行组合,生成小程序的启动包以及多个分包。可以存储在不同的cdn服务器101a上,其存储地址可以为:

https://servicewhat.xx.com/wxidxxx/main.wxapkg

https://servicewhat.xx.com/wxidxxx/subpackage1.wxapkg

https://servicewhat.xx.com/wxidxxx/subpackage2.wxapkg

步骤403:当接收到所述运行数据的第一获取请求时,响应所述第一获取发送表示启动所述程序的第一运行数据。

例如,根据前文所述,当服务器接收到微信app发送的获取请求,该获取请求可以携带该小程序的标识,响应该获取请求,向微信app发送该小程序的启动包。

步骤404:当接收到所述运行数据第二获取请求,所述第二获取请求携带跳转路径,获取与所述跳转路径对应的第二运行数据并响应所述获取请求发送所述第二运行数据

例如,根据前文所述,微信app向服务器发送代码获取请求,该代码获取请求携带该页面跳转路径“aaa”,服务器根据该页面跳转路径“aaa”查找与该页面跳转路径“aaa”对应的分包代码,即第二运行数据,该分包代码中包含有与该页面跳转路径“aaa”对应的运行数据,服务器将该第二运行数据发送至微信app中。

本技术方案开发成本较低,开发者不需要进行多个配置即可实现将拆分的代码进行组合打包处理,存储在服务器即可,不需要考虑浏览器缓存的情况。

基于上述实例,本申请的实例还提出了一种程序的运行装置,应用于客户端,如社交app;如图5所示,所述装置500包括:第一获取模块501,第一运行模块502,确定模块503,第二获取模块504,第二运行模块505:且各个模块的功能具体如下:

第一获取模块501,响应于程序的第一触发指令,从服务器获取所述程序的第一运行数据,所述第一运行数据至少包括用于启动程序的代码。

第一运行模块502,运行所述第一运行数据,并根据所述第一运行数据展示所述程序的第一页面。

确定模块503,响应于所述第一页面中控件的第二触发指令,确定所述控件对应的第二页面标识。

第二获取模块504,当所述第二页面标识对应的运行数据不存在于所述第一运行数据中时,根据所述第二页面标识从所述服务器获取第二运行数据,所述第二运行数据包含所述第二页面标识对应的运行数据。

第二运行模块505,运行所述第二运行数据,并根据所述第二运行数据展示所述第二页面,所述第二运行数据包括程序的多个部分代码。

在一些实例中,所述第二运行模块505,当所述第二页面标识对应的运行数据存在于所述第一运行数据中时,运行所述第二页面标识对应的所述运行数据,并根据所述第二页面标识对应的运行数据展示所述第二页面。

在一些实例中,所述第一获取模块501包括:发送单元,向所述服务器发送获取请求,所述获取请求携带所述程序的标识;接收单元,接收所述服务器响应于所述获取请求发送的所述第一运行数据。

在一些实例中,所述第一运行模块502,通过运行容器运行所述第一运行数据;其中,所述第二运行模块505,通过所述运行容器运行所述第二运行数据。

在一些实例中,所述装置500进一步包括:存储模块,将获取到的所述第一运行数据存储至本地存储区域中;第一获取模块501,获取所述本地存储区域中的所述第一运行数据,并将所述第一运行数据发送至所述运行容器中;当将所述第一运行数据发送至所述运行容器中后,第一运行模块502,执行所述通过所述运行容器运行所述第一运行数据的步骤。

在一些实例中,所述第一运行数据包括所述第一页面对应的第一逻辑运行数据以及第一视图运行数据;其中,所述第一获取模块501包括:第一获取单元,获取所述本地存储区域中的所述第一逻辑运行数据并发送至运行容器中;第二获取单元,当所述运行容器运行所述第一逻辑运行数据后,获取所述本地存储区域中的所述第一视图运行数据并发送至所述运行容器中,从而展示所述程序的第一页面。

在一些实例中,所述第一运行数据包括多个控件对应的页面跳转路径;其中,所述确定模块503,根据所述控件确定第一页面跳转路径,将所述第一页面跳转路径作为所述第二页面标识;其中,所述第二获取模块504,当确定所述第一页面跳转路径对应的运行数据不存在于所述第一运行数据中时,根据所述第一页面跳转路径,从所述服务器获取所述第二运行数据。

在一些实例中,所述确定模块503,响应于所述第二页面中控件的第三触发指令,根据所述第一运行数据,确定所述第二页面中控件对应的第二页面跳转路径;所述装置500进一步包括:第三获取模块,当所述第二页面跳转路径对应的运行数据不存在于所述第一运行数据中以及所述第二运行数据中时,根据所述第二页面跳转路径从所述服务器获取对应的第三运行数据,所述第三运行数据包含所述第二页面跳转路径对应的运行数据;第三运行模块,运行所述第三运行数据,并根据所述第三运行数据展示所述第三页面。

在一些实例中,所述第一运行模块502,当所述第二页面跳转路径对应的运行数据存在于所述第一运行数据中时,运行所述第二页面跳转路径对应的运行数据,并根据所述第二页面跳转路径对应的运行数据展示所述第三页面。

在一些实例中,所述第一运行数据还包括所述多个页面跳转路径对应的第一逻辑运行数据以及第一视图运行数据;其中,所述第一获取模块501,当确定所述第一页面跳转路径对应的运行数据存在于所述第一运行数据中时,获取所述本地存储区域中的与所述第一页面跳转路径对应的第一逻辑运行数据并发送至运行容器中;当所述运行容器运行所述第一页面跳转路径对应的第一逻辑运行数据后,获取所述本地存储区域中与所述第一页面跳转路径对应的第一视图运行数据并发送至所述运行容器中,从而展示所述程序的所述第二页面。

在一些实例中,所述第二运行数据包括与多个页面跳转路径对应的第二逻辑运行数据以及第二视图运行数据;其中,所述存储模块,将获取到的第二运行数据存储至本地存储区域中;其中,所述第二运行模块505包括:获取单元,获取所述本地存储区域中的与第一页面跳转路径对应的第二逻辑运行数据并发送至运行容器中;当所述运行容器运行与第一页面跳转路径对应的第二逻辑运行数据后,获取所述本地存储区域中与第一页面跳转路径对应的第二视图运行数据并发送至所述运行容器中,从而展示所述第二页面。

基于上述实例,本申请的实例还提出了一种程序的运行装置,应用于服务器101中;如图6所示,所述装置600包括:接收模块601,生成模块602以及发送模块603:且各个模块的功能具体如下:

接收模块601,接收表示程序部分代码的组合信息。

生成模块602,根据所述组合信息,对所述程序部分代码进行组合,生成多个运行数据。

发送模块603,当接收到所述运行数据的第一获取请求时,响应所述第一获取发送表示启动所述程序的第一运行数据。

发送模块603,当接收到所述运行数据第二获取请求,所述第二获取请求携带跳转路径,获取与所述跳转路径对应的第二运行数据并响应所述第二获取请求发送所述第二运行数据。

图7示出了运行装置500和/或运行装置600所在的计算设备700的组成结构图。此计算设备700可以是服务器。如图7所示,该计算设备包括一个或者多个处理器(cpu)702、通信模块704、存储器706、用户接口710,以及用于互联这些组件的通信总线708。

处理器702可通过通信模块704接收和发送数据以实现网络通信和/或本地通信。

用户接口710包括一个或多个输出设备712,其包括一个或多个扬声器和/或一个或多个可视化显示器。用户接口710也包括一个或多个输入设备714,其包括诸如,键盘,鼠标,声音命令输入单元或扩音器,触屏显示器,触敏输入板,姿势捕获摄像机或其他输入按钮或控件等。

存储器706可以是高速随机存取存储器,诸如dram、sram、ddrram、或其他随机存取固态存储设备;或者非易失性存储器,诸如一个或多个磁盘存储设备、光盘存储设备、闪存设备,或其他非易失性固态存储设备。

存储器706存储处理器702可执行的指令集,包括:

操作系统716,包括用于处理各种基本系统服务和用于执行硬件相关任务的程序;

应用718,包括用于视频播放的各种应用程序,这种应用程序能够实现上述各实例中的处理流程,比如可以包括图5所示的运行装置500中的部分或全部模块,各模块501-505中的至少一个模块可以存储有机器可执行指令,处理器702通过执行存储器706中各模块501-505中至少一个模块中的机器可执行指令,进而能够实现上述各模块501-505中的至少一个模块的功能。

比如可以包括图6所示的运行装置600中的部分或全部模块,各模块601-603中的至少一个模块可以存储有机器可执行指令,处理器702通过执行存储器706中各模块601-603中至少一个模块中的机器可执行指令,进而能够实现上述各模块601-603中的至少一个模块的功能。

需要说明的是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,实际实现时,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。

各实施例中的硬件模块可以以硬件方式或硬件平台加软件的方式实现。上述软件包括机器可读指令,存储在非易失性存储介质中。因此,各实施例也可以体现为软件产品。

各例中,硬件可以由专门的硬件或执行机器可读指令的硬件实现。例如,硬件可以为专门设计的永久性电路或逻辑器件(如专用处理器,如fpga或asic)用于完成特定的操作。硬件也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理器或其它可编程处理器)用于执行特定操作。

另外,本申请的每个实例可以通过由数据处理设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本申请。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和或内存)中执行。因此,这样的存储介质也构成了本申请,本申请还提供了一种非易失性存储介质,其中存储有数据处理程序,这种数据处理程序可用于执行本申请上述方法实例中的任何一种实例。

图5和/或图6中的模块对应的机器可读指令可以使计算机上操作的操作系统等来完成这里描述的部分或者全部操作。非易失性计算机可读存储介质可以是插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器。安装在扩展板或者扩展单元上的cpu等可以根据指令执行部分和全部实际操作。

另外,在本申请各个实例中的装置及各模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上装置或模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1