CN115129333B - 适用于微前端框架的npm资源包管理方法、装置及系统 - Google Patents

适用于微前端框架的npm资源包管理方法、装置及系统 Download PDF

Info

Publication number
CN115129333B
CN115129333B CN202211068210.5A CN202211068210A CN115129333B CN 115129333 B CN115129333 B CN 115129333B CN 202211068210 A CN202211068210 A CN 202211068210A CN 115129333 B CN115129333 B CN 115129333B
Authority
CN
China
Prior art keywords
application
npm
sub
resource package
installation directory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211068210.5A
Other languages
English (en)
Other versions
CN115129333A (zh
Inventor
刘仿
牛宇鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CCI China Co Ltd
Original Assignee
CCI China Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CCI China Co Ltd filed Critical CCI China Co Ltd
Priority to CN202211068210.5A priority Critical patent/CN115129333B/zh
Publication of CN115129333A publication Critical patent/CN115129333A/zh
Application granted granted Critical
Publication of CN115129333B publication Critical patent/CN115129333B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提出了一种适用于微前端框架的npm资源包管理方法、装置及系统,包括至少一基座应用和全局安装目录,其中全局安装目录中安装至少一子应用npm资源包,每一基座应用中的基座安装目录和全局安装目录之间建立软链接文件,子应用npm资源包统一安装在全局安装目录中,基座应用通过软链接文件和全局安装目录建立链接方式调用子应用,可以实现同一应用的多版本的快速切换,以及节约网络资源的效果。

Description

适用于微前端框架的npm资源包管理方法、装置及系统
技术领域
本申请涉及资源包管理领域,特别是涉及一种适用于微前端框架的npm资源包管理方法、装置及系统。
背景技术
随着互联网技术的不断发展,互联网应用功能愈来愈丰富、规模也逐渐大型化,在一个大型应用中往往存在业务交集不大、互相独立的子功能模块,这些子功能模块如果不加区分的存在于大型应用中,会对大型应用项目整体构建速度、加载速度、运行速度等性能产生较大影响。
为了提升大型应用的各项性能,出现了拆分大型应用的微前端框架,微前端框架可将大型应用拆分为基座应用和子应用,对基座应用和子应用独立进行开发、测试、部署。
但是目前的微前端框架拆分出来的子应用作为前端包时缺少良好的资源包管理方法,具体体现在:一方面资源包的版本管理不清晰,自身难以追溯某一特定版本,基座应用也无法直接调用子应用的某一特定版本;另一方面,若同一子应用被不同基座应用,子功能模块npm资源包需安装多次,导致安装时间延长以及存储空间和网络资源的浪费。
发明内容
本申请实施例提供了一种适用于微前端框架的npm资源包管理方法及装置,可以实现子应用版本的灵活切换以及节约存储资源和网络资源的效果,实现微前端应用子功能模块灵活的版本切换和高效率管理。
第一方面,本申请实施例提供了一种适用于微前端框架的npm资源包管理方法,包括以下步骤:
将每一单体应用拆分为基座应用和至少一子应用,并改造每一所述子应用得到子应用npm资源包,将所有所述子应用npm资源包托管在私有仓库中;
创建用于安装子应用npm资源包的全局安装目录;
所述基座应用的基座安装目录中注册第一子应用npm资源包,若所述全局安装目录中已安装所述第一子应用npm资源包,在所述全局安装目录和所述基座应用之间创建软链接文件,其中所述软链接文件的地址指向所述第一子应用npm资源包在所述全局安装目录中的存储路径。
第二方面,本申请实施例提供了一种适用于微前端框架的npm资源包管理装置,包括:
微前端构建装置,用于将每一单体应用拆分为基座应用和至少一子应用,并改造每一所述子应用得到子应用npm资源包,将所有所述子应用npm资源包托管在私有仓库中;
全局安装目录创建单元,用于创建用于安装子应用npm资源包的全局安装目录;
注册单元,用于在所述基座应用的基座安装目录中注册所需的第一子应用npm资源包;
子应用npm查重器,用于判断所述全局安装目录中是否已安装所述第一子应用npm资源包;
软链接文件创建单元,用于在所述全局安装目录中安装所述第一子应用npm资源包时,在所述全局安装目录和所述基座应用之间创建软链接文件,其中所述软链接文件的地址指向所述第一子应用npm资源包在所述全局安装目录中的存储路径。
第三方面, 本申请实施例提供了一种适用于微前端框架的npm资源包管理系统,包括:至少一基座应用和全局安装目录,其中所述全局安装目录中安装至少一子应用npm资源包,每一所述基座应用中的基座安装目录和所述全局安装目录之间建立软链接文件,执行所述的适用于微前端框架的npm资源包管理方法。
第四方面,本申请实施例提供了一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述的适用于微前端框架的npm资源包管理方法。
第五方面,本申请实施例提供了一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述的适用于微前端框架的npm资源包管理方法。
本发明的主要贡献和创新点如下:
本申请实施例创建全局安装目录,将基座应用依赖的子应用的子应用npm资源包安装在npm全局安装目录中,在基座应用的基座安装目录中创建软链接,链接至全局安装目录中存储的子应用npm资源包,可以使得基座应用可通过修改软链接的方式快速切换子应用的版本,实现子应用版本的灵活切换。
且当基座应用需要切换某一子应用版本时,先判断需要切换的第二版本是否已经安装在全局安装目录中,若全局安装目录中存在第二版本的子应用的子应用npm资源包,可将基座安装目录中的软链接指向地址从第一版本更改为第二版本所在文件的地址,若全局安装目录中尚不存在第二版本的子应用的子应用npm资源包,则先在所述全局安装目录中进行第二版本的子应用的子应用npm资源包的安装,再将基座安装目录中的软链接指向地址从第一版本更改为第二版本所在文件的地址,使得同一子应用被不同基座应用依赖和引用时,可以使用同一子应用的子应用npm资源包,无需进行重复的安装,从而获得节省存储空间、节约网络资源、减少npm资源包安装时间的有益效果。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的适用于微前端框架的npm资源包管理方法的流程图;
图2是将npm仓库中的子应用npm资源包下载至全局安装目录中的示意图;
图3是不同基座应用的基座安装目录和全局安装目录建立软链接的示意图;
图4是根据本申请实施例的适用于微前端框架的npm资源包管理装置的示意图;
图5是根据本申请实施例的电子装置的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
实施例一
在介绍本方案的方案内容之前,先对本方案可能涉及到的专业名词和基础知识进行说明:
npm:Node.js 标准的软件包管理器。npm 仓库中就已有超过 350000 个软件包,这使其成为世界上最大的单一语言代码仓库,并且可以确定几乎有可用于一切的软件包,它起初是作为下载和管理 Node.js 包依赖的方式,但其现在也已成为前端 JavaScript中使用的工具。
npm资源包:利用npm管理的可被注册和下载的资源包。
SemVer是语义化版本(Semantic Versioning)规范的一个实现,目前是由npm 的团队维护,实现了版本和版本范围的解析、计算、比较。格式为:主版本号[MAJOR].次版本号[MINOR].修订号[PATCH]。
版本号递增规则为:
主版本号:当做了不兼容的 API 修改,
次版本号:当做了向下兼容的功能性新增,
修订号:当做了向下兼容的问题修正。
先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。
Node.js:是运行在服务端的JavaScript,基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
CommonJS 模块:为 Node.js 打包 JavaScript 代码的原始方式。根据CommonJS的规则,通过所述入口文件的module.exports字段将此npm资源包向外提供的内容暴露出来,最后引用此npm资源包的文件通过require方法获取所述npm资源包通过module.exports字段向外暴露的内容。
软链接:又叫符号链接,这个文件包含了另一个文件的路径名,可以是任意文件或目录,也可以链接不同文件系统的文件。链接文件甚至可以链接不存在的文件,这就产生一般称之为”断链”的现象。链接文件甚至可以循环链接自己,类似于编程语言中的递归。软链接文件只是其源文件的一个标记,当删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但却不能查看软链接文件的内容。
微前端:将微服务的理念应用于浏览器端,即将前端应用由单体应用转变成多个小型前端应用聚合的应用,微前端通常会借助一个基座应用,作为单一入口接收所有页面URL 的访问,根据页面 URL 与微前端的匹配关系,通过一系列的规则,进行路由找到相应的组件,选择加载对应的微前端,由该微前端进行渲染页面内容,各个小型前端应用可以独立运行、独立开发、独立部署。
基座应用:以容器应用作为整个项目的主应用,负责子应用的注册,聚合,提供子运行环境、管理生命周期等。
子应用:各个独立部署、独立开发的单元。
如图1所示,本方案提供了一种适用于微前端框架的npm资源包管理方法,包括以下步骤:
将每一单体应用拆分为基座应用和至少一子应用,并改造每一所述子应用得到子应用npm资源包,将所有所述子应用npm资源包托管在私有仓库中;
创建用于安装子应用npm资源包的全局安装目录;
所述基座应用的基座安装目录中注册第一子应用npm资源包,若所述全局安装目录中已安装所述第一子应用npm资源包,在所述全局安装目录和所述基座应用之间创建软链接文件,其中所述软链接文件的地址指向所述第一子应用npm资源包在所述全局安装目录中的存储路径。
本方案适用于微前端框架的npm资源包管理,为了提升大型应用的性能,本方案使用为微前端技术将每一单体应用被拆分为基座应用和至少一子应用,其中每一基座应用对应至少一子应用,基座应用作为单体应用的入口,可调用每个子应用进行独立的开发、测试和部署。
为了方便下文中对于多个单体应用的介绍,本方案以第一单体应用和第二单体应用命名来区分不同的单体应用,第一单体应用被拆分为第一基座应用和至少一第一子应用,第二单体应用被拆分为第二基座应用和至少一第二子应用。
在“将每一单体应用拆分为基座应用和至少一子应用”步骤中,拆分得到的基座应用包含子应用调用器和子应用执行器,所述子应用调用器可调用子应用npm资源包,所述子应用执行器可执行子应用npm资源包。
在本方案的一实施例中,所述子应用调用器为具备调用npm包的功能,以nodejs的commonjs规范为例基座应用可通过require方法调用子npm资源包通过module.exports向外暴露的资源,所述子应用执行器为具备执行npm包的功能,可以为nodejs等javascript脚本的执行容器。
本方案将子应用改造为子应用npm资源包,所述子应用npm资源包为符合npm规范的包格式,这样的好处在于便于基座应用以npm依赖的形式安装和调用所需的子应用,同时子应用获得基于npm的版本管理能力。
在“改造每一所述子应用得到子应用npm资源包”中,所述子应用npm资源包内包括子应用的包名以及包版本,且所述包版本符合semver规范。在一些实施例中,所述子应用npm资源包为通过npminit命令生成的且包含package.json配置文件,且在所package.json配置文件中包含name用于声明包名、包含version字段用于声明包版本,且包版本符合SemVer规范。
在“将所有所述子应用npm资源包托管在私有仓库中”中,私有仓库为对所述子应用npm资源包进行托管和资源服务的私有服务器,通过所述子应用npm资源包的包名和包版本唯一确定所述子应用npm资源包。且所述私有仓库和通过协议实现子应用npm资源包的上传和下载。
具体的,在一些实施例中,所述私有npm仓库是可以根据npm包管理规范,对npm包进行托管和资源服务的私有服务器。在一些实施例中,可通过verdaccio等开源框架搭建,通过http协议进行子应用npm资源包的上传和下载。托管在所述私有npm仓库中的子应用npm资源包可基于SemVer规范进行版本管理,可根据唯一包名以及唯一包版本来确定唯一的子应用npm资源包。
在“创建用于安装子应用npm资源包的全局安装目录”步骤中,判读当前计算机用户的根目录下是否存在全局安装目录,若不存在则在根目录下创建全局安装目录。
全局安装目录中安装至少一子应用npm资源包,所述基座应用的基座安装目录中创建软链接文件,并将软链接文件指向的地址设定为对应所需子应用npm资源包在全局安装目录中的存储位置,基座应用可通过更改软链接文件的指向地址快速切换子应用的版本;且由于子应用npm资源包只需要安装在全局安装目录中一次,无需在每个基座应用的基座安装目录中均安装,这样也可以达到节约计算机存储空间,减少npm资源包安装时间,节约网络下载资源的效果。在“所述基座应用的基座安装目录中注册所需的第一子应用npm资源包”步骤中,基座应用以npm资源包依赖的方式注册第一子应用npm资源包。具体的,所述基座应用的基座安装目录的依赖资源注册所述第一子应用npm资源包的包名以及包版本,其中包版本符合SemVer规范。
在一具体实施例中,所述基座应用的基座安装目录下package.json文件的dependencies字段中注册子npm包名并以SemVer规范注册包的版本,示例如下:
"dependencies": {
"@cct/c-mindmap": "^1.0.11",
"@cct/cp-bread-crumb": "^2.0.1",
}。
本方案创建子应用npm安装器和子应用npm查重器,其中所述子应用npm查重器用于判断第一子应用npm资源包是否已经在全局安装目录中安装,所述子应用npm安装器用于将基座应用注册的第一子应用npm资源包安装在全局安装目录中。以Linux操作系统为例,子应用npm安装包和子应用npm查重器为包查重器可以为一个可执行的Bash脚本文件。
在“若所述全局安装目录中已安装所述第一子应用npm资源包”前包括步骤:判断所述全局安装目录中是否安装所述第一子应用npm资源包。具体的,根据所述第一子应用npm资源包的包名和包版本遍历所述全局安装目录中的子应用npm资源包,若子应用npm资源包中的包名值和包版本值与所述第一子应用npm资源包的包名值和包版本值完全相同,则所述全局安装目录中已安装所述第一子应用npm资源包。
进一步的,若均不相同或有一项不同,判断所述全局安装目录中未安装所述第一子应用npm资源包,此时包括步骤:根据所述第一子应用npm资源包的包名和包版本,调用所述私有仓库中所述第一子应用npm资源包的下载地址,将下载所述第一子应用npm资源包至所述全局安装目录中。
如图2所示,私有npm仓库中托管多个子应用npm资源包的多个版本,全局安装目录自私有npm仓库内下载所需的子应用npm资源包。
在“在所述全局安装目录和所述基座应用之间创建软链接文件”步骤中,在所述基座应用的基座安装目录下创建以第一子应用npm子应用命名的软链接文件,并将所述软链接文件的地址设定为所述第一子应用npm资源包在全局安装目录中的存储位置。
进一步的,判断基座应用的根目录中node_modules文件夹是否存在,若不存在则创建该文件夹并继续下一步,若存在则在node_modules文件夹中创建以第一子应用nmp资源包命名的软链接文件,将软链接文件的指向地址设定为第一子应用nmp资源包在全局安装目录中的存储路径。
在一些实施例中,软链接文件可为一个可执行的Bash脚本文本的软链接创建器创建。
当基座应用和所述全局安装目录成功建立软链接文件后,基座应用可通过调用子应用npm资源包的形式调用子应用。具体的,可基于commonjs模块化规范应用require方法调用子应用npm资源包通过module.exports向外暴露的资源。
在一些实施例中,若基座应用需要切换同一子应用的不同版本时,则可通过修改软链接文件的指向地址的方式快速切换子应用,本方案在上述方案内容的基础上进一步包括以下步骤:
查找所述全局安装目录中是否存在第一子应用npm资源包的第二版本,其中第二版本不同于所述第一子应用npm资源包的第一版本,若存在,则修改所述软链接文件的地址指向为所述第一子应用npm资源包的第二版本在所述全局安装目录中的存储位置;若不存在,则自所述私有仓库中下载所述第一子应用npm资源包的第二版本至所述全局安装目录中。
通过以上方式可通过软链接文件的地址指向快速切换同一子应用的不同版本。
另外,在本方案中若多个基座应用同时调用同一子应用时,也不需要重复安装子应用npm资源包。此时包括步骤:在所述全局安装目录和所述第二基座应用之间创建软链接文件,其中所述软链接文件的地址指向所述第一子应用npm资源包在所述全局安装目录中的存储位置。
因此,在同一台计算机中,同一子应用同一版本被不同基座应用依赖和引用,仅需安装一次,不同基座应用共用一份npm资源包,无需为每个基座应用均安装一次。从而获得节省存储空间、节约网络资源、减少npm资源包安装时间的有益效果。
实施例二
基于相同的构思,参考图4,本申请还提出了一种适用于微前端框架的npm资源包管理装置,包括:
微前端构建装置,用于将每一单体应用拆分为基座应用和至少一子应用,并改造每一所述子应用得到子应用npm资源包,将所有所述子应用npm资源包托管在私有仓库中;
全局安装目录创建单元,用于创建用于安装子应用npm资源包的全局安装目录;
注册单元,用于在所述基座应用的基座安装目录中注册所需的第一子应用npm资源包;
子应用npm查重器,用于判断所述全局安装目录中是否已安装所述第一子应用npm资源包;
软链接文件创建单元,用于在所述全局安装目录中安装所述第一子应用npm资源包时,在所述全局安装目录和所述基座应用之间创建软链接文件,其中所述软链接文件的地址指向所述第一子应用npm资源包在所述全局安装目录中的存储路径。
关于该实施例二中同于实施例一相同的技术内容不再重复累赘介绍。
实施例三
基于相同的构思,参考图3,本申请提供了一种依据实施例一所述的适用于微前端框架的npm资源包管理方法执行的适用于微前端框架的npm资源包管理系统,包括:
至少一基座应用和全局安装目录,其中所述全局安装目录中安装至少一子应用npm资源包,每一所述基座应用中的基座安装目录和所述全局安装目录之间建立软链接文件。
关于该实施例三中同于实施例一相同的技术特征不再重复累赘介绍。
实施例四
本实施例还提供了一种电子装置,参考图5,包括存储器404和处理器402,该存储器404中存储有计算机程序,该处理器402被设置为运行计算机程序以执行上述任一项适用于微前端框架的npm资源包管理方法实施例中的步骤。
具体地,上述处理器402可以包括中央处理器(CPU),或者特定集成电路(ApplicationSpecificIntegratedCircuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器404可以包括用于数据或指令的大容量存储器404。举例来说而非限制,存储器404可包括硬盘驱动器(HardDiskDrive,简称为HDD)、软盘驱动器、固态驱动器(SolidStateDrive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(UniversalSerialBus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器404可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器404可在数据处理装置的内部或外部。在特定实施例中,存储器404是非易失性(Non-Volatile)存储器。在特定实施例中,存储器404包括只读存储器(Read-OnlyMemory,简称为ROM)和随机存取存储器(RandomAccessMemory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(ProgrammableRead-OnlyMemory,简称为PROM)、可擦除PROM(ErasableProgrammableRead-OnlyMemory,简称为EPROM)、电可擦除PROM(ElectricallyErasableProgrammableRead-OnlyMemory,简称为EEPROM)、电可改写ROM(ElectricallyAlterableRead-OnlyMemory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(StaticRandom-AccessMemory,简称为SRAM)或动态随机存取存储器(DynamicRandomAccessMemory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器404(FastPageModeDynamicRandomAccessMemory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(ExtendedDateOutDynamicRandomAccessMemory,简称为EDODRAM)、同步动态随机存取内存(SynchronousDynamicRandom-AccessMemory,简称SDRAM)等。
存储器404可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的计算机程序指令。
处理器402通过读取并执行存储器404中存储的计算机程序指令,以实现上述实施例中的任意一种适用于微前端框架的npm资源包管理方法。
可选地,上述电子装置还可以包括传输设备406以及输入输出设备408,其中,该传输设备406和上述处理器402连接,该输入输出设备408和上述处理器402连接。
传输设备406可以用来经由一个网络接收或者发送数据。上述的网络具体实例可包括电子装置的通信供应商提供的有线或无线网络。在一个实例中,传输设备包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备406可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
输入输出设备408用于输入或输出信息。在本实施例中,输入的信息可以是单体应用,基座应用,子应用npm资源包等,输出的信息可以是执行子应用的基座应用等。
可选地,在本实施例中,上述处理器402可以被设置为通过计算机程序执行以下步骤:
将每一单体应用拆分为基座应用和至少一子应用,并改造每一所述子应用得到子应用npm资源包,将所有所述子应用npm资源包托管在私有仓库中;
创建用于安装子应用npm资源包的全局安装目录;
所述基座应用的基座安装目录中注册所需的第一子应用npm资源包,若所述全局安装目录中已安装所述第一子应用npm资源包,在所述全局安装目录和所述基座应用之间创建软链接文件,其中所述软链接文件的地址指向所述第一子应用npm资源包在所述全局安装目录中的存储路径。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
通常,各种实施例可以以硬件或专用电路、软件、逻辑或其任何组合来实现。本发明的一些方面可以以硬件来实现,而其他方面可以以可以由控制器、微处理器或其他计算设备执行的固件或软件来实现,但是本发明不限于此。尽管本发明的各个方面可以被示出和描述为框图、流程图或使用一些其他图形表示,但是应当理解,作为非限制性示例,本文中描述的这些框、装置、系统、技术或方法可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备或其某种组合来实现。
本发明的实施例可以由计算机软件来实现,该计算机软件由移动设备的数据处理器诸如在处理器实体中可执行,或者由硬件来实现,或者由软件和硬件的组合来实现。包括软件例程、小程序和/或宏的计算机软件或程序(也称为程序产品)可以存储在任何装置可读数据存储介质中,并且它们包括用于执行特定任务的程序指令。计算机程序产品可以包括当程序运行时被配置为执行实施例的一个或多个计算机可执行组件。一个或多个计算机可执行组件可以是至少一个软件代码或其一部分。另外,在这一点上,应当注意,如图中的逻辑流程的任何框可以表示程序步骤、或者互连的逻辑电路、框和功能、或者程序步骤和逻辑电路、框和功能的组合。软件可以存储在诸如存储器芯片或在处理器内实现的存储块等物理介质、诸如硬盘或软盘等磁性介质、以及诸如例如DVD及其数据变体、CD等光学介质上。物理介质是非瞬态介质。
本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (9)

1.一种适用于微前端框架的npm资源包管理方法,其特征在于,包括以下步骤:
将每一单体应用拆分为基座应用和至少一子应用,并改造每一所述子应用得到子应用npm资源包,将所有所述子应用npm资源包托管在私有仓库中;
创建用于安装子应用npm资源包的全局安装目录;
所述基座应用的基座安装目录中注册第一子应用npm资源包,若所述全局安装目录中已安装所述第一子应用npm资源包,在所述全局安装目录和所述基座应用之间创建软链接文件,其中所述软链接文件的地址指向所述第一子应用npm资源包在所述全局安装目录中的存储路径;
若基座应用需要切换第一子应用的第二版本时,查找所述全局安装目录中是否存在第一子应用npm资源包的第二版本,其中第二版本不同于所述第一子应用npm资源包的第一版本,若存在,则修改所述软链接文件的地址指向为所述第一子应用npm资源包的第二版本在所述全局安装目录中的存储位置;若不存在,则自所述私有仓库中下载所述第一子应用npm资源包的第二版本至所述全局安装目录中;若多个基座应用同时调用同一第一子应用时,在所述全局安装目录和第二基座应用之间创建软链接文件,其中所述软链接文件的地址指向所述第一子应用npm资源包在所述全局安装目录中的存储位置。
2.根据权利要求1所述的适用于微前端框架的npm资源包管理方法,其特征在于,所述子应用npm资源包内包括子应用的包名以及包版本,且所述包版本符合semver规范。
3.根据权利要求1所述的适用于微前端框架的npm资源包管理方法,其特征在于,根据所述第一子应用npm资源包的包名和包版本遍历所述全局安装目录中的子应用npm资源包,若子应用npm资源包中的包名值和包版本值与所述第一子应用npm资源包的包名值和包版本值完全相同,则所述全局安装目录中已安装所述第一子应用npm资源包,否之则反。
4.根据权利要求1所述的适用于微前端框架的npm资源包管理方法,其特征在于,若所述全局安装目录中未安装所述第一子应用npm资源包,调用所述私有仓库中所述第一子应用npm资源包的下载地址,将下载所述第一子应用npm资源包至所述全局安装目录中。
5.根据权利要求1所述适用于微前端框架的npm资源包管理方法,其特征在于,当基座应用和所述全局安装目录成功建立软链接文件,基座应用通过调用子应用npm资源包的形式调用子应用。
6.一种适用于微前端框架的npm资源包管理装置,其特征在于,包括:
微前端构建装置,用于将每一单体应用拆分为基座应用和至少一子应用,并改造每一所述子应用得到子应用npm资源包,将所有所述子应用npm资源包托管在私有仓库中;
全局安装目录创建单元,用于创建用于安装子应用npm资源包的全局安装目录;
注册单元,用于在所述基座应用的基座安装目录中注册所需的第一子应用npm资源包;
子应用npm查重器,用于判断所述全局安装目录中是否已安装所述第一子应用npm资源包;
软链接文件创建单元,用于在所述全局安装目录中安装所述第一子应用npm资源包时,在所述全局安装目录和所述基座应用之间创建软链接文件,其中所述软链接文件的地址指向所述第一子应用npm资源包在所述全局安装目录中的存储路径,若基座应用需要切换第一子应用的第二版本时,查找所述全局安装目录中是否存在第一子应用npm资源包的第二版本,其中第二版本不同于所述第一子应用npm资源包的第一版本,若存在,则修改所述软链接文件的地址指向为所述第一子应用npm资源包的第二版本在所述全局安装目录中的存储位置;若不存在,则自所述私有仓库中下载所述第一子应用npm资源包的第二版本至所述全局安装目录中;若多个基座应用同时调用同一第一子应用时,在所述全局安装目录和第二基座应用之间创建软链接文件,其中所述软链接文件的地址指向所述第一子应用npm资源包在所述全局安装目录中的存储位置。
7.一种适用于微前端框架的npm资源包管理系统,其特征在于,包括:至少一基座应用和全局安装目录,其中所述全局安装目录中安装至少一子应用npm资源包,每一所述基座应用中的基座安装目录和所述全局安装目录之间建立软链接文件,执行权利要求1到5任一所述的适用于微前端框架的npm资源包管理方法。
8.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1到5任一所述的适用于微前端框架的npm资源包管理方法。
9.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括根据权利要求1到5任一项所述的适用于微前端框架的npm资源包管理方法。
CN202211068210.5A 2022-09-02 2022-09-02 适用于微前端框架的npm资源包管理方法、装置及系统 Active CN115129333B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211068210.5A CN115129333B (zh) 2022-09-02 2022-09-02 适用于微前端框架的npm资源包管理方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211068210.5A CN115129333B (zh) 2022-09-02 2022-09-02 适用于微前端框架的npm资源包管理方法、装置及系统

Publications (2)

Publication Number Publication Date
CN115129333A CN115129333A (zh) 2022-09-30
CN115129333B true CN115129333B (zh) 2022-11-25

Family

ID=83387809

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211068210.5A Active CN115129333B (zh) 2022-09-02 2022-09-02 适用于微前端框架的npm资源包管理方法、装置及系统

Country Status (1)

Country Link
CN (1) CN115129333B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110096306A (zh) * 2019-05-09 2019-08-06 京东方科技集团股份有限公司 应用版本切换方法及装置、电子设备、存储介质
CN111026439A (zh) * 2019-11-22 2020-04-17 广州华多网络科技有限公司 应用程序的兼容方法、装置、设备及计算机存储介质
CN111897520A (zh) * 2020-07-31 2020-11-06 平安科技(深圳)有限公司 前端项目框架的构建方法、装置、计算机设备及存储介质
CN112558980A (zh) * 2020-12-15 2021-03-26 建信金融科技有限责任公司 多软件包管理方法及装置
CN113392351A (zh) * 2021-06-17 2021-09-14 北京沃东天骏信息技术有限公司 一种信息处理方法及装置、存储介质
CN113448650A (zh) * 2021-07-07 2021-09-28 广州方硅信息技术有限公司 直播功能插件加载方法、装置、设备及存储介质
CN113448572A (zh) * 2021-02-26 2021-09-28 北京新氧科技有限公司 软件项目开发方法及装置、计算机存储介质、计算机设备
WO2021248337A1 (zh) * 2020-06-09 2021-12-16 深圳市欢太科技有限公司 一种应用安装方法、装置、设备及计算机可读存储介质
CN114090003A (zh) * 2021-11-09 2022-02-25 浪潮云信息技术股份公司 一种基于微前端架构的资源共享实现方法及系统
CN114356447A (zh) * 2021-12-28 2022-04-15 广东三维家信息科技有限公司 一种插件管理方法、装置、电子设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102955702B (zh) * 2011-08-23 2016-08-10 腾讯科技(深圳)有限公司 一种软件安装及升级方法和装置
CN110347385A (zh) * 2019-07-19 2019-10-18 浪潮云信息技术有限公司 一种分布式web静态资源共享的方法及系统
CN112463127A (zh) * 2020-12-08 2021-03-09 微医云(杭州)控股有限公司 一种文件处理方法、装置、设备及存储介质
CN112711561A (zh) * 2020-12-31 2021-04-27 珠海豹趣科技有限公司 软件移动的处理方法、装置以及存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110096306A (zh) * 2019-05-09 2019-08-06 京东方科技集团股份有限公司 应用版本切换方法及装置、电子设备、存储介质
WO2020224410A1 (zh) * 2019-05-09 2020-11-12 京东方科技集团股份有限公司 应用版本切换方法及装置、电子设备、存储介质
CN111026439A (zh) * 2019-11-22 2020-04-17 广州华多网络科技有限公司 应用程序的兼容方法、装置、设备及计算机存储介质
WO2021248337A1 (zh) * 2020-06-09 2021-12-16 深圳市欢太科技有限公司 一种应用安装方法、装置、设备及计算机可读存储介质
CN111897520A (zh) * 2020-07-31 2020-11-06 平安科技(深圳)有限公司 前端项目框架的构建方法、装置、计算机设备及存储介质
CN112558980A (zh) * 2020-12-15 2021-03-26 建信金融科技有限责任公司 多软件包管理方法及装置
CN113448572A (zh) * 2021-02-26 2021-09-28 北京新氧科技有限公司 软件项目开发方法及装置、计算机存储介质、计算机设备
CN113392351A (zh) * 2021-06-17 2021-09-14 北京沃东天骏信息技术有限公司 一种信息处理方法及装置、存储介质
CN113448650A (zh) * 2021-07-07 2021-09-28 广州方硅信息技术有限公司 直播功能插件加载方法、装置、设备及存储介质
CN114090003A (zh) * 2021-11-09 2022-02-25 浪潮云信息技术股份公司 一种基于微前端架构的资源共享实现方法及系统
CN114356447A (zh) * 2021-12-28 2022-04-15 广东三维家信息科技有限公司 一种插件管理方法、装置、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Docker的HTTP服务器在实验室的应用;李慧春;《实验室研究与探索》;20190515(第05期);全文 *

Also Published As

Publication number Publication date
CN115129333A (zh) 2022-09-30

Similar Documents

Publication Publication Date Title
CN105657191B (zh) 一种基于Android系统的应用增量升级方法及系统
WO2021135584A1 (zh) 前端项目框架的构建方法、装置、计算机设备及存储介质
CN110187912B (zh) 一种节点选择方法和装置
CN106325847B (zh) 基于iOS平台获取应用程序功能的方法和装置
WO2022016848A1 (zh) 一种根据服务角色的进行应用部署的方法及装置
CN106569880B (zh) 一种Android应用间动态共享资源的方法及系统
CN111399840B (zh) 一种模块开发方法及装置
CN108563440B (zh) 列表控制器代码自动添加方法、装置及可读存储介质
CN110727440A (zh) 一种软件封装方法
CN106775781B (zh) 减小应用安装包的方法、装置及电子设备
CN105740033A (zh) 一种终端设备、插件加载运行装置及插件加载运行方法
CN112631622A (zh) 应用安装方法、装置、服务器及计算机可读介质
CN112083968A (zh) 一种宿主中插件加载方法及装置
CN110716786B (zh) 一种页面展示方法、系统及存储介质
CN114489833B (zh) 一种在应用程序中提交flink作业到yarn集群的实现方法与装置
CN111367685A (zh) 接口调用的方法及装置、计算机设备、存储介质
CN115129333B (zh) 适用于微前端框架的npm资源包管理方法、装置及系统
KR100803290B1 (ko) 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법
CN116755788A (zh) 一种线上规则修改方法、装置、设备及存储介质
CN113535138B (zh) 软件项目打包方法及相关设备
US20220261238A1 (en) Method and system for deploying third-party application to microcontroller by means of edge assistance
CN114816475A (zh) 一种嵌入式操作系统的更新方法、装置、设备和介质
CN110502251B (zh) 应用安装方法及装置
CN114201174A (zh) 混合移动应用的构建方法、装置、电子设备及存储介质
CN112463289A (zh) 一种基于虚拟机实现应用服务的方法、系统、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant