页面适配方法、装置、设备及存储介质与流程

文档序号:29795790发布日期:2022-04-23 18:47阅读:115来源:国知局
页面适配方法、装置、设备及存储介质与流程

1.本技术属于研发管理技术领域,尤其涉及页面适配方法、装置、设备及存储介质。


背景技术:

2.cordova插件作为成熟的前端技术,广泛应用于各种应用程序(application,app)中的前端场景。在tob业务的大潮下,对已有的cordova插件项目进行描述网页的标准语言(html5,h5)改造,以方便植入第三方app,例如,对已有的cordova插件项目进行h5改造,使得在当前app中植入第三方app。
3.其中,tob指的是在企业业务中,以企业作为服务主体,为企业客户提供平台、产品或服务并赚取利润的业务模式,也可以把它称为企业服务。
4.现有技术中,将插件项目转换为h5项目时,需要修改大量业务代码,在业务代码中编写插件和纯h5两个分支,甚至需要单独复制一份代码用来开发纯h5项目。这不仅增加了开发及维护成本,而且由于改造涉及的技术点多,容易造成代码遗漏,影响代码质量。


技术实现要素:

5.有鉴于此,本技术实施例提供了页面适配方法、装置、设备及存储介质,以解决现有技术中,将插件项目转换为h5项目时,需要修改大量业务代码,不仅增加了开发及维护成本,而且由于改造涉及的技术点多,容易造成代码遗漏,影响代码质量的问题。
6.本技术实施例的第一方面提供了一种页面适配方法,该方法包括:
7.获取应用程序的显示页面对应的业务代码;
8.确定所述业务代码对应的容器类型;
9.当检测到所述容器类型为h5容器时,劫持所述业务代码;
10.对所述业务代码进行目标处理,得到处理结果,所述目标处理包括动态页面插入处理、路由堆栈处理、重装处理、数据持久化处理中的至少一种处理;
11.在所述显示页面显示所述处理结果对应的页面内容。
12.可选地,所述确定所述业务代码对应的容器类型之后,所述页面适配方法还包括:
13.当检测到所述容器类型为插件容器时,在所述插件容器中运行所述业务代码;
14.在所述显示页面显示运行所述业务代码的运行结果。
15.可选地,所述业务代码包括第一项目的业务代码,当所述目标处理为所述动态页面插入处理时,所述对所述业务代码进行目标处理,得到处理结果,包括:
16.当检测到所述第一项目跳转第二项目时,在所述第一项目的业务代码中提取所述第一项目的cookie信息;
17.基于所述cookie信息生成所述处理结果,所述处理结果用于生成记录所述cookie信息的动态页面。
18.可选地,当所述目标处理为所述路由堆栈处理时,所述对所述业务代码进行目标处理,得到处理结果,包括:
19.当检测到所述第一项目跳转第二项目时,在所述第一项目的业务代码中提取所述第一项目的地址信息;
20.基于所述地址信息生成所述处理结果,所述处理结果用于所述第一项目跳转至所述第二项目后,根据所述地址信息返回所述第一项目。
21.可选地,所述在所述显示页面显示所述处理结果对应的页面内容之后,所述页面适配方法还包括:
22.根据所述动态页面记录的所述cookie信息,对所述第二项目的页面内容进行填充;
23.在所述显示页面,显示填充后的第二项目的页面内容。
24.可选地,当所述目标处理为所述重装处理时,所述对所述业务代码进行目标处理,得到处理结果,包括:
25.获取重新编写后的业务代码;
26.对所述重新编写后的业务代码进行编译打包,得到所述处理结果。
27.可选地,当所述目标处理为所述数据持久化处理时,所述对所述业务代码进行目标处理,得到处理结果,包括:
28.在所述业务代码中提取状态数据和业务数据;
29.将所述状态数据和所述业务数据存储在本地数据库中,得到所述处理结果。
30.本技术实施例的第二方面提供了一种页面适配装置,包括:
31.获取单元,用于获取应用程序的显示页面对应的业务代码;
32.确定单元,用于确定所述业务代码对应的容器类型;
33.劫持单元,用于当检测到所述容器类型为h5容器时,劫持所述业务代码;
34.处理单元,用于对所述业务代码进行目标处理,得到处理结果,所述目标处理包括动态页面插入处理、路由堆栈处理、重装处理、数据持久化处理中的至少一种处理;
35.显示单元,用于在所述显示页面显示所述处理结果对应的页面内容。
36.本技术实施例的第三方面提供了一种页面适配设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上述第一方面所述的页面适配方法的步骤。
37.本技术实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的页面适配方法的步骤。
38.本技术实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在设备上运行时,使得该设备执行上述第一方面所述的页面适配方法的步骤。
39.本技术实施例提供的页面适配方法、装置、设备及存储介质,具有以下有益效果:
40.本方案先对业务代码对应的容器类型进行判断,当检测到容器类型为h5容器时,劫持业务代码;对业务代码进行动态页面插入处理、路由堆栈处理、重装处理、数据持久化处理中的至少一种处理。不用对原代码进行大量改动,就可使原本适用于插件容器的业务代码在h5容器中运行。
41.且对业务代码进行动态页面插入处理、路由堆栈处理、重装处理、数据持久化处理中的至少一种处理,解决了现有技术中h5项目跳转导致的数据丢失问题。同时只需简单处
理即可在h5容器中运行,节省了改造过程的开发成本,且使之后的维护成本降低,减少人工改造出错的几率,提升了代码质量。
附图说明
42.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
43.图1是本技术一示例性实施例提供的页面适配方法的示意性流程图;
44.图2是本技术另一示例性实施例示出的页面适配方法的步骤s103的具体流程图;
45.图3是本技术另一示例性实施例示出的页面适配方法的步骤s103的具体流程图;
46.图4是本技术再一示例性实施例提供的页面适配方法的示意性流程图;
47.图5是本技术一实施例提供的一种页面适配装置的示意图;
48.图6是本技术另一实施例提供的一种页面适配设备的示意图。
具体实施方式
49.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
50.在本技术实施例的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,在本技术实施例的描述中,“多个”是指两个或多于两个。
51.以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
52.本技术实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
53.人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习/监督学习等几大方向。
54.请参见图1,图1是本技术一示例性实施例提供的页面适配方法的示意性流程图。本技术提供的页面适配方法的执行主体为页面适配设备,其中,该设备包括但不限于智能手机、平板电脑、计算机、个人数字助理(personal digital assistant,pda)、台式电脑等移动终端,还可以包括各种类型的服务器。
55.例如,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务。
56.如图1所示的页面适配方法可包括:s101~s105,具体如下:
57.s101:获取应用程序的显示页面对应的业务代码。
58.示例性地,在终端中预先安装有应用程序(application,app)。获取该app当前显示页面所展示的内容所对应的业务代码。其中,终端可以包括智能手机、平板计算机、计算机、pda、台式计算机、智能穿戴设备等移动终端。
59.例如,app可以为浏览器app、聊天app以及购物app等,相应地,获取浏览器app当前显示的内容所对应的业务代码、获取聊天app当前显示的内容所对应的业务代码以及获取购物app当前显示的内容所对应的业务代码等。此处仅为示例性说明,对此不做限定。
60.不同的项目(业务)对应不同的业务代码。对项目的类型不做限定,例如,项目可以为填写收件人信息表单、点击地址簿、显示地址簿页面、选择收件地址、显示收件人详情页面、完成表单填写等。
61.例如,app的显示页面当前显示的内容为上述这些项目中的任意一种,则获取该项目对应的业务代码。此处仅为示例性说明,对此不做限定。
62.具体地,由开发人员预先编写脚本,并将该脚本安装在终端上,运行该脚本,可通过运行中的脚本获取app当前显示页面对应的业务代码。可选地,也可以通过网上的反编译工具获取app当前显示页面对应的业务代码。此处仅为示例性说明,对此不做限定。
63.s102:确定业务代码对应的容器类型。
64.容器可以通俗理解为,为业务代码提供的一个独立的运行环境。容器类型可以包括h5容器、插件容器等。其中,h5容器可用于加载h5页面。插件容器为app的专用容器,可用于实现app中的各项功能。
65.示例性地,确定当前的显示页面对应的业务代码所运行的容器的容器类型。可以理解为,这些业务代码在容器中运行,该容器有对应的容器类型。
66.具体地,可以获取当前容器的标识信息,根据标识信息判断该当前容器所对应的容器类型。
67.通常插件容器有自带的标识信息,h5容器没有自带的标识信息。因此,当获取到的当前容器有标识信息时,可以判定当前容器的容器类型为插件容器。当获取到的当前容器没有标识信息时,可以判定当前容器的容器类型为h5容器。
68.可选地,也可以预先为不同的容器设置唯一的标识信息。即为h5容器、插件容器分别设置不同的标识信息,将每个容器对应的标识信息,以及每个容器所属的容器类型关联,并存储至数据库中。
69.当获取到当前容器的标识信息时,将该标识信息与数据库中存储的标识信息做比较,在数据库中查找与该标识信息相同的标识信息,进一步查找数据库中标识信息对应的容器类型,从而确定当前容器对应的容器类型。此处仅为示例性说明,对此不做限定。
70.s103:当检测到容器类型为h5容器时,劫持业务代码。
71.示例性地,当检测到当前的容器类型为h5容器时,将当前的显示页面对应的业务代码提取出来,并存储到指定的位置。例如,由开发人员预先编写劫持代码脚本,并将该劫
持代码脚本安装在终端上,运行该劫持代码脚本,可通过运行中的劫持代码脚本劫持业务代码。将劫持到的业务代码存储到指定的文件夹中。此处仅为示例性说明,对此不做限定。
72.例如,劫持到的业务代码可以为应用程序接口(application programming interface,api)对应的代码。api是一些预先定义的接口。此时,也可将该api称为原生api。
73.s104:对业务代码进行目标处理,得到处理结果。
74.值得说明的是,业务代码是获取的app中的代码,所以该业务代码可以在app的专用容器(插件容器)中直接运行,但是由于当前的容器类型为h5容器,原本的业务代码无法直接在该h5容器中顺利运行,因此需要对该业务代码进行目标处理,以保证该业务代码对应的业务代码在该h5容器中顺利执行。
75.目标处理包括动态页面插入处理、路由堆栈处理、重装处理、数据持久化处理、跨域数据传输处理中的至少一种处理。
76.s105:在显示页面显示处理结果对应的页面内容。
77.不同的处理结果对应的页面内容不同,则最终在应用程序的显示页面显示的结果不同。
78.本方案先对业务代码对应的容器类型进行判断,当检测到容器类型为h5容器时,劫持业务代码;对业务代码进行动态页面插入处理、路由堆栈处理、重装处理、数据持久化处理中的至少一种处理。不用对原代码进行大量改动,就可使同一套业务代码分别在插件容器和h5容器中运行。
79.且对业务代码进行动态页面插入处理、路由堆栈处理、重装处理、数据持久化处理中的至少一种处理,解决了现有技术中h5项目跳转导致的数据丢失问题。同时只需简单处理即可在h5容器中运行,节省了改造过程的开发成本,且使之后的维护成本降低,减少人工改造出错的几率,提升了代码质量。
80.请参见图2,图2是本技术另一示例性实施例示出的页面适配方法的步骤s103的具体流程图;可选地,在本技术一些可能的实现方式中,业务代码包括第一项目的业务代码,当目标处理为动态页面插入处理时,上述s103可包括s1031~s1032,具体如下:
81.s1031:当检测到第一项目跳转第二项目时,在第一项目的业务代码中提取第一项目的cookie信息。
82.业务代码可以包括第一项目的业务代码,第一项目与第二项目不同。例如,第一项目可以为访问第一域名a.com,第二项目为访问第二域名b.com。
83.示例性地,cookie信息可以包括用户当前在app访问第一项目时,产生的用户id信息、密码、浏览过的网页、访问的时间、停留的时长等。此处仅为示例性说明,对此不做限定。
84.对业务代码进行动态页面插入处理,具体地,当用户当前访问的是第一项目,其想要通过第一项目访问第二项目时,通过终端触发请求,该请求用于请求从第一项目跳转至第二项目。终端在检测到该请求时,即检测到第一项目要跳转第二项目,此时在第一项目的业务代码中提取第一项目的cookie信息。
85.例如,用于当前访问的是第一域名a.com,其想要通过第一域名a.com访问第二域名b.com时,通过终端发起请求,该请求用于请求从第一域名跳转至第二域名。终端在检测到该请求时,在第一域名的业务代码中提取第一域名对应的cookie信息。
86.具体地,可以由开发人员编写获取cookie信息的代码,运行该代码,可以实现在第
一项目的业务代码中提取到第一项目的cookie信息。具体的获取cookie信息的代码可以参考现有技术,此处不再赘述。
87.s1032:基于cookie信息生成处理结果。
88.示例性地,处理结果用于生成记录cookie信息的动态页面。可以理解为根据提取到的cookie信息生成动态页面。
89.在第一项目跳转至第二项目的过程中,插入该动态页面。由于该动态页面中记录了第一项目的cookie信息,当从第一项目跳转至第二项目后,可以通过该动态页面中记录的cookie信息,对第二项目的页面内容进行填充,这样跳转至第二项目后,无需用户再填写账号、密码等信息,就可成功访问第二项目。
90.这种实施方式中,在第一项目跳转至第二项目的过程中,可以先在显示页面显示动态页面,然后显示第二项目对应的页面内容。
91.可选地,在一种可能的实现方式中,也可以在显示页面不显示动态页面,直接显示第二项目对应的页面内容。
92.本实施方式中,通过对业务代码进行动态页面插入处理,得到的处理结果可以用于生成动态页面,该动态页面记录第一项目的cookie信息,这样跳转至第二项目后,无需用户再填写账号、密码等信息,实现了cookie信息的共享,给用户带来良好体验。
93.可选地,也可以是两个项目均在h5容器中执行,且两个项目之间需要相互跳转时,在跳转的过程中动态插入中间页面。例如,h5项目1需要跳转至h5项目2,在h5容器中做统一资源定位器(uniform resource locator,url)跳转,在h5项目1跳转至h5项目2的过程中,在h5容器中动态插入中间页面。
94.动态插入的中间页面可以用来记录前一项目中的数据信息,从而解决了刷新页面带来的数据丢失。例如,在h5项目1跳转至h5项目2的过程中,在h5容器中动态插入中间页面,该中间页面可以记录h5项目1中的数据信息,避免页面刷新到h5项目2后,造成h5项目1中的数据信息丢失。
95.可选地,在本技术一些可能的实现方式中,上述s1032之后还可包括:根据动态页面记录的cookie信息,对第二项目的页面内容进行填充;在显示页面,显示填充后的第二项目的页面内容。
96.示例性地,在第一项目跳转至第二项目的过程中,插入该动态页面。由于该动态页面中记录了第一项目的cookie信息,当从第一项目跳转至第二项目后,可以通过该动态页面中记录的cookie信息,对第二项目的页面内容进行填充,这样跳转至第二项目后,无需用户再填写账号、密码等信息,就可成功访问第二项目。从而在显示页面,直接显示填充后的第二项目的页面内容。
97.例如,将用户的id信息、密码等设置在第二域名下。这样在从第一域名跳转至第二域名后,无需用户再输入id信息、密码等就可成功访问第二域名。从而在显示页面中展示成功登录后的第二域名对应的页面内容。
98.本实施方式中,通过动态页面记录第一项目的cookie信息,这样跳转至第二项目后,无需用户再填写账号、密码等信息,实现了cookie信息的共享,给用户带来良好体验。
99.请参见图3,图3是本技术另一示例性实施例示出的页面适配方法的步骤s103的具体流程图;可选地,在本技术一些可能的实现方式中,当目标处理为路由堆栈处理时,上述
s103还可包括s1033~s1034,具体如下:
100.s1033:当检测到第一项目跳转第二项目时,在第一项目的业务代码中提取第一项目的地址信息。
101.路由堆栈处理指可以通过路由指针的方式记录地址信息。地址信息可以包括统一资源定位器(uniform resource locator,url)、路由堆栈长度。
102.对业务代码进行路由堆栈处理,具体地,当用户当前访问的是第一项目,其想要通过第一项目访问第二项目时,通过终端触发目标请求,该目标请求用于请求从第一项目跳转至第二项目。终端在检测到该目标请求时,即检测到第一项目要跳转第二项目,此时在第一项目的业务代码中提取第一项目的地址信息。
103.可选地,在一种可能的实现方式中,当跳转至第二项目后,还可提取第二项目对应的业务代码,从而在第二项目的业务代码中提取第二项目的地址信息。
104.可选地,也可以是两个项目均在h5容器中执行,且两个项目之间需要相互跳转时,在h5项目1跳转至h5项目2的过程中,先通过路由指针记录h5项目1对应的地址,页面跳转至h5项目2后,通过路由指针记录h5项目2对应的地址。此处仅为示例性说明,对此不做限定。
105.s1034:基于地址信息生成处理结果。
106.处理结果用于第一项目跳转至第二项目后,根据地址信息返回第一项目。可以记录为该处理结果中包含第一项目对应的地址信息,当后续从第二项目再跳转回第一项目时,可根据该处理结果中记录的第一项目的地址信息,准确地跳转回第一项目。
107.例如,第一项目对应的页面内容为收件人地址,跳转至第二项目对应的页面内容为地址簿,处理结果中记录了第一项目对应的地址信息,当用户在第二项目对应的页面内容中点击返回时,可以准确地返回到收件人地址这一页面。
108.这种实施方式中,由于处理结果中记录了第一项目的地址信息,因此在显示页面显示处理结果对应的页面内容时,可以先在显示页面显示第一项目的地址信息,然后显示第二项目对应的页面内容。
109.可选地,在一种可能的实现方式中,也可以在显示页面不显示第一项目的地址信息,直接显示第二项目对应的页面内容。
110.本实施方式中,通过对业务代码进行路由堆栈处理,得到的处理结果中记录了第一项目的地址信息,可基于该处理结果从第二项目准确返回第一项目,避免第一项目的数据丢失。
111.值得说明的是,s1031~s1032可以与s1033~s1034共同执行,也可以选择执行s1031~s1032或s1033~s1034。当s1031~s1032与s1033~s1034共同执行时,具体如下:
112.当检测到第一项目跳转第二项目时,在第一项目的业务代码中提取第一项目的cookie信息和地址信息,基于cookie信息生成第一处理结果,基于地址信息生成第二处理结果。
113.其中,第一处理结果用于生成记录cookie信息的动态页面。第二处理结果用于第一项目跳转至第二项目后,根据地址信息返回第一项目。具体的实现方式与s1031~s1032、s1033~s1034描述的一致,此处不再赘述。
114.可选地,在本技术一些可能的实现方式中,当目标处理为重装处理时,上述s103还可包括s1035~s1036,具体如下:
115.s1035:获取重新编写后的业务代码。
116.s1036:对重新编写后的业务代码进行编译打包,得到处理结果。
117.示例性地,劫持到的业务代码可以为api对应的代码。重新编写劫持到的api对应的代码,得到新的api,将新的api进行封装,得到的封装结果即为处理结果。
118.可选地,还可将新的api封装成与原生api相同的形式,这样新的api也可在插件容器中使用。可以通俗理解为,原生api本就适用于app的插件容器,新的api适用于h5容器,当新的api与原生api形式相同时,使得新的api也可在插件容器使用。
119.又例如,获取开发人员重新编写后的业务代码,将重新编写的业务代码编译为class文件,再将class文件打包为软件包文件格式(java archive,jar)的文件,也称为文件包(jar包),该jar包即为处理结果。
120.这种实施方式中,在显示页面显示调用新的api产生的页面内容。
121.本实施方式中,通过对业务代码进行重装处理,使业务代码既可以在h5容器中运行,也可以在插件容器中运行,丰富了业务代码的应用场景。
122.可选地,对业务代码进行动态页面插入处理、路由堆栈处理、数据持久化处理、跨域数据传输处理等各种处理时,都可同时对业务代码进行重装处理,以使得该业务代码既可在h5容器中运行,也可在插件容器中运行。
123.可选地,在本技术一些可能的实现方式中,上述s103还可包括s1037~s1038,具体如下:
124.s1037:在业务代码中提取状态数据和业务数据。
125.状态数据用于表示项目当前的状态,例如状态数据可以包括登录成功、登录失败、登录中等等。业务数据表示在该项目中进行业务操作产生的各种业务数据,例如购买基金、赎回基金等操作产生的业务数据。在业务代码中提取这些状态数据和业务数据。此处仅为示例性说明,对此不做限定。
126.s1038:将状态数据和业务数据存储在本地数据库中,得到处理结果。
127.示例性地,处理结果即为存储在本地数据库中的状态数据和业务数据。对存储在本地数据库中的状态数据和业务数据可以进行保存、更新、删除、查询等操作。
128.由于在本地数据库中存储了状态数据和业务数据,用户再次返回到该业务代码对应的页面时,终端可以通过读取本地数据库中的状态数据和业务数据,从而对用户再次返回的该页面进行复原,提升了用户体验。
129.可选地,还可对业务代码进行跨域数据传输处理。跨域数据传输处理与动态页面插入处理类似,不同的是动态页面插入处理有生成动态页面,而跨域数据传输处理没有生成动态页面,节省了资源,提升了处理速度。
130.具体地,跨域数据传输处理是指当至少两个项目均在h5容器中执行,且两个项目之间需要相互跳转时,对两个项目的数据信息进行记录。例如,h5项目1在域名a.com中执行,h5项目2在域名b.com中执行,通常当h5项目1跳转至h5项目2后,域名b.com对应的后台中不会记录h5项目1对应的数据信息,通过跨域数据传输处理可以记录h5项目1对应的数据信息,有需要时,可将h5项目1对应的数据信息传输至域名b.com对应的后台中。此处仅为示例性说明,对此不做限定。
131.可选地,本方案还提供了一种桥接层和适配层。上述对于容器类型的判断、劫持业
务代码以及动态页面插入处理等,可由桥接层实现。数据持久化处理、路由堆栈处理以及跨域数据传输处理等可由适配层实现。
132.例如,桥接层支持容器类型判断,可以根据容器的标识信息识别当前是在插件容器,还是在h5容器中。如果是在插件容器中,则可以直接使用原生api。如果在h5容器中,则劫持、重写并封装原生api,最终得到与原生api相同形式的新的api。如果在h5容器中,还需要插入动态页面,供之后适配层做路由堆栈处理、数据持久化处理以及跨域数据传输处理等。
133.示例性地,本方案为没有原生能力的h5项目提供了适配层,使h5项目也可实现app中的一些功能。
134.例如,使用预设函数对状态数据(state)和业务数据(data)持久化处理。如在执行h5项目2时,状态数据(state)和业务数据(data)存储在本地,当通过h5项目2跳转至h5项目1时,读取并复原本地数据。其中,预设函数可以为装饰器。可采用两套装饰器(共4个)分别对状态数据(state)和业务数据(data)进行数据持久化处理。此处仅为示例性说明,对此不做限定。
135.还可在跳转新项目之前,记录当前项目的地址信息、cookie信息等,再执行页面跳转;在从新项目返回原项目时,根据记录的信息,准确返回至原项目。此处仅为示例性说明,对此不做限定。
136.为了兼容跨域的情况,对业务代码进行跨域数据传输处理,将跨域问题转化成同域存储,解决跨域数据存储问题。
137.对业务代码进行路由堆栈处理,根据路由堆栈长度及预设的路由指针的差值算法,跳转到正确的路由堆栈位置,解决路由堆栈冗余问题。
138.请参见图4,图4是本技术再一示例性实施例提供的页面适配方法的示意性流程图。本实施例与图1对应的实施例的区别在于在s202之后,还包括s203~s204,本实施例中s201~s202与图1所对应的实施例中的s101~s102完全相同,具体请参阅上一实施例中s101~s102的相关描述,此处不赘述。s201~s204具体如下:
139.s201:获取应用程序的显示页面对应的业务代码。
140.本实施例中s201与图1所对应的实施例中的s101完全相同,具体请参阅上一实施例中s101的相关描述,此处不赘述。
141.s202:确定业务代码对应的容器类型。
142.本实施例中s202与图1所对应的实施例中的s102完全相同,具体请参阅上一实施例中s102的相关描述,此处不赘述。
143.s203:当检测到容器类型为插件容器时,在插件容器中运行业务代码。
144.s204:在显示页面显示运行业务代码的运行结果。
145.示例性地,当检测到容器类型为插件容器时,原本的业务代码可直接在该插件容器中顺利运行,因此直接在插件容器中运行该业务代码即可。
146.运行结果即为运行该业务代码后产生的页面内容。示例性地,在应用程序的显示页面,显示运行该业务代码后产生的页面内容。
147.对业务代码对应的容器类型进行判断,当检测到容器类型为h5容器时,劫持业务代码;对业务代码进行动态页面插入处理、路由堆栈处理、重装处理、数据持久化处理中的
至少一种处理。解决了现有技术中h5项目跳转导致的数据丢失问题。同时只需简单处理即可在h5容器中运行,节省了改造过程的开发成本,且使之后的维护成本降低,减少人工改造出错的几率,提升了代码质量。
148.当检测到容器类型为插件容器时,直接运行业务代码,并为用户展示运行结果,提升了响应用户操作的速率,为用户带来良好体验。不用对原代码进行大量改动,就可使同一套业务代码分别在插件容器和h5容器中运行。节省了改造过程的开发成本,且使之后的维护成本降低,减少人工改造出错的几率,提升了代码质量。
149.为了便于理解,下面结合实际应用场景进行描述。
150.下面以用户使用快递插件(以下简称快递)填写收件人信息表单,调起地址簿插件(以下简称地址簿)选择地址,完成表单填写流程为例,简单介绍本方案工作流程:
151.用户进入快递页面,填写收件人信息表单。填写一些信息后,点击地址簿按钮选择收件地址。这时会判断容器类型,如果是插件容器,则走插件原有逻辑,在新的插件容器中拉起地址簿插件。如果是h5容器,则会通过装饰器执行数据持久化处理,保存已填写的数据到本地数据库中,同时进行路由堆栈处理、动态页面插入处理等,以记录路由指针、业务数据等,进而在当前容器跳转地址簿。
152.页面显示到地址簿页面,用户可以看到地址簿页面,在该页面点击选择某一个收件地址。这时会再次判断容器类型,如果是插件容器,则走插件原有逻辑,记录所选数据,并关闭地址簿所在容器。如果是h5容器,则会进行动态页面插入处理,通过动态页面记录所选的地址数据,同时还可将地址数据存储在本地数据库中。根据路由堆栈长度及预设的路由指针的差值算法,自动跳转到回到收件人详情页面。
153.收件人详情页面加载的时候,会再次判断容器类型,如果是插件容器,则走插件原有逻辑,通过回调把所选地址数据传递给收件人详情页面;如果是h5容器,则从本地数据库中读取上一步存储的地址数据,通过回调把所选地址数据传递给收件人详情页面。用户在收件人详情页面看到填写完整的表单,流程结束。
154.可选地,在一种可能的实现方式中,本技术提供的页面适配方法也可应用于医疗领域。例如,可将页面适配方法应用于医疗领域的app中,解决了现有技术中h5项目跳转导致的数据丢失、路由堆栈冗余、跨域存储等问题。大幅节省改造过程的开发成本,并且使之后的维护成本合二为一,减少人工改造出错的几率,大大提升代码质量。
155.请参见图5,图5是本技术一实施例提供的一种页面适配装置的示意图。该装置3包括的各单元用于执行图1-图4对应的实施例中的各步骤。具体请参阅图1-图4各自对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。参见图5,包括:
156.获取单元310,用于获取应用程序的显示页面对应的业务代码;
157.确定单元320,用于确定所述业务代码对应的容器类型;
158.劫持单元330,用于当检测到所述容器类型为h5容器时,劫持所述业务代码;
159.处理单元340,用于对所述业务代码进行目标处理,得到处理结果,所述目标处理包括动态页面插入处理、路由堆栈处理、重装处理、数据持久化处理中的至少一种处理;
160.显示单元350,用于在所述显示页面显示所述处理结果对应的页面内容。
161.可选地,所述页面适配装置还包括:
162.检测单元,用于当检测到所述容器类型为插件容器时,在所述插件容器中运行所
述业务代码;
163.运行单元,用于在所述显示页面显示运行所述业务代码的运行结果。
164.可选地,所述业务代码包括第一项目的业务代码,当所述目标处理为所述动态页面插入处理时,所述处理单元340具体用于:
165.当检测到所述第一项目跳转第二项目时,在所述第一项目的业务代码中提取所述第一项目的cookie信息;
166.基于所述cookie信息生成所述处理结果,所述处理结果用于生成记录所述cookie信息的动态页面。
167.可选地,当所述目标处理为所述路由堆栈处理时,所述处理单元340具体用于:
168.当检测到所述第一项目跳转第二项目时,在所述第一项目的业务代码中提取所述第一项目的地址信息;
169.基于所述地址信息生成所述处理结果,所述处理结果用于所述第一项目跳转至所述第二项目后,根据所述地址信息返回所述第一项目。
170.可选地,所述页面适配装置还包括:
171.填充单元,用于根据所述动态页面记录的所述cookie信息,对所述第二项目的页面内容进行填充;
172.页面显示单元,用于在所述显示页面,显示填充后的第二项目的页面内容。
173.可选地,当所述目标处理为所述重装处理时,所述处理单元340具体用于:
174.获取重新编写后的业务代码;
175.对所述重新编写后的业务代码进行编译打包,得到所述处理结果。
176.可选地,当所述目标处理为所述数据持久化处理时,所述处理单元340具体用于:
177.在所述业务代码中提取状态数据和业务数据;
178.将所述状态数据和所述业务数据存储在本地数据库中,得到所述处理结果。
179.请参见图6,图6是本技术另一实施例提供的一种页面适配设备的示意图。如图6所示,该实施例的设备4包括:处理器40、存储器41以及存储在所述存储器41中并可在所述处理器40上运行的计算机程序42。所述处理器40执行所述计算机程序42时实现上述各个页面适配方法实施例中的步骤,例如图1所示的s101至s105。或者,所述处理器40执行所述计算机程序42时实现上述各实施例中各单元的功能,例如图5所示单元310至350功能。
180.示例性地,所述计算机程序42可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器41中,并由所述处理器40执行,以完成本技术。所述一个或多个单元可以是能够完成特定功能的一系列计算机指令段,该指令段用于描述所述计算机程序42在所述设备4中的执行过程。例如,所述计算机程序42可以被分割为获取单元、确定单元、劫持单元、处理单元以及显示单元,各单元具体功能如上所述。
181.所述设备可包括,但不仅限于,处理器40、存储器41。本领域技术人员可以理解,图6仅仅是设备4的示例,并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述设备还可以包括输入输出设备、网络接入设备、总线等。
182.所称处理器40可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路
(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
183.所述存储器41可以是所述设备的内部存储单元,例如设备的硬盘或内存。所述存储器41也可以是所述设备的外部存储终端,例如所述设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器41还可以既包括所述设备的内部存储单元也包括外部存储终端。所述存储器41用于存储所述计算机指令以及所述终端所需的其他程序和数据。所述存储器41还可以用于暂时地存储已经输出或者将要输出的数据。
184.本技术实施例还提供了一种计算机存储介质,计算机存储介质可以是非易失性,也可以是易失性,该计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述各个页面适配方法实施例中的步骤。
185.本技术还提供了一种计算机程序产品,当计算机程序产品在设备上运行时,使得该设备执行上述各个页面适配方法实施例中的步骤。
186.本技术实施例还提供了一种芯片或者集成电路,该芯片或者集成电路包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有该芯片或者集成电路的设备执行上述各个页面适配方法实施例中的步骤。
187.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
188.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
189.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
190.以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神范围,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1