1.本技术涉及应用程序更新技术领域,尤其涉及一种应用程序更新方法、装置、计算机设备及存储介质。
背景技术:2.weex是一款开源的轻量级的移动端跨平台动态性技术解决方案,作为通用跨平台的 web开发语言,能够完美兼顾性能与动态性,让移动开发者通过简单的前端语法写出native级别的性能体验。在开发native app的时候存在一些弊端,比如客户端需要频繁发版进行更新,weex能有效解决移动端频繁发版这一痛点。
3.在现有技术中,weex页面更新后的移动应用在第一次访问时,需要通过服务器下载最新的更新包,然后解压到本地,加载后才能进行页面的渲染,这一过程耗时比较长,降低了页面的访问速度和用户体验。
技术实现要素:4.本技术实施例提供一种应用程序更新方法、装置、计算机设备及存储介质,用于提高应用程序的更新效率。
5.本发明实施例提供一种应用程序更新方法,所述方法包括:当前客户端触发进入目标weex页面时,检测本地是否存储有最新版本的所述目标weex页面对应的weex文件;若确定本地未存储有最新版本的与所述目标weex页面对应的weex文件,则从服务器获取最新版本的目标weex页面对应的weex压缩包,所述weex压缩包中包括页面共用压缩包和页面专用压缩包,所述页面共用压缩包中存储有应用程序中多个页面共用的代码;加载最新版本的目标weex页面对应的weex压缩包;对所述页面共用压缩包、所述页面专用压缩包和基础文件中的代码进行拼接,得到目标代码,所述基础文件为本地存储的应用程序中所有页面共用的代码;根据所述目标代码更新所述目标weex页面。
6.本发明实施例提供一种应用程序更新装置,所述装置包括:检测模块,用于当前客户端触发进入目标weex页面时,检测本地是否存储有最新版本的所述目标weex页面对应的weex文件;获取模块,用于若确定本地未存储有最新版本的与所述目标weex页面对应的weex文件,则从服务器获取最新版本的目标weex页面对应的weex压缩包,所述weex压缩包中包括页面共用压缩包和页面专用压缩包,所述页面共用压缩包中存储有应用程序中多个页面共用的代码;加载模块,用于加载最新版本的目标weex页面对应的weex压缩包;拼接模块,用于对所述页面共用压缩包、所述页面专用压缩包和基础文件中的代码进行拼接,得到目标代码,所述基础文件为本地存储的应用程序中所有页面共用的代码;
更新模块,用于根据所述目标代码更新所述目标weex页面。
7.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述应用程序更新方法。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述应用程序更新方法。
9.本发明提供一种应用程序更新方法、装置、计算机设备及存储介质,当前客户端触发进入目标weex页面时,检测本地是否存储有最新版本的所述目标weex页面对应的weex文件;若确定本地未存储有最新版本的与所述目标weex页面对应的weex文件,则从服务器获取最新版本的目标weex页面对应的weex压缩包,weex压缩包中包括页面共用压缩包和页面专用压缩包,加载最新版本的目标weex页面对应的weex压缩包;对页面共用压缩包、页面专用压缩包和基础文件中的代码进行拼接,得到目标代码,根据目标代码更新目标weex页面。由于本发明中的页面共用压缩包中存储有应用程序中多个页面共用的代码,基础文件为本地存储的应用程序中所有页面共用的代码,因此在获取目标weex页面对应的weex压缩包时,可仅获取其页面专用压缩包,从而减少了获取从服务器获取压缩包的时间紧,然后对页面共用压缩包、页面专用压缩包和基础文件中的代码进行拼接,得到目标代码,基于目标代码对目标weex页面进行更新,进而提高了应用程序的更新效率。
附图说明
10.图1为本技术提供的应用程序更新方法流程图;图2为本技术提供的应用程序更新装置的结构示意图。
11.图3为本技术提供的计算机设备的一示意图。
具体实施方式
12.为了更好的理解上述技术方案,下面通过附图以及具体实施例对本技术实施例的技术方案做详细的说明,应当理解本技术实施例以及实施例中的具体特征是对本技术实施例技术方案的详细的说明,而不是对本技术技术方案的限定,在不冲突的情况下,本技术实施例以及实施例中的技术特征可以相互组合。
13.请参阅图1,为本发明当中的应用程序更新方法,应用于客户端,该方法具体包括步骤s101
‑
步骤s105:步骤s101,当前客户端触发进入目标weex页面时,检测本地是否存储有最新版本的目标weex页面对应的weex文件。
14.需要说明的是,应用程序中包括多个weex页面,每个weex页面都是独立的单页应用,且每个weex页面对应有weex文件。当用户的客户端触发进入应用程序中的某个目标weex页面时,客户端自动触发判断其本地是否存储有最新版本的目标weex页面对应的weex文件。
15.步骤s102,若确定本地未存储有最新版本的与目标weex页面对应的weex文件,则从服务器获取最新版本的目标weex页面对应的weex压缩包。
16.weex压缩包内部结构包括:images及packages。其中,images存储的是weex加载的本地图片资源,packages里面存储的是weex的各种js文件,每个文件夹里面都有个
entry.js文件,分别对应一个activity页面,每个entry.js文件里面都包含一些重复性代码,造成weex压缩包比较大,造成下载较慢等问题。为了解决这个问题,本发明实施例对每个weex压缩包划分为页面共用压缩包和页面专用压缩包。其中,所述weex压缩包中包括页面共用压缩包和页面专用压缩包,所述页面共用压缩包中存储有应用程序中多个页面共用的代码,页面专用压缩包中存储到是对应页面的专属的程序更新代码。
17.需要说明的是,对于应用程序的一个模块通常由多个weex页面组成,每个weex页面都是独立的单页应用。weex页面之间存在很多相同的代码,如果不进行公共代码提取的话就会导致相同的资源会重复加载,包体积无效增大,反复请求浪费用户流量和服务器成本。同时包体积过大,导致首屏加载缓慢,影响用户体验,所以要做公共代码提取操作。
18.对于多个页面公共代码的提取,进行拆包处理,增加splitchunks,通过固定模版样式,设定提取范围和指定需提取的公共代码的重复次数。打包时按照模版设置的样式,可以将多个包都用到的公共代码抽出commons.js 文件中,打包出公共js的地址在dist/pages/commons.js,公共文件随weex代码包一起下发至客户端。pages里的commons.js是提取的所有页面的公共部分,每个页面独立部分的代码都比较小。
19.在一个可选的实施例中,从服务器获取最新版本的目标weex页面对应的weex压缩包之后,所述方法还包括:确定最新版本的目标weex页面对应的weex压缩包是否下载成功;若下载成功,则对最新版本的目标weex页面对应的weex压缩包进行校验;若对最新版本的目标weex页面对应的weex压缩包校验通过,则加载最新版本的目标weex页面对应的weex压缩包。
20.进一步的,若下载失败,或对校验最新版本的目标weex页面对应的weex压缩包不通过,则确定本地是否存在版本信息是否高于预置版本的weex文件;若本地存在版本信息是否高于预置版本的weex文件,则加载本地目标weex页面对应的weex文件;若本地不存在版本信息是否高于预置版本的weex文件,则将目标weex页面转换成超文本标记语言h5页面。
21.其中,预置版本为运行目标weex页面需要的最低版本。如预置版本为1.1,则本地的的版本信息至少高于1.1版本,才能够加载本地目标weex页面对应的weex文件,即通过weex文件实现显示对应的目标weex页面;若本地的版本信息小于或等于1.1版本,则将目标weex页面转换成超文本标记语言h5页面。
22.步骤s103,加载最新版本的目标weex页面对应的weex压缩包。
23.具体的,对最新版本的目标weex页面对应的weex压缩包进行解压。
24.步骤s104,对页面共用压缩包、页面专用压缩包和基础文件中的代码进行拼接,得到目标代码。
25.其中,所述基础文件为本地存储的应用程序中所有页面共用的代码。在本发明实施例中,对于所有的页面都用到的基础功能,提取到单独的文件,比如baseutil.js。由于是最基础的功能,文件比较大,而且基础库通常不会有太多变化,版本会比较稳定,不需要多次更新。将基础文件作为单独一个模块库提供下载或者单独在客户端预埋,不需要多次重复下载基础文件,对于提升页面加载速度会有很大帮助。
26.在本发明实施例中,在对weex压缩包解压之后得到weex解压文件,在weex解压文件中的页面加载参数中包含commonjsentry字段,该字段记录页面共用代码的存放路径。客
户端在判断commonjsentry字段存在的时候,则去加载相关路径下的js文件(页面共用压缩包),读取里面的内容commonstring。同时也读取基础文件获取内容basestring。然后遍历weex解压文件下的所有entry.js文件(入口文件),并读取内容,将basestring和commonstring拼接到文件的最后面,最后再写回到该entry.js文件。这样实现了在每个页面加载时不会造成全局污染,保证了页面间独立性,同时通过合并重复代码减少了包体积,提高了下载速度,也提高了下载成功率。
27.步骤s105,根据目标代码更新所述目标weex页面。
28.本发明实施例提供一种应用程序更新方法,当前客户端触发进入目标weex页面时,检测本地是否存储有最新版本的所述目标weex页面对应的weex文件;若确定本地未存储有最新版本的与所述目标weex页面对应的weex文件,则从服务器获取最新版本的目标weex页面对应的weex压缩包,weex压缩包中包括页面共用压缩包和页面专用压缩包,加载最新版本的目标weex页面对应的weex压缩包;对页面共用压缩包、页面专用压缩包和基础文件中的代码进行拼接,得到目标代码,根据目标代码更新目标weex页面。由于本发明中的页面共用压缩包中存储有应用程序中多个页面共用的代码,基础文件为本地存储的应用程序中所有页面共用的代码,因此在获取目标weex页面对应的weex压缩包时,可仅获取其页面专用压缩包,从而减少了获取从服务器获取压缩包的时间紧,然后对页面共用压缩包、页面专用压缩包和基础文件中的代码进行拼接,得到目标代码,基于目标代码对目标weex页面进行更新,进而提高了应用程序的更新效率。
29.在本发明提供的一个实施例中,检测本地是否存储有最新版本的目标weex页面对应的weex文件,具体包括步骤s201
‑
步骤s204:步骤s201,确定本地是否存储有与目标weex页面对应的weex文件。
30.其中,weex文件为运行目标weex文件所需要的文件。每个目标weex页面都对应有weex文件。
31.步骤s201,若本地存储有与目标weex页面对应的weex文件,则确定weex文件中的版本信息是否高于预置版本且低于最新运行版本。
32.其中,预置版本为运行目标weex页面所需要的最低版本,最新运行版本是服务器发布的目标weex页面的最新版本。
33.步骤s203,若weex文件中的版本信息高于预置版本且低于最新运行版本,则加载本地目标weex页面对应的weex文件,并确定本地未存储有最新版本的weex文件。
34.在本发明实施例中,若weex文件中的版本信息高于预置版本且低于最新运行版本,说明客户端中的weex文件可被加载运行,即可直接加载weex文件实现目标weex页面的显示。之后确定本地未存储有最新版本的weex文件,然后在客户端空闲的时候,或是客户端段退出当前应用,或退出应用当前对应的目标weex页面时,从服务器下载目标weex页面对应的最新版本weex文件,使得客户端再次触发目标weex页面时,可基于下载的最新版本的weex文件加载目标weex页面。
35.步骤s204,若weex文件中的版本信息与最新运行版本相同,则确定本地存储有最新版本的weex文件。
36.与步骤s203相反,若weex文件中的版本信息与最新运行版本相同,则确定本地存储有最新版本的weex文件,然后直接根据最新版本的weex文件加载目标weex页面。
37.在本发明提供的一个实施例中,在步骤s201之后,该方法还可以包括:步骤s301,若weex文件中的版本信息不高于预置版本,或本地未存储有与所述目标weex页面对应的weex文件,则获取本地存储的基础文件。
38.其中,基础文件为预埋在客户端中关于运行应用程序的文件,该文件为本地存储的应用程序中所有页面共用的代码。
39.步骤s302,确定基础文件的版本是否高于预置版本且低于最新运行版本。
40.步骤s303,若基础文件的版本高于预置版本且低于最新运行版本,则加载本地基础文件中的目标weex页面对应的weex文件,并确定本地未存储有最新版本的与目标weex页面对应的weex文件。
41.若基础文件的版本高于预置版本且低于最新运行版本,则加载本地基础文件中的目标weex页面对应的weex文件,根据基础文件中的目标weex页面对应的weex文件实现显示目标weex页面。之后从服务器下载最新版本的与目标weex页面对应的weex文件,以便于在用户再次访问该目标weex页面时,根据最新版本的weex文件加载显示目标weex页面。
42.步骤s304,若基础文件的版本与最新运行版本相同,则确定本地存储有最新版本的与目标weex页面对应的weex文件。
43.基于最新版本的与目标weex页面对应的weex文件,加载显示目标weex页面。
44.本发明实施例提供一种应用程序更新方法,应用于服务器,该方法具体包括步骤s401
‑
步骤s402:步骤s401、接收客户端发送的获取最新版本的目标weex页面对应的weex压缩包的请求。
45.步骤s402、向所述客户端发送最新版本的目标weex页面对应的weex压缩包。
46.其中,所述weex压缩包中包括页面共用压缩包和页面专用压缩包,所述页面共用压缩包中存储有应用程序中多个页面共用的代码。
47.进一步的,服务器在向客户端发送最新版本的目标weex页面对应的weex压缩包之前,服务器需要通过jenkins自动触发脚本实现将测试、灰度、生产等不同环境下的weex包上传到对应的发包服务器的指定路径。发包服务器上的同一份包通过解析,实现ios、android、web 三端的一致性。
48.另外,服务器创建一个weex压缩包首先要进行注册,填写weex压缩包中文名、英文名、访问的url、降级时的weburl以及更新策略等信息,具体压缩包注册表结构:
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
49.在一实施例中,提供一种应用程序更新装置,该应用程序更新装置与上述实施例中应用程序更新方法一一对应。如图2所示,所述应用程序更新装置各功能模块详细说明如下:检测模块10,用于当前客户端触发进入目标weex页面时,检测本地是否存储有最新版本的所述目标weex页面对应的weex文件;获取模块20,用于若确定本地未存储有最新版本的与所述目标weex页面对应的weex文件,则从服务器获取最新版本的目标weex页面对应的weex压缩包,所述weex压缩包中包括页面共用压缩包和页面专用压缩包,所述页面共用压缩包中存储有应用程序中多个页面共用的代码;加载模块30,用于加载最新版本的目标weex页面对应的weex压缩包;拼接模块40,用于对所述页面共用压缩包、所述页面专用压缩包和基础文件中的代码进行拼接,得到目标代码,所述基础文件为本地存储的应用程序中所有页面共用的代码;更新模块50,用于根据所述目标代码更新所述目标weex页面。
50.在一个可选的实施例中,所述检测模块10,具体用于:确定本地是否存储有与所述目标weex页面对应的weex文件;若本地存储有与所述目标weex页面对应的weex文件,则确定所述weex文件中的版本信息是否高于预置版本且低于最新运行版本;若所述weex文件中的版本信息高于预置版本且低于最新运行版本,则加载本地所述目标weex页面对应的weex文件,并确定本地未存储有最新版本的与所述目标weex页面对应的weex文件;若所述weex文件中的版本信息与所述最新运行版本相同,则确定本地存储有最新版本的与所述目标weex页面对应的weex文件。
51.在一个可选的实施例中,所述装置还包括:确定模块60;获取模块20,还用于若所述weex文件中的版本信息不高于预置版本,或本地未存
储有与所述目标weex页面对应的weex文件,则获取本地存储的基础文件;确定模块60,用于确定所述基础文件的版本是否高于预置版本且低于最新运行版本;确定模块60,还用于若所述基础文件的版本高于预置版本且低于最新运行版本,则加载本地基础文件中的所述目标weex页面对应的weex文件,并确定本地未存储有最新版本的与所述目标weex页面对应的weex文件;确定模块60,还用于若所述基础文件的版本与所述最新运行版本相同,则确定本地存储有最新版本的与所述目标weex页面对应的weex文件。
52.在一个可选的实施例中,所述装置还包括:校验模块70;确定模块60,还用于确定最新版本的目标weex页面对应的weex压缩包是否下载成功;校验模块70,用于若下载成功,则对最新版本的目标weex页面对应的weex压缩包进行校验;加载模块30,具体用于若对最新版本的目标weex页面对应的weex压缩包校验通过,则加载最新版本的目标weex页面对应的weex压缩包。
53.在一个可选的实施例中,确定模块60,还用于若下载失败,或对校验最新版本的目标weex页面对应的weex压缩包不通过,则确定本地是否存在版本信息是否高于预置版本的weex文件;加载模块30,具体用于若本地存在版本信息是否高于预置版本的weex文件,则加载本地所述目标weex页面对应的weex文件;若本地不存在版本信息是否高于预置版本的weex文件,则将所述目标weex页面转换成超文本标记语言h5页面。
54.关于应用程序更新装置的具体限定可以参见上文中对于应用程序更新方法的限定,在此不再赘述。上述设备中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
55.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种应用程序更新方法。
56.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:当前客户端触发进入目标weex页面时,检测本地是否存储有最新版本的所述目标weex页面对应的weex文件;若确定本地未存储有最新版本的与所述目标weex页面对应的weex文件,则从服务器获取最新版本的目标weex页面对应的weex压缩包,所述weex压缩包中包括页面共用压缩包和页面专用压缩包,所述页面共用压缩包中存储有应用程序中多个页面共用的代码;
加载最新版本的目标weex页面对应的weex压缩包;对所述页面共用压缩包、所述页面专用压缩包和基础文件中的代码进行拼接,得到目标代码,所述基础文件为本地存储的应用程序中所有页面共用的代码;根据所述目标代码更新所述目标weex页面。
57.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:当前客户端触发进入目标weex页面时,检测本地是否存储有最新版本的所述目标weex页面对应的weex文件;若确定本地未存储有最新版本的与所述目标weex页面对应的weex文件,则从服务器获取最新版本的目标weex页面对应的weex压缩包,所述weex压缩包中包括页面共用压缩包和页面专用压缩包,所述页面共用压缩包中存储有应用程序中多个页面共用的代码;加载最新版本的目标weex页面对应的weex压缩包;对所述页面共用压缩包、所述页面专用压缩包和基础文件中的代码进行拼接,得到目标代码,所述基础文件为本地存储的应用程序中所有页面共用的代码;根据所述目标代码更新所述目标weex页面。
58.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink) dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
59.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
60.以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。