组件安装和数据处理的方法、装置、设备及介质与流程

未命名 07-14 阅读:110 评论:0


1.本公开涉及前端开发技术领域,尤其涉及一种组件安装和数据处理的方法、装置、设备及介质。


背景技术:

2.随着前端开发中业务场景的多样化和存在一些功能的通用性,在软件开发的过程中,通常将一些能够复用的功能组件上传至业界的一些共享平台(例如为npm网站,nmp网站是一个javascript(简称js,一种脚本语言)代码共享的中心,拥有超过一百万个组件软件包),并通过设置权限使得其他开发人员能够从上述共享平台下载所需的npm组件包进行复用。
3.为了实现快速开发,目前可以通过下载脚手架工具(也可以描述为包管理工具,诸如npm、yarn、pnpm、cnpm等脚手架工具来进行js包的管理)来简化应用开发项目的搭建。
4.然而,目前在前端开发过程中,终端设备需要对所要复用的组件包的安装依赖进行解析,解析过程较长,导致组件包安装耗时较长,进而拖慢了项目开发进度;此外由于这些复用组件对应的资源所在的服务器在国外,受网络的影响,经常在开发过程中出现加载缓慢或下载失败的情况,严重影响前端项目的开发进度。


技术实现要素:

5.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开的实施例提供了一种组件安装和数据处理的方法、装置、设备及介质。
6.第一方面,本公开的实施例提供了一种组件安装的方法。上述方法应用于终端设备,包括:接收软件开发过程中针对目标组件包的安装请求;从服务端预先构建的依赖图中查询上述目标组件包对应的目标依赖组件包;上述依赖图为用于表示组件包的安装依赖关系的数据结构;从预先加载的热度依赖组件包列表中确定是否存在上述目标依赖组件包;在上述热度依赖组件包列表中存在上述目标依赖组件包的情况下,从预先下载至本地的热度依赖组件包中安装上述目标依赖组件包至全局文件夹。
7.根据本公开的实施例,上述热度依赖组件包列表里面的热度依赖组件包是热度排名超过设定名次的依赖组件包,上述依赖组件包的热度是根据依赖组件包的访问信息和对应的预设权重计算加权和而生成或更新得到的。上述访问信息包括:访问累计次数、安装累计次数和时间顺序;上述时间顺序用于表示最新安装时间或最新访问时间在参考周期内的时间先后,上述时间顺序的取值越大,表示时间越新。
8.根据本公开的实施例,上述组件安装的方法还包括:安装软件开发脚手架工具;基于上述软件开发脚手架工具,从上述服务端加载上述热度依赖组件包列表。
9.根据本公开的实施例,上述组件安装的方法还包括:根据上述终端设备所处的网络状态,确定上述热度依赖组件包列表中热度依赖组件包的下载时机;根据上述下载时机,从组件库下载一个或多个热度依赖组件包至本地。
10.根据本公开的实施例,上述安装请求携带有上述目标组件包的包信息;上述组件安装的方法还包括:根据上述包信息,生成查询键信息。其中,上述从服务端预先构建的依赖图中查询上述目标组件包对应的目标依赖组件包,包括:根据上述查询键信息,从服务端预先构建的依赖图中查询上述目标组件包对应的目标依赖组件包。
11.根据本公开的实施例,上述组件安装的方法还包括:在上述热度依赖组件包列表中不存在上述目标依赖组件包中的一个或多个第一目标依赖组件包的情况下,从组件库下载上述第一目标依赖组件包至本地,并安装至全局文件夹。
12.第二方面,本公开的实施例提供了一种数据处理的方法。上述方法应用于服务端,包括:接收终端设备针对第一组件包的访问请求;在上述访问请求为首次访问的情况下,根据上述第一组件包的配置文件,构建上述第一组件包对应的第一依赖图,上述第一依赖图为用于表示上述第一组件包的安装依赖关系的数据结构,包含上述第一组件包安装所依赖的第一依赖组件包;在上述访问请求为非首次访问的情况下,根据预先构建的上述第一依赖图,查询上述第一组件包安装所依赖的第一依赖组件包;根据上述第一依赖组件包的访问信息,生成或更新上述第一依赖组件包的热度;根据依赖组件包的热度排名,生成或更新热度依赖组件包列表,上述依赖组件包包括上述第一依赖组件包。
13.根据本公开的实施例,上述访问信息包括:访问累计次数、安装累计次数和时间顺序;上述时间顺序用于表示最新安装时间或最新访问时间在参考周期内的时间先后,上述时间顺序的取值越大,表示时间越新。其中,根据上述第一依赖组件包的访问信息,生成或更新上述第一依赖组件包的热度,包括:获取上述第一依赖组件包的访问累计次数、安装累计次数和时间顺序;计算上述访问累计次数、上述安装累计次数、上述时间顺序与对应的预设权重的加权和,上述加权和作为上述第一依赖组件包的上述热度。
14.根据本公开的实施例,根据上述第一组件包的配置文件,构建上述第一组件包对应的第一依赖图,包括:对上述第一组件包的配置文件进行解析,得到上述第一组件包的直接依赖组件包;对上述直接依赖组件包所依赖的对象进行递归分析,直至递归到依赖链路终止,得到上述第一组件包的间接依赖组件包;根据上述第一组件包、上述直接依赖组件包和上述间接依赖组件包,生成上述第一组件包对应的第一依赖图;上述直接依赖组件包和上述间接依赖组件包构成上述第一依赖组件包;根据上述第一组件包的包信息,生成上述第一依赖图的键信息;以上述键信息作为索引,存储上述第一依赖图。
15.第三方面,本公开的实施例提供了一种组件安装的装置。上述组件安装的装置包括:安装请求接收模块、依赖关系查询模块、确定模块和安装模块。上述安装请求接收模块用于接收软件开发过程中针对目标组件包的安装请求。上述依赖关系查询模块用于从服务端预先构建的依赖图中查询上述目标组件包对应的目标依赖组件包。上述依赖图为用于表示组件包的安装依赖关系的数据结构。上述确定模块用于从预先加载的热度依赖组件包列表中确定是否存在上述目标依赖组件包。上述安装模块用于在上述热度依赖组件包列表中存在上述目标依赖组件包的情况下,从预先下载至本地的热度依赖组件包中安装上述目标依赖组件包至全局文件夹。
16.第四方面,本公开的实施例提供了一种数据处理的装置。上述数据处理的装置包括:访问请求接收模块、依赖图构建模块、依赖图查询模块、热度生成和更新模块以及列表生成和更新模块。上述访问请求接收模块用于接收终端设备针对第一组件包的访问请求。
上述依赖图构建模块用于在上述访问请求为首次访问的情况下,根据上述第一组件包的配置文件,构建上述第一组件包对应的第一依赖图,上述第一依赖图为用于表示上述第一组件包的安装依赖关系的数据结构,包含上述第一组件包安装所依赖的第一依赖组件包。上述依赖图查询模块用于在上述访问请求为非首次访问的情况下,根据预先构建的上述第一依赖图,查询上述第一组件包安装所依赖的第一依赖组件包。上述热度生成和更新模块用于根据上述第一依赖组件包的访问信息,生成或更新上述第一依赖组件包的热度。上述列表生成和更新模块用于根据依赖组件包的热度排名,生成或更新热度依赖组件包列表,上述依赖组件包包括上述第一依赖组件包。
17.第五方面,本公开的实施例提供了一种电子设备。上述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现如上所述的组件安装的方法或数据处理的方法。
18.第六方面,本公开的实施例提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的组件安装的方法或数据处理的方法。
19.本公开实施例提供的上述技术方案至少具有如下优点的部分或全部:
20.通过预先在服务端构建要复用的组件的依赖图,终端设备在软件开发过程中接收到目标组件包的安装请求的情况下,无需进行对目标组件包的依赖关系进行解析的耗时过程,通过在服务端查询便能够快速查到目标组件包的安装所依赖的全部目标依赖组件包;通过预先在服务端生成各个依赖组件包的热度以及根据热度排序得到热度依赖组件包列表,其中热度依赖组件包列表中的热度依赖组件包预先已经下载至终端设备本地,那么终端设备只需要确定安装所依赖的全部目标依赖组件包是否在热度依赖组件包列表内即可,在目标依赖组件包都位于上述热度依赖组件包列表的情况下,无需下载目标依赖组件包,只需要从本地把预先下载的热度依赖组件包中的目标依赖组件包安装至全局文件夹即可,省去了在终端设备查到目标依赖组件包之后从组件库下载的过程,避免了由于网络原因导致的软件开发过程中下载缓慢或失败的问题,有助于加快软件开发的进度。
附图说明
21.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
22.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
23.图1示意性地示出了适用于本公开实施例的组件安装的方法和数据处理的方法的系统架构;
24.图2示意性地示出了根据本公开一实施例的组件安装的方法的流程图;
25.图3示意性地示出了根据本公开另一实施例的组件安装的方法的流程图;
26.图4示意性地示出了根据本公开又一实施例的组件安装的方法的流程图;
27.图5示意性地示出了根据本公开再一实施例的组件安装的方法的流程图;
28.图6示意性地示出了根据本公开又另一实施例的组件安装的方法的流程图;
29.图7示意性地示出了根据本公开一实施例的数据处理的方法的流程图;
30.图8示意性地示出了根据本公开一实施例的终端设备、服务端和组件库之间的数据交互过程示意图;
31.图9示意性地示出了根据本公开一实施例的组件安装的装置的结构框图;
32.图10示意性地示出了根据本公开一实施例的数据处理的装置的结构框图;以及
33.图11示意性地示出了本公开实施例提供的电子设备的结构框图。
具体实施方式
34.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
35.图1示意性地示出了适用于本公开实施例的组件安装的方法和数据处理的方法的系统架构。
36.参照图1所示,适用于本公开实施例的组件安装的方法和数据处理的方法的系统架构100包括:终端设备101、102、103,网络104和服务端105。网络104是在终端设备101、102、103和服务端105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
37.用户可以使用终端设备101、102、103通过网络104与服务端105交互,以接收或发送消息等。终端设备101、102、103上可以安装有软件开发类应用或在线开发类应用等。终端设备还可以安装有其他通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、视频播放类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
38.终端设备101、102、103可以是具有显示屏的各种电子设备,例如包括但不限于:智能手机、平板电脑、笔记本电脑、台式计算机等等。
39.服务端105可以是提供各种服务的服务器,包括云端服务器或应用服务器,也可以是服务器集群。例如可以是对用户利用终端设备101、102、103上的软件开发类应用或在线开发类应用提供服务支持的服务器或服务器集群(仅为示例)。上述服务端可以对接收到的软件开发请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
40.需要说明的是,本公开实施例所提供的组件安装的方法一般可以由终端设备101、102、103执行。相应地,本公开实施例所提供的组件安装的装置一般可以设置于终端设备中。本公开实施例所提供的数据处理的方法可以由服务端105执行。相应地,本公开实施例所提供的数据处理的装置一般可以设置于服务端105中。在其他实施例中,数据处理的方法可以由不同于服务端105且能够与终端设备101、102、103和/或服务端105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的数据处理的装置也可以设置于不同于服务端105且能够与终端设备101、102、103和/或服务端105通信的服务器或服务器集群中。
41.应该理解,图1中的终端设备、网络和服务端的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务端。
42.本公开的第一个示例性实施例提供了一种组件安装的方法。本实施例提供的组件安装的方法可以应用于图1示例的系统架构100中的终端设备101、102、103。
43.图2示意性地示出了根据本公开一实施例的组件安装的方法的流程图。图8示意性地示出了根据本公开一实施例的终端设备、服务端和组件库之间的数据交互过程示意图。
44.参照图2和图8所示,本公开实施例提供的组件安装的方法,包括以下步骤:s210、s220、s230和s240。
45.在步骤s210,接收软件开发过程中针对目标组件包的安装请求。
46.在一些实施例中,软件开发过程包括创建软件开发项目、复用组件等过程。
47.在一些应用场景中,目标组件包为用户(例如为前端开发人员)所要复用的组件包。例如,用户通过在终端设备已创建的软件开发项目对应的软件开发界面输入要复用的目标组件包a的npm包标识,并点击安装对应的功能键,视为该终端设备接收到针对目标组件包的安装请求。上述npm包标识是组件库(例如组件库为npm组件包对应的资源库)中软件包的唯一标识。
48.npm是node.js(node.js是一个基于chrome javascript引擎,并采用事件驱动、非阻塞i/o模型等技术实现的一个javascript运行平台)的包管理器,用于node(一种插件类型)插件管理(包括安装、卸载、管理依赖等),npm是随同node.js一起安装的包管理工具,能解决node.js代码部署上的很多问题,常见的使用场景有以下几种:允许用户从npm服务器下载别人编写的第三方包到本地使用;允许用户从npm服务器下载并安装别人编写的命令行程序到本地使用;允许用户将自己编写的包或命令行程序上传到npm服务器供别人使用。
49.在另一些应用场景中,该终端设备能够呈现可复用组件的列表,例如呈现热度依赖组件包列表,使得用户能够在该热度依赖组件包列表中选择所需要复用的目标组件包。可以理解的是,如果该热度依赖组件包列表里面呈现的热度依赖组件包不能够满足用户的需求,用户能够通过上述示例的输入要复用的目标组件包的npm包标识的方式来下达针对目标组件包的安装请求指令。
50.在步骤s220,从服务端预先构建的依赖图中查询上述目标组件包对应的目标依赖组件包。
51.上述依赖图为用于表示组件包的安装依赖关系的数据结构,该数据结构用于在服务端进行存储,例如在服务端的本地缓存或者在服务端能够访问的存储服务中进行存储等。在一些实施例中,上述依赖图可以基于树状结构进行存储。
52.在一些应用场景中,在服务端预先构建要复用的npm组件包对应的依赖图。
53.作为示例,目标组件包a依赖于组件包b和组件包c;组件包b依赖于组件包d和e,组件包c依赖于组件包f;组件包d依赖于组件包g,组件包e依赖于组件包h;组件包g、组件包h和组件包f无依赖。
54.采用

表示依赖关系,箭头指向的对象为安装所依赖的对象,则目标组件包a对应的依赖图中的依赖链路表示为:
55.组件包a

组件包b

组件包d

组件包g;
56.组件包a

组件包b

组件包e

组件包h;
57.组件包a

组件包c

组件包f。
58.则目标组件包a对应的目标依赖组件包包括:组件包b、组件包c、组件包d、组件包
e、组件包f、组件包g和组件包h。其中,第一层依赖组件包(也可以描述为直接依赖组件包)包括:组件包b和组件包c;第二层依赖组件包包括:组件包d、组件包e和组件包f;第三层依赖组件包包括:组件包g和组件包h。下面将第一层依赖组件包描述为直接依赖组件包,将后续的第二层和第三层依赖组件包描述为间接依赖组件包。
59.在步骤s230,从预先加载的热度依赖组件包列表中确定是否存在上述目标依赖组件包。
60.热度依赖组件包列表是预先在服务端生成的,并且会随着依赖组件包的访问状态(包括访问和安装对应的状态)变化而动态更新。
61.根据本公开的实施例,上述热度依赖组件包列表里面的热度依赖组件包是热度排名超过设定名次的依赖组件包。上述依赖组件包的热度是根据依赖组件包的访问信息和对应的预设权重计算加权和而生成或更新得到的。
62.上述访问信息包括:访问累计次数、安装累计次数和时间顺序;上述时间顺序用于表示最新安装时间或最新访问时间在参考周期内的时间先后,上述时间顺序的取值越大,表示时间越新。
63.在一些实施例中,在参考周期内,时间顺序的取值为相对于参考周期的初始时间的差距,时间顺序的最大值等于参考周期的总长度。例如,参考周期为90天,该参考周期的初始时间为day1(越远离现在),该参考周期的末尾时间为day90(越靠近现在),那么某个依赖包x对应的最新访问时间或最新安装时间为day16,则该依赖包x的时间顺序的取值为:16;某个依赖包y对应的最新访问时间或最新安装时间为day80,则该依赖包y的时间顺序的取值为:80;某个依赖包z对应的最新访问时间或最新安装时间为day90,则该依赖包z的时间顺序的取值为:90。
64.在一些实施例中,上述访问累计次数、安装累计次数和时间顺序分配有各自的预设权重,例如访问累计次数对应的第一权重为30(或者为0.3),安装累计次数对应的第二权重为40(或者为0.4),时间顺序对应的第三权重为30(或者为0.3)。通过计算依赖组件包的访问累计次数、安装累计次数和时间顺序和对应的预设权重的加权和,能够生成或更新得到依赖组件包的热度,将热度排名超过设定名次(例如热度排名在100名以内,具体名次仅作为示例,根据实际需要可以进行变化)的依赖组件包作为热度依赖组件包列表里面的热度依赖组件包。
65.在一些实施例中,上述热度依赖组件包列表中的部分或全部热度依赖组件包预先下载于终端设备的本地。例如在一实施例中,可以将热度排名前60(具体名次仅作为示例,根据实际需要可以进行变化)名的热度依赖组件包下载于终端设备的本地,并根据依赖组件包列表的更新而更新下载其他热度依赖组件包至本地。或者,在另一实施例中,基于应用开发信息,对热度依赖组件包列表进行细化分类,将针对当前开发的软件的热度处于前60名的热度依赖组件包下载至本地。
66.在步骤s240,在上述热度依赖组件包列表中存在上述目标依赖组件包的情况下,从预先下载至本地的热度依赖组件包中安装上述目标依赖组件包至全局文件夹。
67.例如,热度依赖组件包列表中存在上述目标依赖组件包:组件包b~组件包h,且由于组件包b~组件包h已经预先下载至本地,则只需要将组件包b~组件包h从本地安装至node安装目录下的node_modules文件夹(全局文件夹的一种示例)中即可。
68.在包含步骤s210~s240的实施例中,通过预先在服务端构建要复用的组件的依赖图,终端设备在软件开发过程中接收到目标组件包的安装请求的情况下,无需进行对目标组件包的依赖关系进行解析的耗时过程,通过在服务端查询便能够快速查到目标组件包的安装所依赖的全部目标依赖组件包;通过预先在服务端生成各个依赖组件包的热度以及根据热度排序得到热度依赖组件包列表,其中热度依赖组件包列表中的热度依赖组件包预先已经下载至终端设备本地,那么终端设备只需要确定安装所依赖的全部目标依赖组件包是否在热度依赖组件包列表内即可,在目标依赖组件包都位于上述热度依赖组件包列表的情况下,无需下载目标依赖组件包,只需要从本地把预先下载的热度依赖组件包中的目标依赖组件包安装至全局文件夹即可,省去了在终端设备查到目标依赖组件包之后从组件库下载的过程,避免了由于网络原因导致的软件开发过程中下载缓慢或失败的问题,有助于加快软件开发的进度。
69.图3示意性地示出了根据本公开另一实施例的组件安装的方法的流程图。
70.根据本公开的实施例,参照图3和图8所示,本公开实施例提供的组件安装的方法,除了包括上述步骤s210~s240之外,还包括以下步骤:s310和s320。
71.在步骤s310,安装软件开发脚手架工具。
72.例如,脚手架是前端工程化的发起者,它可以自动创建项目基础架构,提供项目规范和约定,使用脚手架工具可以快速搭建一个特定的项目架构,把这些大量的重复的机械性的复杂的工作自动完成,后期基于这个架构进行开发。
73.上述软件开发脚手架工具包括但不限于是:vue(vue采用自底向上的增量开发的设计,vue的目标是通过尽可能简单的api实现响应的数据绑定和组合的视图组件,例如采用vue-cli来搭建项目架构)、maven(maven是一个跨平台的项目管理工具,是服务于java平台的项目构建、依赖管理、项目信息管理工具,同时使用maven可以规范项目骨架及包层次结构、命名配置文件、生成代码原型等)。此外还可以采用诸如npm(用于node.js中node插件管理,包括安装、卸载、管理依赖等)、yarn(是一款依赖包安装工具)、pnpm(pnpm是node.js的替代包管理器)、cnpm(是一种依赖包安装工具,为npm在国内的镜像)等包管理工具来进行包管理。
74.安装软件开发脚手架工具的过程相对于软件开发过程(例如包括创建软件开发项目、复用组件等过程)是前置过程。
75.在步骤s320,基于上述软件开发脚手架工具,从服务端加载热度依赖组件包列表。
76.服务端预先生成有热度依赖组件包列表,基于软件开发脚手架工具来预先加载上述热度依赖组件包列表。
77.在包含步骤s310~s320的实施例中,通过在服务端统计得到前端开发过程中近期使用频率较高的热度依赖组件包,基于软件开发脚手架工具加载热度依赖组件包列表,能够指导终端设备根据该热度依赖组件包列表来预先下载热度依赖组件包。
78.图4示意性地示出了根据本公开又一实施例的组件安装的方法的流程图。
79.参照图4和图8所示,本公开实施例提供的组件安装的方法,除了包括上述步骤s210~s240、s310和s320之外,还包括以下步骤:s410和s420。
80.在步骤s410,根据上述终端设备所处的网络状态,确定上述热度依赖组件包列表中热度依赖组件包的下载时机。
81.例如在一些实施例中,在终端设备处于无线网络(例如为wifi)且网速稳定的状态下,确定需要对上述热度依赖组件包列表中的全部或部分热度依赖组件包进行下载。在另一些实施例中,根据热度依赖组件包的大小级别,分别对应于不同的下载时机。例如,在热度依赖组件包大小为50m以内的情况下,对应的下载时机包括:终端设备启动联网后就下载;在热度依赖组件包大小大于50m且小于150m的情况下,对应的下载时机包括:终端设备在网络带宽状态和网络稳定性符合设定条件的情况下下载。
82.在步骤s420,根据上述下载时机,从组件库下载一个或多个热度依赖组件包至本地。
83.组件库是各种组件包所在的资源库,这些组件包包括被其他组件包所依赖的依赖组件包。组件库内的组件包资源可以由组件开发人员或软件开发人员上传得到,并根据上传者定义的权限供其他开发人员进行下载和复用。
84.在包含步骤s410~s420的实施例中,通过根据终端设备所处的网络状态来选择合适的时机进行热度依赖组件包的下载,有利于提升终端设备预先下载热度依赖组件包的成功率,同时由于是在软件开发之前预先下载至终端设备本地,省去了在终端设备查到目标依赖组件包之后从组件库下载的过程,节约了开发过程中的组件资源下载时间,同时有效避免由于网络原因导致的软件开发过程中下载缓慢或失败的问题,有助于加快软件开发的进度。
85.图5示意性地示出了根据本公开再一实施例的组件安装的方法的流程图。
86.在上述各个实施例的基础上,本公开实施例提供的组件安装的方法,除了包括上述步骤s210~s240之外,或者包括上述步骤s210~s240、s310和s320之外,或者包括上述步骤s210~s240、s310~s320和s410~s420之外,还包括以下步骤:s510,上述步骤s220具体包括步骤s220a,参照图5所示,为了简化示意,仅示意了步骤s210、s220a和s510。
87.在步骤s210,接收软件开发过程中针对目标组件包的安装请求,上述安装请求携带有上述目标组件包的包信息。
88.在一些实施例中,上述目标组件包的包信息包括:目标组件包的包标识;在另一些实施例中,上述目标组件包的包信息还可以进一步包括目标组件包的配置信息,上述配置信息中包含上述目标组件包的直接依赖关系的声明信息。
89.在步骤s510,根据上述包信息,生成查询键信息。
90.在一些实施例中,将上述目标组件包的包标识作为查询键信息。在另一些实施例中,根据上述目标组件包的配置信息中的声明信息,确定上述目标组件包的直接依赖组件包,将上述直接依赖组件包的包标识作为查询键信息。
91.上述步骤s220中,从服务端预先构建的依赖图中查询上述目标组件包对应的目标依赖组件包,包括以下步骤s220a:根据上述查询键信息,从服务端预先构建的依赖图中查询上述目标组件包对应的目标依赖组件包。
92.相应地,服务端预先构建的依赖图在存储时,可以基于目标组件包的包标识作为索引进行存储;也可以基于目标组件包的直接依赖组件包的包标识作为索引进行存储。
93.在包含步骤s510的实施例中,基于目标组件包的包信息来生成查询键信息,相应的在服务端基于上述包信息对应的查询键信息来存储目标组件包对应的目标依赖图,能够基于查询键信息来从多个依赖图中定位至目标组件包所对应的目标依赖图,从目标依赖图
中读取目标组件包对应的全部目标依赖组件包。
94.图6示意性地示出了根据本公开又另一实施例的组件安装的方法的流程图。
95.在上述各个实施例的基础上,参照图6和图8所示,上述组件安装的方法除了包括上述步骤s210~s240之外,还包括步骤s610。本实施例的步骤s610可以与上述步骤s310~s320、s410~s420、s510等对应的实施例进行组合。
96.在步骤s610,在上述热度依赖组件包列表中不存在上述目标依赖组件包中的一个或多个第一目标依赖组件包的情况下,从组件库下载上述第一目标依赖组件包至本地,并安装至全局文件夹。
97.在包含步骤s610的实施例中,在预先加载热度依赖组件包列表和预先下载列表中对应的热度依赖组件包能够实现免下载方案的同时,在热度依赖组件包列表覆盖不全软件开发过程中所要复用的目标依赖组件包的情况(少数情况)下,还给出了由于用户的特殊复用需求导致的热度依赖组件包列表覆盖不全场景下采用即时下载和安装的互补逻辑,拓宽了该方案的适用场景。
98.本公开的第二个示例性实施例提供了一种数据处理的方法。上述方法可应用于图1示例的系统架构100中的服务端105。可以结合第一个实施例来进行终端设备和服务端之间数据流交互的理解。
99.图7示意性地示出了根据本公开一实施例的数据处理的方法的流程图。
100.参照图7和图8所示,本公开实施例提供的数据处理的方法,包括以下步骤:s710、s720a、s720b、s730和s740。
101.在步骤s710,接收终端设备针对第一组件包的访问请求。
102.第一组件包是各个终端设备要复用的组件包。在一些实施例中,第一组件包可以包含第一个实施例中的目标组件包。
103.在步骤s720a,在上述访问请求为首次访问的情况下,根据上述第一组件包的配置文件,构建上述第一组件包对应的第一依赖图,上述第一依赖图为用于表示上述第一组件包的安装依赖关系的数据结构,包含上述第一组件包安装所依赖的第一依赖组件包。
104.根据本公开的实施例,上述步骤s720a中,根据上述第一组件包的配置文件,构建上述第一组件包对应的第一依赖图,包括:对上述第一组件包的配置文件进行解析,得到上述第一组件包的直接依赖组件包;对上述直接依赖组件包所依赖的对象进行递归分析,直至递归到依赖链路终止,得到上述第一组件包的间接依赖组件包;根据上述第一组件包、上述直接依赖组件包和上述间接依赖组件包,生成上述第一组件包对应的第一依赖图;上述直接依赖组件包和上述间接依赖组件包构成上述第一依赖组件包;根据上述第一组件包的包信息,生成上述第一依赖图的键信息;以上述键信息作为索引,存储上述第一依赖图。
105.例如,上述第一组件包为组件包a,对应的配置文件为package.json配置文件,通过对组件包a的package.json配置文件进行解析,得到组件包a依赖于组件包b和组件包c这一信息;进一步需要服务端获取组件包b和组件包c各自的配置文件,并对组件包b和组件包c各自的依赖关系进行分析,以此类推,实现依赖递归分析,能够得到第一组件包对应的第一依赖图。
106.例如,经过依赖递归分析之后,得到以下依赖关系:组件包a依赖于组件包b和组件包c;组件包b依赖于组件包d和e,组件包c依赖于组件包f;组件包d依赖于组件包g,组件包e
依赖于组件包h;组件包g、组件包h和组件包f无依赖,则组件包a的直接依赖组件包包括:组件包b和组件包c;组件包a的间接依赖组件包包括:组件包d、组件包e、组件包f、组件包g和组件包h。
107.在一些实施例中,上述第一组件包的包标识或上述第一组件包的直接依赖组件包对应的包标识作为上述第一依赖图的键信息。
108.在步骤s720b,在上述访问请求为非首次访问的情况下,根据预先构建的上述第一依赖图,查询上述第一组件包安装所依赖的第一依赖组件包。
109.在一些实施例中,第一组件包可以包含第一个实施例中的目标组件包。在非首次访问的情况下,步骤s720b和前述第一个实施例中的步骤s220为同一个步骤。
110.由于在首次访问过程中预先构建了针对第一组件包的第一依赖图,则在后续接收到针对第一组件包的访问请求时,无需再构建一次依赖图,只需要根据预先构建的第一依赖图确定该第一组件包所对应的安装依赖关系,即,能够查询得到第一组件包安装所依赖的全部第一依赖组件包。
111.在步骤s730,根据上述第一依赖组件包的访问信息,生成或更新上述第一依赖组件包的热度。
112.组件库里面的组件包资源在被访问之后,会随着访问信息的更新而动态更新对应的热度。
113.根据本公开的实施例,上述访问信息包括:访问累计次数、安装累计次数和时间顺序;上述时间顺序用于表示最新安装时间或最新访问时间在参考周期内的时间先后,上述时间顺序的取值越大,表示时间越新。
114.其中,根据上述第一依赖组件包的访问信息,生成或更新上述第一依赖组件包的热度,包括:获取上述第一依赖组件包的访问累计次数、安装累计次数和时间顺序;计算上述访问累计次数、上述安装累计次数、上述时间顺序与对应的预设权重的加权和,上述加权和作为上述第一依赖组件包的上述热度。
115.在一些实施例中,在参考周期内,时间顺序的取值为相对于参考周期的初始时间的差距,时间顺序的最大值等于参考周期的总长度。例如,参考周期为90天,该参考周期的初始时间为day1(越远离现在),该参考周期的末尾时间为day90(越靠近现在),那么某个依赖包x对应的最新访问时间或最新安装时间为day16,则该依赖包x的时间顺序的取值为:16;某个依赖包y对应的最新访问时间或最新安装时间为day80,则该依赖包y的时间顺序的取值为:80;某个依赖包z对应的最新访问时间或最新安装时间为day90,则该依赖包z的时间顺序的取值为:90。
116.在一些实施例中,上述访问累计次数、安装累计次数和时间顺序分配有各自的预设权重,例如访问累计次数对应的第一权重为30(或者为0.3),安装累计次数对应的第二权重为40(或者为0.4),时间顺序对应的第三权重为30(或者为0.3)。通过计算依赖组件包的访问累计次数、安装累计次数和时间顺序和对应的预设权重的加权和,能够生成或更新得到依赖组件包的热度。
117.在步骤s740,根据依赖组件包的热度排名,生成或更新热度依赖组件包列表。上述依赖组件包包括上述第一依赖组件包。
118.将热度排名超过设定名次(例如热度排名在100名以内,具体名次仅作为示例,根
据实际需要可以进行变化)的依赖组件包作为热度依赖组件包列表里面的热度依赖组件包。
119.在包含上述步骤s710~s740的实施例中,通过预先在服务端构建要复用的组件对应的依赖图,终端设备在软件开发过程中接收到目标组件包的安装请求的情况下,无需进行对目标组件包的依赖关系进行解析的耗时过程,通过在服务端查询便能够快速查到目标组件包的安装所依赖的全部目标依赖组件包;通过预先在服务端生成各个依赖组件包的热度以及根据热度排序得到热度依赖组件包列表,其中热度依赖组件包列表中的热度依赖组件包预先已经下载至终端设备本地,那么终端设备只需要确定安装所依赖的全部目标依赖组件包是否在热度依赖组件包列表内即可,在目标依赖组件包都位于上述热度依赖组件包列表的情况下,无需下载目标依赖组件包,只需要从本地把预先下载的热度依赖组件包中的目标依赖组件包安装至全局文件夹即可,省去了在终端设备查到目标依赖组件包之后从组件库下载的过程,避免了由于网络原因导致的软件开发过程中下载缓慢或失败的问题,有助于加快软件开发的进度。
120.在一些实施例中,上述数据处理的方法还包括:接收对上述热度依赖组件包列表的获取请求,上述获取请求由上述终端设备基于软件开发脚手架工具发起;响应于上述获取请求,将上述热度依赖组件包列表发送给上述终端设备。该过程为服务端与第一个实施例中终端设备执行步骤s320的交互过程。
121.本公开的第三个示例性实施例提供了一种组件安装的装置。
122.图9示意性地示出了根据本公开一实施例的组件安装的装置的结构框图。
123.参照图9所示,本公开实施例提供的组件安装的装置900包括:安装请求接收模块901、依赖关系查询模块902、确定模块903和安装模块904。
124.上述安装请求接收模块901用于接收软件开发过程中针对目标组件包的安装请求。
125.上述依赖关系查询模块902用于从服务端预先构建的依赖图中查询上述目标组件包对应的目标依赖组件包。上述依赖图为用于表示组件包的安装依赖关系的数据结构。
126.上述确定模块903用于从预先加载的热度依赖组件包列表中确定是否存在上述目标依赖组件包。
127.上述安装模块904用于在上述热度依赖组件包列表中存在上述目标依赖组件包的情况下,从预先下载至本地的热度依赖组件包中安装上述目标依赖组件包至全局文件夹。
128.在一些实施例中,上述装置900还包括:软件安装模块和列表加载模块。
129.上述软件安装模块用于安装软件开发脚手架工具。
130.上述列表加载模块位于上述软件开发脚手架工具中,用于从服务端加载热度依赖组件包列表。
131.在一些实施例中,上述装置900还包括:下载时机确定模块和组件包下载模块。
132.上述下载时机确定模块用于根据上述终端设备所处的网络状态,确定上述热度依赖组件包列表中热度依赖组件包的下载时机。
133.上述组件包下载模块用于根据上述下载时机,从组件库下载一个或多个热度依赖组件包至本地。
134.在一些实施例中,上述装置900还包括:键信息生成模块。
135.在一些实施例中,上述安装请求携带有上述目标组件包的包信息。上述键信息生成模块用于根据上述包信息,生成查询键信息。
136.从服务端预先构建的依赖图中查询上述目标组件包对应的目标依赖组件包,包括:根据上述查询键信息,从服务端预先构建的依赖图中查询上述目标组件包对应的目标依赖组件包。
137.上述组件包下载模块用于在上述热度依赖组件包列表中不存在上述目标依赖组件包中的一个或多个第一目标依赖组件包的情况下,从组件库下载上述第一目标依赖组件包至本地,并安装至全局文件夹。
138.本实施例的装置900的各个功能模块对应的实施细节和有益效果可以参照第一个实施例的描述,这里不再赘述。
139.本公开的第四个示例性实施例提供了一种数据处理的装置。
140.图10示意性地示出了根据本公开一实施例的数据处理的装置的结构框图。
141.参照图10所示,本公开实施例提供的数据处理的装置1000包括:访问请求接收模块1001、依赖图构建模块1002、依赖图查询模块1003、热度生成和更新模块1004以及列表生成和更新模块1005。
142.上述访问请求接收模块1001用于接收终端设备针对第一组件包的访问请求。
143.上述依赖图构建模块1002用于在上述访问请求为首次访问的情况下,根据上述第一组件包的配置文件,构建上述第一组件包对应的第一依赖图,上述第一依赖图为用于表示上述第一组件包的安装依赖关系的数据结构,包含上述第一组件包安装所依赖的第一依赖组件包。
144.上述依赖图查询模块1003用于在上述访问请求为非首次访问的情况下,根据预先构建的上述第一依赖图,查询上述第一组件包安装所依赖的第一依赖组件包。
145.上述热度生成和更新模块1004用于根据上述第一依赖组件包的访问信息,生成或更新上述第一依赖组件包的热度。
146.上述列表生成和更新模块1005用于根据依赖组件包的热度排名,生成或更新热度依赖组件包列表,上述依赖组件包包括上述第一依赖组件包。
147.在一些实施例中,上述装置1000还包括:获取请求接收模块和列表发送模块。
148.上述获取请求接收模块用于接收对上述热度依赖组件包列表的获取请求,上述获取请求由上述终端设备基于软件开发脚手架工具发起。
149.上述列表发送模块用于响应于上述获取请求,将上述热度依赖组件包列表发送给上述终端设备。
150.本实施例提供的装置1000的各个功能模块的实施细节和有益效果可以参照第二个实施例的详细描述,这里不再赘述。
151.上述装置900或装置1000所包含的功能模块中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。上述装置900或装置1000所包含的功能模块中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬
件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,上述装置900或装置1000所包含的功能模块中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
152.本公开的第五个示例性实施例提供了一种电子设备。
153.图11示意性地示出了本公开实施例提供的电子设备的结构框图。
154.参照图11所示,本公开实施例提供的电子设备1100包括处理器1101、通信接口1102、存储器1103和通信总线1104,其中,处理器1101、通信接口1102和存储器1103通过通信总线1104完成相互间的通信;存储器1103,用于存放计算机程序;处理器1101,用于执行存储器上所存放的程序时,实现如上所述的组件安装的方法或数据处理的方法。
155.本公开的第六个示例性实施例还提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的组件安装的方法或数据处理的方法。
156.该计算机可读存储介质可以是上述实施例中描述的设备/装置中所包含的;也可以是单独存在,而未装配入该设备/装置中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
157.根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
158.需要说明的是,本公开实施例提供的技术方案中,所涉及的用户个人信息的采集、收集、更新、分析、处理、使用、传输、存储等方面,均符合相关法律法规的规定,被用于合法的用途,且不违背公序良俗。对用户个人信息采取必要措施,防止对用户个人信息数据的非法访问,维护用户个人信息安全、网络安全和国家安全。
159.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
160.以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

技术特征:
1.一种组件安装的方法,其特征在于,应用于终端设备,所述方法包括:接收软件开发过程中针对目标组件包的安装请求;从服务端预先构建的依赖图中查询所述目标组件包对应的目标依赖组件包;所述依赖图为用于表示组件包的安装依赖关系的数据结构;从预先加载的热度依赖组件包列表中确定是否存在所述目标依赖组件包;在所述热度依赖组件包列表中存在所述目标依赖组件包的情况下,从预先下载至本地的热度依赖组件包中安装所述目标依赖组件包至全局文件夹。2.根据权利要求1所述的方法,其特征在于,所述热度依赖组件包列表里面的热度依赖组件包是热度排名超过设定名次的依赖组件包,所述依赖组件包的热度是根据依赖组件包的访问信息和对应的预设权重计算加权和而生成或更新得到的;所述访问信息包括:访问累计次数、安装累计次数和时间顺序;所述时间顺序用于表示最新安装时间或最新访问时间在参考周期内的时间先后,所述时间顺序的取值越大,表示时间越新。3.根据权利要求1所述的方法,其特征在于,还包括:安装软件开发脚手架工具;基于所述软件开发脚手架工具,从所述服务端加载所述热度依赖组件包列表。4.根据权利要求3所述的方法,其特征在于,还包括:根据所述终端设备所处的网络状态,确定所述热度依赖组件包列表中热度依赖组件包的下载时机;根据所述下载时机,从组件库下载一个或多个热度依赖组件包至本地。5.根据权利要求1所述的方法,其特征在于,所述安装请求携带有所述目标组件包的包信息;所述方法还包括:根据所述包信息,生成查询键信息;其中,所述从服务端预先构建的依赖图中查询所述目标组件包对应的目标依赖组件包,包括:根据所述查询键信息,从服务端预先构建的依赖图中查询所述目标组件包对应的目标依赖组件包。6.根据权利要求1-5中任一项所述的方法,其特征在于,还包括:在所述热度依赖组件包列表中不存在所述目标依赖组件包中的一个或多个第一目标依赖组件包的情况下,从组件库下载所述第一目标依赖组件包至本地,并安装至全局文件夹。7.一种数据处理的方法,其特征在于,应用于服务端,所述方法包括:接收终端设备针对第一组件包的访问请求;在所述访问请求为首次访问的情况下,根据所述第一组件包的配置文件,构建所述第一组件包对应的第一依赖图,所述第一依赖图为用于表示所述第一组件包的安装依赖关系的数据结构,包含所述第一组件包安装所依赖的第一依赖组件包;在所述访问请求为非首次访问的情况下,根据预先构建的所述第一依赖图,查询所述第一组件包安装所依赖的第一依赖组件包;
根据所述第一依赖组件包的访问信息,生成或更新所述第一依赖组件包的热度;根据依赖组件包的热度排名,生成或更新热度依赖组件包列表,所述依赖组件包包括所述第一依赖组件包。8.根据权利要求7所述的方法,其特征在于,所述访问信息包括:访问累计次数、安装累计次数和时间顺序;所述时间顺序用于表示最新安装时间或最新访问时间在参考周期内的时间先后,所述时间顺序的取值越大,表示时间越新;其中,根据所述第一依赖组件包的访问信息,生成或更新所述第一依赖组件包的热度,包括:获取所述第一依赖组件包的访问累计次数、安装累计次数和时间顺序;计算所述访问累计次数、所述安装累计次数、所述时间顺序与对应的预设权重的加权和,所述加权和作为所述第一依赖组件包的所述热度。9.根据权利要求7所述的方法,其特征在于,根据所述第一组件包的配置文件,构建所述第一组件包对应的第一依赖图,包括:对所述第一组件包的配置文件进行解析,得到所述第一组件包的直接依赖组件包;对所述直接依赖组件包所依赖的对象进行递归分析,直至递归到依赖链路终止,得到所述第一组件包的间接依赖组件包;根据所述第一组件包、所述直接依赖组件包和所述间接依赖组件包,生成所述第一组件包对应的第一依赖图;所述直接依赖组件包和所述间接依赖组件包构成所述第一依赖组件包;根据所述第一组件包的包信息,生成所述第一依赖图的键信息;以所述键信息作为索引,存储所述第一依赖图。10.一种组件安装的装置,其特征在于,所述装置包括:安装请求接收模块,用于接收软件开发过程中针对目标组件包的安装请求;依赖关系查询模块,用于从服务端预先构建的依赖图中查询所述目标组件包对应的目标依赖组件包;所述依赖图为用于表示组件包的安装依赖关系的数据结构;确定模块,用于从预先加载的热度依赖组件包列表中确定是否存在所述目标依赖组件包;安装模块,用于在所述热度依赖组件包列表中存在所述目标依赖组件包的情况下,从预先下载至本地的热度依赖组件包中安装所述目标依赖组件包至全局文件夹。11.一种数据处理的装置,其特征在于,所述装置包括:访问请求接收模块,用于接收终端设备针对第一组件包的访问请求;依赖图构建模块,用于在所述访问请求为首次访问的情况下,根据所述第一组件包的配置文件,构建所述第一组件包对应的第一依赖图,所述第一依赖图为用于表示所述第一组件包的安装依赖关系的数据结构,包含所述第一组件包安装所依赖的第一依赖组件包;依赖图查询模块,用于在所述访问请求为非首次访问的情况下,根据预先构建的所述第一依赖图,查询所述第一组件包安装所依赖的第一依赖组件包;热度生成和更新模块,用于根据所述第一依赖组件包的访问信息,生成或更新所述第一依赖组件包的热度;列表生成和更新模块,用于根据依赖组件包的热度排名,生成或更新热度依赖组件包
列表,所述依赖组件包包括所述第一依赖组件包。12.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现权利要求1-9中任一项所述的方法。13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-9中任一项所述的方法。

技术总结
本公开涉及一种组件安装和数据处理的方法、装置、设备及介质,上述组件安装的方法可应用于终端设备,包括:接收软件开发过程中针对目标组件包的安装请求;从服务端预先构建的依赖图中查询上述目标组件包对应的目标依赖组件包;上述依赖图为用于表示组件包的安装依赖关系的数据结构;从预先加载的热度依赖组件包列表中确定是否存在上述目标依赖组件包;在上述热度依赖组件包列表中存在上述目标依赖组件包的情况下,从预先下载至本地的热度依赖组件包中安装上述目标依赖组件包至全局文件夹。上述方法有助于减少在开发过程中安装依赖组件包资源的耗时,避免由于网络原因导致的依赖组件包资源下载缓慢或失败的问题,有助于加快软件开发的进度。软件开发的进度。软件开发的进度。


技术研发人员:李雪川
受保护的技术使用者:京东科技信息技术有限公司
技术研发日:2023.02.27
技术公布日:2023/7/13
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐