应用功能扩展的方法、装置及电子设备与流程

文档序号:24725859发布日期:2021-04-16 16:00阅读:133来源:国知局
应用功能扩展的方法、装置及电子设备与流程

1.本发明涉及计算机技术领域,尤其涉及一种应用功能扩展的方法、装置及电子设备。


背景技术:

2.随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(fintech)转变,然而,由于金融行业的安全性、实时性要求,金融科技也对技术提出了更高的要求。在金融科技的扩展web应用功能的场景下,修改源码文件消耗的工作量较大且源码的耦合度较高,导致开发成本较高,灵活性较差。


技术实现要素:

3.有鉴于此,本发明实施例期望提供一种应用功能扩展的方法、装置及电子设备,以解决相关技术中扩展web应用功能的开发成本较高、灵活性较差的技术问题。
4.为达到上述目的,本发明的技术方案是这样实现的:
5.本发明实施例提供一种应用功能扩展的方法,包括:
6.将第一应用的源码文件中的第一钩子函数与对应的至少一个插件进行绑定;
7.在执行所述源码文件中的源码时触发所述第一钩子函数的情况下,运行与所述第一钩子函数绑定的所述至少一个插件;其中,
8.所述至少一个插件用于在所述第一应用中扩展出第一功能。
9.上述方案中,所述将第一应用的源码文件中的第一钩子函数与对应的至少一个插件进行绑定,包括:
10.通过调用设定的绑定函数,将所述至少一个插件对应的至少一个功能函数,写入所述第一钩子函数对应的监听函数;其中,所述监听函数用于在监听到所述第一钩子函数被触发时,执行监听函数中的所有功能函数。
11.上述方案中,所述在执行所述源码文件中的源码时触发所述第一钩子函数的情况下,运行与所述第一钩子函数绑定的所述至少一个插件,包括:
12.在执行所述源码文件中的源码时,通过调用设定的触发函数,触发所述第一钩子函数;
13.在触发所述第一钩子函数的情况下,执行已写入对应的第一钩子函数的监听函数中的所有功能函数。
14.上述方案中,所述方法还包括:
15.基于所述第一应用的所有插件对应的配置文件,对每个插件进行初始化,得到所述第一应用对应的插件入口文件;其中,
16.所述配置文件用于描述对应的插件用于对所述第一应用的客户端和服务端中的至少之一进行功能扩展;
17.所述插件入口文件用于描述每个插件包括的客户端入口文件和服务端入口文件
中的至少之一的访问路径;所述客户端入口文件的访问路径用于获取对应的插件包括的客户端入口文件中的功能函数;所述服务端入口文件的访问路径用于获取对应的插件包括的服务端入口文件中的功能函数。
18.上述方案中,所述方法还包括:
19.基于所述插件入口文件和第一钩子函数对应的至少一个插件中每个插件的标识信息,确定出所述至少一个插件中每个插件对应的至少一个功能函数;其中,确定出的至少一个功能函数用于与所述第一钩子函数进行绑定。
20.上述方案中,所述基于所述第一应用的所有插件对应的配置文件,对每个插件进行初始化,得到所述第一应用对应的插件入口文件,包括:
21.基于第一插件的配置文件,确定出第一插件的入口文件的访问路径;
22.基于第二插件的配置文件,确定出第二插件的入口文件的访问路径;
23.基于所述第一插件的入口文件的访问路径和所述第二插件的入口文件的访问路径,确定出所述第一应用对应的插件入口文件;其中,
24.第一插件表征存储于所述第一应用的项目目录下的插件;
25.第二插件表征通过包管理器工具下载的所述第一应用的插件;
26.入口文件包括客户端入口文件和服务端入口文件中的至少之一。
27.上述方案中,通过以下方式确定所述第一插件或所述第二插件的入口文件的访问路径:
28.将第一访问路径、第二访问路径和入口文件的文件名进行拼接,得到入口文件的访问路径;其中,
29.所述第一访问路径表征插件相对于所述第一应用的根目录的访问路径;
30.所述第二访问路径表征插件的访问路径。
31.本发明实施例还提供一种应用功能扩展的装置,包括:
32.绑定单元,用于将第一应用的源码文件中的第一钩子函数与对应的至少一个插件进行绑定;
33.执行单元,用于在执行所述源码文件中的源码时触发所述第一钩子函数的情况下,运行与所述第一钩子函数绑定的所述至少一个插件;其中,
34.所述至少一个插件用于在所述第一应用中扩展出第一功能。
35.本发明实施例还提供了一种电子设备,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,
36.其中,所述处理器用于运行所述计算机程序时,执行上述任一种应用功能扩展的方法的步骤。
37.本发明实施例还提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种应用功能扩展的方法的步骤。
38.本发明实施例,将第一应用的源码文件中的第一钩子函数与对应的至少一个插件进行绑定;在执行所述源码文件中的源码时触发所述第一钩子函数的情况下,运行与所述第一钩子函数绑定的所述至少一个插件;其中,所述至少一个插件用于在所述第一应用中扩展出第一功能。上述方案,通过运行与第一钩子函数绑定的插件来实现功能扩展,由此开发人员可以针对扩展功能进行独立开发,降低主程序和扩展程序之间的耦合度,从而提高
功能扩展的灵活性;开发人员不需要对源码文件进行大量修改,可以减少开发成本;通过将源码文件中的第一钩子函数与至少一个插件进行绑定,开发人员可以按照实际需求将扩展功能集成到第一应用中。
附图说明
39.图1为本发明实施例提供的一种应用功能扩展的方法的实现流程示意图;
40.图2为本发明另一实施例提供的一种应用功能扩展的方法的实现流程示意图;
41.图3为本发明实施例提供的应用功能扩展的装置的结构示意图;
42.图4为本发明实施例提供的电子设备的硬件组成结构示意图。
具体实施方式
43.相关技术中通常采用以下两种方式开发web应用:
44.前后端分离的模式:前端和后端相互独立;前端负责渲染web应用的用户界面(ui,user interface),以及将后端提供的数据加载至ui。
45.前后端不分离的模式:后端控制前端的ui的渲染或重定向、显示效果等。
46.开发人员基于上述方式修改源码文件,以扩展web应用的功能时,需要大量修改源码文件中的源码,修改源码消耗的工作量较大导致开发成本较高,且主程序和扩展程序之间的耦合度较高,导致无法针对扩展功能进行独立开发,灵活性较差。
47.为了解决上述技术文件,本发明实施例提供了一种应用功能扩展的方法,包括:将第一应用的源码文件中的第一钩子函数与对应的至少一个插件进行绑定;在执行所述源码文件中的源码时触发所述第一钩子函数的情况下,运行与所述第一钩子函数绑定的所述至少一个插件;其中,所述至少一个插件用于在所述第一应用中扩展出第一功能。上述方案,通过运行与第一钩子函数绑定的插件来实现功能扩展,由此开发人员可以针对扩展功能进行独立开发,降低主程序和扩展程序之间的耦合度,从而提高功能扩展的灵活性;开发人员不需要对源码文件进行大量修改,可以减少开发成本;通过将源码文件中的第一钩子函数与至少一个插件进行绑定,开发人员可以按照实际需求将扩展功能集成到第一应用中。
48.以下结合说明书附图及具体实施例对本发明的技术方案做进一步的详细阐述。
49.图1示出了本发明实施例提供的一种应用功能扩展的方法的实现流程示意图。在本发明实施例中,应用功能扩展的方法的执行主体为电子设备,电子设备包括终端和服务器;终端包括手机、平板电脑和台式电脑等。
50.参照图1,本发明实施例提供的应用功能扩展的方法包括:
51.s101:将第一应用的源码文件中的第一钩子函数与对应的至少一个插件进行绑定;其中,所述至少一个插件用于在所述第一应用中添加第一功能。
52.这里,电子设备获取第一应用的所有插件,以及确定出第一应用的源码文件中包括的至少一个第一钩子函数;基于获取到的插件中包含的钩子函数的标识信息以及基于确定出的每个第一钩子函数的标识信息,确定出每个第一钩子函数对应的至少一个插件;将每个第一钩子函数和对应的至少一个插件进行绑定。其中,
53.由于开发人员开发出的插件可以是第一应用的内置插件,也可以发布到包管理工具(npm,node package manager),内置插件存储于第一应用的项目目录下;发布到npm的插
件是电子设备在启动第一应用的情况下通过npm下载到本地,并保存在npm的文件目录下;因此,电子设备从第一应用的项目目录下获取第一插件,以及从npm的文件目录下获取第二插件,从而得到第一应用的所有插件。在实际应用中,npm的文件目录可以为node_modules。插件用于扩展出第一应用的新的第一功能。
54.第一钩子函数泛指开发人员在第一应用的源码文件中设置的任一钩子函数。第一钩子函数的数量为至少一个。每个第一钩子函数用于提供一个扩展点,以便开发人员针对对应的扩展点编写源码,从而针对扩展点进行功能扩展。扩展点表征引入插件的接入点。
55.在实际应用中,第一应用为web应用。开发人员可以针对第一应用的源码文件中的每个源码模块设置对应的第一钩子函数,以便开发人员能够基于对应每个源码模块设置对应的第一钩子函数,对源码模块的功能进行扩展。
56.第一钩子函数包括标识信息、类型和监听函数。类型表征对应的第一钩子函数允许绑定一次或运行绑定至少两次;监听函数用于写入与对应的第一钩子函数绑定的插件中的功能函数。在实际应用中,当第一钩子函数的类型为“single”时,表征第一钩子函数允许绑定一次,第一钩子函数对应的插件的数量为一个;当第一钩子函数的类型为“multi”时,表征第一钩子函数允许绑定至少两次,第一钩子函数对应的插件的数量为至少两个。
57.示例性地,开发人员可以针对第一应用的源码文件中用于实现“导航菜单”的源码模块,设置对应的第一钩子函数,钩子函数的标识信息可以为sub

nav。
58.需要说明的是,插件表征相对独立的功能模块,可以被集成至第一应用的源码文件中。
59.在实际应用中,插件包括配置文件和至少一个入口文件。其中,配置文件用于描述对应的插件用于对第一应用的客户端和服务端中的至少之一进行功能扩展;入口文件可以为服务端入口文件,也可以为客户端入口文件。
60.在实际应用中,配置文件可以是index.js;当配置文件用于描述对应的插件用于对第一应用的客户端进行功能扩展时,插件包括客户端入口文件;当配置文件用于描述对应的插件用于对第一应用的服务端进行功能扩展时,插件包括服务端入口文件;当配置文件用于描述对应的插件用于对第一应用的客户端和服务端进行功能扩展时,插件包括客户端入口文件和服务端入口文件。
61.在实际应用中,index.js中包括第一字段和第二字段,第一字段可以为“client”,第二字段可以为“server”。第一字段表征对应的插件是否用于对第一应用的客户端进行功能扩展;第二字段表征对应的插件是否用于对第一应用的服务端进行功能扩展。当index.js中的第一字段client为“true”时,插件中包括客户端入口文件client.js;当index.js中的第二字段server为“true”时,插件中包括服务端入口文件server.js;当index.js中的第一字段client和第二字段server均为“true”时,插件中包括client.js和server.js。
62.需要说明的是,服务端入口文件和客户端入口文件中均包括对应的功能函数以及需要绑定的钩子函数的标识信息。需要绑定的钩子函数是第一应用的源码文件中设置的钩子函数。
63.在一些实施例中,所述将第一应用的源码文件中的第一钩子函数与对应的至少一个插件进行绑定,包括:
64.通过调用设定的绑定函数,将所述至少一个插件对应的至少一个功能函数,写入所述第一钩子函数对应的监听函数;其中,所述监听函数用于在监听到所述第一钩子函数被触发时,执行监听函数中的所有功能函数。
65.这里,电子设备在确定出每个第一钩子函数对应的插件的情况下,调用设定的绑定函数,将第一钩子函数对应的插件中的功能函数,写入第一钩子函数中的监听函数,以将第一钩子函数的标识信息和对应的插件中的功能函数进行绑定,即,绑定第一钩子函数和对应的插件。其中,第一钩子函数中的监听函数用于监听对应的第一钩子函数是否被触发,并监听到对应的第一钩子函数被触发时,执行监听函数中的所有功能函数。
66.在实际应用中,设定的绑定函数可以为bindhook(

hook

name’,function);

hook

name’表征第一钩子函数的标识信息;function表征插件中的功能函数。
67.本方案中,将第一钩子函数对应的插件中的功能函数写入第一钩子函数的监听函数中,从而将第一应用的源码文件中的钩子函数与对应的插件进行绑定。通过第一钩子函数中的监听函数监听对应的第一钩子函数是否被触发,并监听到对应的第一钩子函数被触发时,执行监听函数中的所有功能函数,从而快速地将插件中的功能函数集成至第一应用,实现对第一应用进行功能扩展,这样可以提高功能扩展效率。
68.s102:在执行所述源码文件中的源码时触发所述第一钩子函数的情况下,运行与所述第一钩子函数绑定的所述至少一个插件;其中,所述至少一个插件用于在所述第一应用中扩展出第一功能。
69.这里,电子设备在执行第一应用的源码文件中的源码的过程中,触发第一钩子函数,在触发第一钩子函数的情况下,运行与第一钩子函数绑定的至少一个插件,从而执行与第一钩子函数绑定的至少一个插件中的功能函数,以扩展出第一应用的第一功能。需要说明的是,通过与第一钩子函数绑定的一个插件在第一应用中扩展出一个第一功能,也可以通过与第一钩子函数绑定的至少两个插件在第一应用中扩展出一个第一功能。
70.在实际应用中,在第一钩子函数设置于第一应用的源码文件中用于实现“导航菜单”的源码模块的对应位置的情况下,电子设备在执行完“导航菜单”的源码模块的源码时,触发对应的第一钩子函数,运行与第一钩子函数绑定的至少一个插件。例如,当与第一钩子函数绑定的插件用于在“导航菜单”中增加“文档”选项时,电子设备在执行完该插件中的功能函数的情况下,显示出包括“文档”选项的“导航菜单”。
71.在一些实施例中,所述在执行所述源码文件中的源码时触发所述第一钩子函数的情况下,运行与所述第一钩子函数绑定的所述至少一个插件,包括:
72.在执行所述源码文件中的源码时,通过调用设定的触发函数,触发所述第一钩子函数;
73.在触发所述第一钩子函数的情况下,执行已写入对应的第一钩子函数的监听函数中的所有功能函数。
74.这里,电子设备在执行第一应用的源码文件中的源码的过程中,通过调用设定的触发函数,触发第一钩子函数;第一钩子函数中的监听函数监听到对应的第一钩子函数被触发,执行已写入对应的第一钩子函数的监听函数中的所有功能函数。
75.在实际应用中,设定的触发函数可以为emithook(

hook

name’)。
76.本实施例提供的方案中,将第一应用的源码文件中的第一钩子函数与对应的至少
一个插件进行绑定;在执行源码文件中的源码时触发第一钩子函数的情况下,运行与第一钩子函数绑定的至少一个插件,从而扩展出第一应用的第一功能。上述方案,通过运行与第一钩子函数绑定的插件来实现功能扩展,由此开发人员可以针对扩展功能进行独立开发,降低主程序和扩展程序之间的耦合度,从而提高功能扩展的灵活性;开发人员不需要对源码文件进行大量修改,可以减少开发成本;通过将源码文件中的第一钩子函数与至少一个插件进行绑定,开发人员可以按照实际需求将扩展功能集成到第一应用中。
77.在一些实施例中,第一应用中包括插件管理文件,插件管理文件的标识可以为plugin.js;插件管理文件中包括设定的绑定函数和设定的触发函数;插件管理文件用于对第一应用的插件进行初始化,以及用于供电子设备调用设定的绑定函数和设定的触发函数。设定的绑定函数用于绑定第一钩子函数和对应的插件;设定的触发函数用于触发第一钩子函数。
78.请参照图2,图2示出了本发明另一实施例提供的一种应用功能扩展的方法的实现流程示意图。图2对应的实施例与图1对应的实施例的区别在于,在将第一应用的源码文件中的第一钩子函数与对应的至少一个插件进行绑定之前,对第一应用的插件进行初始化。
79.如图2所示,应用功能扩展的方法包括:
80.s201:基于第一应用的所有插件对应的配置文件,对每个插件进行初始化,得到所述第一应用对应的插件入口文件;其中,
81.所述配置文件用于描述对应的插件用于对所述第一应用的客户端和服务端中的至少之一进行功能扩展;
82.所述插件入口文件用于描述每个插件包括的客户端入口文件和服务端入口文件中的至少之一的访问路径;所述客户端入口文件的访问路径用于获取对应的插件包括的客户端入口文件中的功能函数;所述服务端入口文件的访问路径用于获取对应的插件包括的服务端入口文件中的功能函数。
83.在实际应用中,电子设备在获取到第一应用的所有插件的情况下,获取第一应用的每个插件中包含的配置文件;通过运行插件管理文件plugin.js,基于第一应用的所有插件对应的配置文件,对每个插件进行初始化,得到第一应用对应的插件入口文件。其中,
84.第一应用的插件包括第一插件和第二插件中的至少一类;
85.当配置文件用于描述对应的插件用于对第一应用的客户端进行功能扩展时,对应的插件包括客户端入口文件,插件入口文件包括对应的插件的客户端入口文件的访问路径;
86.当配置文件用于描述对应的插件用于对第一应用的服务端进行功能扩展时,对应的插件包括服务端入口文件,插件入口文件包括对应的插件的服务端入口文件的访问路径;
87.当配置文件用于描述对应的插件用于对第一应用的客户端和服务端进行功能扩展时,对应的插件包括客户端入口文件和服务端入口文件,插件入口文件包括对应的插件的客户端入口文件的访问路径和服务端入口文件的访问路径。
88.需要说明的是,第一应用对应的插件入口文件中包括了第一应用的所有插件的入口文件的访问路径。入口文件包括客户端入口文件和服务端入口文件中的至少之一。插件入口文件中插件的标识信息和对应的入口文件的访问路径具有对应关系。
89.在一些实施例中,为了避免第一应用无法加载开发人员已开发出的部分扩展功能,提高在第一应用中添加扩展功能的成功率;所述基于所述第一应用的所有插件对应的配置文件,对每个插件进行初始化,得到所述第一应用对应的插件入口文件,包括:
90.基于第一插件的配置文件,确定出第一插件的入口文件的访问路径;
91.基于第二插件的配置文件,确定出第二插件的入口文件的访问路径;
92.基于所述第一插件的入口文件的访问路径和所述第二插件的入口文件的访问路径,确定出所述第一应用对应的插件入口文件;其中,
93.第一插件表征存储于所述第一应用的项目目录下的插件;
94.第二插件表征通过包管理器工具下载的所述第一应用的插件;
95.入口文件包括客户端入口文件和服务端入口文件中的至少之一。
96.这里,电子设备遍历第一应用的项目目录,获取存储于第一应用的项目目录下的第一插件;在获取到第一应用的第一插件的情况下,电子设备基于第一插件的配置文件,确定出第一插件中包含的入口文件,基于第一插件的存储路径和入口文件的名称,确定出第一插件的入口文件的访问路径。
97.电子设备遍历包管理工具的文件目录,获取存储于包管理工具的文件目录下的第一应用的所有第二插件;在获取到第一应用的第二插件的情况下,电子设备基于第二插件的配置文件,确定出第二插件中包含的入口文件,基于第二插件的存储路径和入口文件的名称,确定出第二插件的入口文件的访问路径。
98.在确定出所有第一插件的访问路径和所有第二插件的访问路径的情况下,将第一插件的入口文件的访问路径和第二插件的入口文件的访问路径进行合并,得到第一应用对应的插件入口文件。
99.需要说明的是,在不存在第一应用的第一插件的情况下,第一应用对应的插件入口文件中仅包括第二插件的入口文件的访问路径。在不存在第一应用的第二插件的情况下,第一应用对应的插件入口文件中仅包括第一插件的入口文件的访问路径。
100.在一些实施例中,为了更准确地确定出入口文件的访问路径,以提高获取到插件包括的入口文件中的功能函数的概率,通过以下方式确定所述第一插件或所述第二插件的入口文件的访问路径:
101.将第一访问路径、第二访问路径和入口文件的文件名进行拼接,得到入口文件的访问路径;其中,
102.所述第一访问路径表征对应的插件相对于所述第一应用的根目录的访问路径;
103.所述第二访问路径表征对应的插件的访问路径。
104.示例性地,第一应用的第一插件的访问路径如下:
105.exts/apidesign

plugin

import

postman/client.js;
106.exts/apidesign

plugin

import

postman/server.js。
107.其中,“exts”表征第一插件相对于第一应用的根目录的访问路径;“apidesign

plugin

import

postman”表征第一插件的名称,第一插件包括客户端入口文件和服务端入口文件;“client.js”表征第一插件中包括的客户端入口文件的名称;“server.js”表征第一插件中包括的服务端入口文件的名称。
108.示例性地,第一应用的第二插件的访问路径如下:
109.node

modules/apidesign

plugin

import

har/server.js。
110.其中,“node

modules”表征第二插件相对于第一应用的根目录的访问路径;“apidesign

plugin

import

har”表征第二插件的名称,第二插件包括服务端入口文件,不包括客户端入口文件;“server.js”表征第二插件中包括的服务端入口文件的名称。
111.s202:基于所述插件入口文件和第一钩子函数对应的至少一个插件中每个插件的标识信息,确定出所述至少一个插件中每个插件对应的至少一个功能函数;其中,确定出的至少一个功能函数用于与所述第一钩子函数进行绑定。
112.这里,电子设备基于第一钩子函数对应至少一个插件中每个插件的标识信息,从确定出的插件入口文件中,获取每个插件的标识信息对应的入口文件的访问路径,得到每个插件对应的入口文件的访问路径。在得到插件对应的入口文件的访问路径的情况下,基于获取到的入口文件的访问路径,访问对应的插件中包含的入口文件,并从访问的入口文件中获取对应的功能函数,从而得到每个插件对应的至少一个功能函数。其中,插件对应的功能函数包括第一功能函数和第二功能函数中的至少之一;第一功能函数表征对应的插件包括的客户端入口文件中的功能函数;第二功能函数表征对应的插件包括的服务端入口文件中的功能函数。
113.在实际应用中,当插件的标识信息对应的入口文件的访问路径包括客户端入口文件的访问路径时,电子设备基于客户端入口文件的访问路径,访问对应的插件中的客户端入口文件,从访问的客户端入口文件中读取第一功能函数,得到对应的插件对应的第一功能函数。
114.当插件的标识信息对应的入口文件的访问路径包括服务端入口文件的访问路径时,电子设备基于服务端入口文件的访问路径,访问对应的插件中的服务端入口文件,从访问的服务端入口文件中读取第二功能函数,得到对应的插件对应的第二功能函数。
115.当插件的标识信息对应的入口文件的访问路径包括客户端入口文件的访问路径和服务端入口文件的访问路径时,电子设备基于客户端入口文件的访问路径,访问对应的插件中的客户端入口文件,从访问的客户端入口文件中读取第一功能函数;以及基于服务端入口文件的访问路径,访问对应的插件中的服务端入口文件,从访问的服务端入口文件中读取第二功能函数,得到对应的插件对应的第一功能函数和第二功能函数。
116.s203:通过调用设定的绑定函数,将所述至少一个插件对应的至少一个功能函数,写入所述第一钩子函数对应的监听函数;其中,所述监听函数用于在监听到所述第一钩子函数被触发时,执行监听函数中的所有功能函数。
117.这里,电子设备在确定出第一钩子函数对应的每个插件对应的功能函数的情况下,通过调用插件管理文件plugin.js中的设定的绑定函数,将第一钩子函数对应的每个插件对应的功能函数,写入对应的第一钩子函数对应的监听函数中,从而将第一应用的源码文件中的第一钩子函数与对应的至少一个插件进行绑定。
118.s204:在执行所述源码文件中的源码时,通过调用设定的触发函数,触发所述第一钩子函数。
119.电子设备在执行第一应用的源码文件中的源码时,通过调用插件管理文件plugin.js中的设定的触发函数,触发第一钩子函数。
120.s205:在触发所述第一钩子函数的情况下,执行已写入对应的第一钩子函数的监
听函数中的所有功能函数。
121.这里,第一钩子函数中的监听函数监听到对应的第一钩子函数被触发,电子设备执行已写入对应的第一钩子函数的监听函数中的所有功能函数。
122.需要说明的是,在本发明的实施例中,电子设备基于第一应用的源码文件和第一应用的所有插件,确定出第一应用的前端静态资源文件;通过前端资源加载/打包工具,根据第一应用的所有前端静态资源文件之间的依赖关系进行静态分析,得到静态分析结果,基于静态分析结果将第一应用的前端静态资源文件按照指定的规则生成对应的静态资源,加载生成的静态资源,得到前端页面。
123.其中,
124.前端资源加载/打包工具可以为webpack、rollup、parcel或systemjs。
125.前端静态资源文件包括js源码文件、css样式文件、图片、字体文件等。
126.通过webpack按照指定的规则生成对应的静态资源的实现过程如下:
127.利用webpack工具遍历第一应用的应用入口文件application.js,递归分析第一应用的所引用的前端静态资源文件,并根据前端静态资源文件的文件类型做对应处理。其中,
128.通过文件后缀名来识别前端静态资源文件文件类型。例如,当前端静态资源文件的后缀是“js”或“jsx”时,表征对应的前端静态资源文件是javascript脚本文件;当前端静态资源文件的后缀名是“png”、“gif”、“jpg”或“jpeg”时,表征对应的前端静态资源文件是图片文件。当前端静态资源文件的后缀名是“sass”、“scss”或“css”时,表征对应的前端静态资源文件是样式文件;当前端静态资源文件的后缀名为“woff”、“woff2”、“eot”、“ttf”或“svg”时,表征对应的前端静态资源文件是字体文件。
129.当前端静态资源文件为图片时,利用webpack根据文件大小决定是否使用base64内嵌;其中,当文件大小小于50kb时,通过base64替换图片路径。
130.当前端静态资源文件为样式文件时,使用对应的语法转译、合并压缩文件,文件名添加hash替换引用路径。
131.当前端静态资源文件为js文件时,利用webpack使用对应语法转译、合并压缩文件、文件名添加hash替换引用路径。其中,通过require.ensure或者动态导入的前端静态资源文件最终会形成独立的文件,而不被合并。
132.当前端静态资源文件为字体文件时,利用webapck对字体文件进行文件名添加hash,并替换路径。
133.需要说明的是,经过webpack打包之后的静态资源最终生成在一个目录下的文件,例如,dist文件。其中,应用入口文件application.js合并之后的样式文件会添加到index.html文件进行加载。
134.需要说明的是,第一应用的服务端是nodejs应用,在启动时会通过require方法引入第一应用并执行。
135.其中,require为nodejs内置的方法,在nodejs应用里使用require来引入模块(相关文件),实现模块管理。
136.在实际应用中,当第一应用的插件发布至npm的情况下,电子设备在启动第一应用的情况下,通过npm提供的命令将对应的插件添加至第一应用的项目,从而对对应的插件进
行初始化。
137.本实施例提供的方案中,基于第一应用的所有插件对应的配置文件,对每个插件进行初始化,得到第一应用对应的插件入口文件,可以得到第一应用的所有插件中包括的入口文件的访问路径;基于插件入口文件和第一钩子函数对应的至少一个插件中每个插件的标识信息,确定出第一钩子函数对应的至少一个插件中每个插件对应的至少一个功能函数;通过调用设定的绑定函数,将至少一个插件对应的至少一个功能函数,写入第一钩子函数对应的监听函数;在执行所述源码文件中的源码时,通过调用设定的触发函数,触发第一钩子函数;在触发第一钩子函数的情况下,执行已写入对应的第一钩子函数的监听函数中的所有功能函数,可以避免遗漏第一应用的插件中的功能函数,进而避免无法在第一应用中添加开发人员扩展出的所有新功能,可以提高在第一应用中添加扩展功能的成功率。
138.为实现本发明实施例的方法,本发明实施例还提供了一种应用功能扩展的装置,设置在电子设备上,如图3所示,该应用功能扩展的装置包括:
139.绑定单元31,用于将第一应用的源码文件中的第一钩子函数与对应的至少一个插件进行绑定;
140.执行单元32,用于在执行所述源码文件中的源码时触发所述第一钩子函数的情况下,运行与所述第一钩子函数绑定的所述至少一个插件;其中,
141.所述至少一个插件用于在所述第一应用中扩展出第一功能。
142.在一些实施例中,绑定单元31用于:
143.通过调用设定的绑定函数,将所述至少一个插件对应的至少一个功能函数,写入所述第一钩子函数对应的监听函数;其中,所述监听函数用于在监听到所述第一钩子函数被触发时,执行监听函数中的所有功能函数。
144.在一些实施例中,执行单元32用于:
145.在执行所述源码文件中的源码时,通过调用设定的触发函数,触发所述第一钩子函数;
146.在触发所述第一钩子函数的情况下,执行已写入对应的第一钩子函数的监听函数中的所有功能函数。
147.在一些实施例中,应用功能扩展的装置还包括:
148.初始化单元,用于基于所述第一应用的所有插件对应的配置文件,对每个插件进行初始化,得到所述第一应用对应的插件入口文件;其中,
149.所述配置文件用于描述对应的插件用于对所述第一应用的客户端和服务端中的至少之一进行功能扩展;
150.所述插件入口文件用于描述每个插件包括的客户端入口文件和服务端入口文件中的至少之一的访问路径;所述客户端入口文件的访问路径用于获取对应的插件包括的客户端入口文件中的功能函数;所述服务端入口文件的访问路径用于获取对应的插件包括的服务端入口文件中的功能函数。
151.在一些实施例中,应用功能扩展的装置还包括:
152.确定单元,用于基于所述插件入口文件和第一钩子函数对应的至少一个插件中每个插件的标识信息,确定出所述至少一个插件中每个插件对应的至少一个功能函数;其中,确定出的至少一个功能函数用于与所述第一钩子函数进行绑定。
153.在一些实施例中,所述初始化单元用于:
154.基于第一插件的配置文件,确定出第一插件的入口文件的访问路径;
155.基于第二插件的配置文件,确定出第二插件的入口文件的访问路径;
156.基于所述第一插件的入口文件的访问路径和所述第二插件的入口文件的访问路径,确定出所述第一应用对应的插件入口文件;其中,
157.第一插件表征存储于所述第一应用的项目目录下的插件;
158.第二插件表征通过包管理器工具下载的所述第一应用的插件;
159.入口文件包括客户端入口文件和服务端入口文件中的至少之一。
160.在一些实施例中,所述初始化单元通过以下方式确定所述第一插件或所述第二插件的入口文件的访问路径:
161.将第一访问路径、第二访问路径和入口文件的文件名进行拼接,得到入口文件的访问路径;其中,
162.所述第一访问路径表征插件相对于所述第一应用的根目录的访问路径;
163.所述第二访问路径表征插件的访问路径。
164.实际应用时,应用功能扩展的装置包括的各单元可由应用功能扩展的装置中的处理器来实现。当然,处理器需要运行存储器中存储的程序来实现上述各程序模块的功能。
165.需要说明的是:上述实施例提供的应用功能扩展的装置在对应用进行功能扩展时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将应用功能扩展的装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的应用功能扩展的装置与应用功能扩展的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
166.基于上述程序模块的硬件实现,且为了实现本发明实施例的方法,本发明实施例还提供了一种电子设备。图4为本发明实施例提供的电子设备的硬件组成结构示意图,如图4所示,电子设备包括:
167.通信接口1,能够与其它设备比如服务器等进行信息交互;
168.处理器2,与通信接口1连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的应用功能扩展的方法。而所述计算机程序存储在存储器3上。
169.当然,实际应用时,电子设备中的各个组件通过总线系统4耦合在一起。可理解,总线系统4用于实现这些组件之间的连接通信。总线系统4除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图4中将各种总线都标为总线系统4。
170.本发明实施例中的存储器3用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。
171.可以理解,存储器3可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read

only memory)、可擦除可编程只读存储器(eprom,erasable programmable read

only memory)、电可擦除可编程只读存储器(eeprom,electrically erasable programmable read

only memory)、磁性随机存取存储
器(fram,ferromagnetic random access memory)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(cd

rom,compact disc read

only memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,random access memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,static random access memory)、同步静态随机存取存储器(ssram,synchronous static random access memory)、动态随机存取存储器(dram,dynamic random access memory)、同步动态随机存取存储器(sdram,synchronous dynamic random access memory)、双倍数据速率同步动态随机存取存储器(ddrsdram,double data rate synchronous dynamic random access memory)、增强型同步动态随机存取存储器(esdram,enhanced synchronous dynamic random access memory)、同步连接动态随机存取存储器(sldram,sync link dynamic random access memory)、直接内存总线随机存取存储器(drram,direct rambus random access memory)。本发明实施例描述的存储器3旨在包括但不限于这些和任意其它适合类型的存储器。
172.上述本发明实施例揭示的方法可以应用于处理器2中,或者由处理器2实现。处理器2可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器2中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器2可以是通用处理器、dsp,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器2可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器3,处理器2读取存储器3中的程序,结合其硬件完成前述方法的步骤。
173.处理器2执行所述程序时实现本发明实施例的各个方法中多核处理器对应的流程,为了简洁,在此不再赘述。
174.在示例性实施例中,本发明实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器3,上述计算机程序可由处理器2执行,以完成前述图1至图2对应的实施例中的所述步骤。计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、flash memory、磁表面存储器、光盘、或cd

rom等存储器。
175.在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
176.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
177.另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述
集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
178.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
179.需要说明的是,本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
180.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1