CN110413306B - Node项目发布方法、装置、电子设备及可读存储介质 - Google Patents
Node项目发布方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN110413306B CN110413306B CN201910556376.3A CN201910556376A CN110413306B CN 110413306 B CN110413306 B CN 110413306B CN 201910556376 A CN201910556376 A CN 201910556376A CN 110413306 B CN110413306 B CN 110413306B
- Authority
- CN
- China
- Prior art keywords
- page
- file
- message
- page file
- target
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or 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)
- Information Transfer Between Computers (AREA)
Abstract
本公开的实施例提供了一种Node项目发布方法、装置、电子设备及可读存储介质,所述方法包括:实时监听页面发布消息,在监听到所述页面发布消息的情况下,下载所述页面发布消息对应的目标页面文件;其中,所述目标页面文件用于替换当前页面文件,所述页面发布消息与所述目标页面文件之间具有一一对应的关系;在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用。本公开的实施例可以实现无需重启Node服务的情况下,在Node服务器发布Node项目,以及提高Node项目的发布效率。
Description
技术领域
本公开的实施例涉及网络技术领域,尤其涉及一种Node项目发布方法、装置、电子设备及可读存储介质。
背景技术
Node(运行于服务端的JavaScript解释器)是一个让JavaScript可以运行在服务端的开发平台,在使用Node发布项目的时候,需要重启Node服务。具体地,首先对项目进行打包、编译,再将打包编译完成后的项目代码下载到对应的服务器,最后通过重启该服务器中的Node服务完成整个项目的发布过程。
然而,如果要更新项目中的某些页面,需要对整个项目重新进行打包和编译,并且重启Node服务,不仅需要耗费大量的时间,而且在重启Node服务的过程中,有可能出现重启失败的情况,极大地影响项目发布的效率。
发明内容
本公开的实施例提供一种Node项目发布方法、装置、电子设备及可读存储介质,用以提高项目发布的效率。
根据本公开的实施例的第一方面,提供了一种Node项目发布方法,所述方法包括:
实时监听页面发布消息,在监听到所述页面发布消息的情况下,下载所述页面发布消息对应的目标页面文件;其中,所述目标页面文件用于替换当前页面文件,所述页面发布消息与所述目标页面文件之间具有一一对应的关系;
在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用。
根据本公开的实施例的第二方面,提供了一种Node项目发布装置,所述装置包括:
监听下载模块,用于实时监听页面发布消息,在监听到所述页面发布消息的情况下,下载所述页面发布消息对应的目标页面文件;其中,所述目标页面文件用于替换当前页面文件,所述页面发布消息与所述目标页面文件之间具有一一对应的关系;
删除更新模块,用于在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用。
根据本公开的实施例的第三方面,提供了一种电子设备,包括:
处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现前述Node项目发布方法。
根据本公开的实施例的第四方面,提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述Node项目发布方法。
本公开的实施例提供了一种Node项目发布方法、装置、电子设备及可读存储介质,所述方法包括:
实时监听页面发布消息,在监听到所述页面发布消息的情况下,下载所述页面发布消息对应的目标页面文件;其中,所述目标页面文件用于替换当前页面文件,所述页面发布消息与所述目标页面文件之间具有一一对应的关系;在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用。
本公开的实施例通过删除引入模块require.cache对当前文件的引用,以及调用对目标页面文件的引用,可以克服Node的缓存机制,实现无需重启Node服务的情况下,在Node服务器发布Node项目。此外,本公开的实施例将原有的对整个Node项目进行打包并发布的方式改为对Node项目的页面进行单独打包单独发布的方式,在Node项目中仅有部分页面需要更新的情况下,可以对需要更新的页面文件单独发布,无需重新发布整个Node项目,不仅可以降低项目打包的成本,而且可以提高Node项目的发布效率。
附图说明
为了更清楚地说明本公开的实施例的技术方案,下面将对本公开的实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了本公开的一个实施例中的Node项目发布方法的步骤流程图;
图2示出了在本公开的一个实施例中的Node项目发布装置的结构图;
图3示出了本公开的一个实施例提供的电子设备的结构图。
具体实施方式
下面将结合本公开的实施例中的附图,对本公开的实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开的实施例一部分实施例,而不是全部的实施例。基于本公开的实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开的实施例保护的范围。
实施例一
参照图1,其示出了本公开的一个实施例中的Node项目发布方法的步骤流程图,包括:
步骤101、实时监听页面发布消息,在监听到所述页面发布消息的情况下,下载所述页面发布消息对应的目标页面文件;其中,所述目标页面文件用于替换当前页面文件,所述页面发布消息与所述目标页面文件之间具有一一对应的关系;
步骤102、在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用。
本公开的Node项目发布方法可应用于部署Node项目的服务器,实现了在无需重启Node服务的情况下,可以在Node服务器发布Node项目。
本公开的实施例改进了Node项目的打包以及发布的方式,将原有的对整个Node项目进行打包并发布的方式改为对Node项目中的页面进行单独打包单独发布的方式。
在本公开的实施例中,Node项目的发布系统可以包括如下三个服务器:打包服务器、文件服务器,以及项目服务器。其中,打包服务器用于对Node项目的页面文件进行打包,生成页面文件。文件服务器用于保存打包服务器上传的页面文件。项目服务器用于发布Node项目,项目服务器在监听到打包服务器发布的页面发布消息的情况下,从文件服务器下载所述页面发布消息对应的目标页面文件。
具体地,打包服务器可以对Node项目中的每个页面单独打包,生成唯一的页面文件,对页面打包是指将页面的Node端逻辑、以及页面组件等打包为一个pageBundle文件,如pageBundle.js文件,并固化静态资源依赖,静态资源可以包括页面的CSS(CascadingStyle Sheets,层叠样式表)和JS(JavaScript,脚本语言)文件,还可以包括页面所需的图片资源,在pageBundle.js文件内标识了该次打包对应的静态资源的完整请求路径。在页面打包完成后,可以将生成的页面文件上传至文件服务器,以及将静态资源上传至CDN(Content Delivery Network,内容分发网络)。
通过本公开的实施例,在Node项目中仅有部分页面需要更新的情况下,可以对需要更新的页面文件单独打包并发布,无需重新打包并发布整个Node项目,不仅可以降低打包的成本,而且可以提高Node项目的发布效率。
在页面打包完成之后,打包服务器可以通过发布/订阅的模式发布页面发布消息,项目服务器可以实时监听页面发布消息,在监听到所述页面发布消息的情况下,下载并发布所述页面发布消息对应的目标页面文件。
在项目服务器下载页面发布消息对应的目标页面文件之后,在引入模块的缓存(require.cache)中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用,即可实现对目标页面的发布。
在具体应用中,由于Node的缓存机制,require操作会把旧页面文件(当前页面文件)读取到内存中缓存下来,require.cache保留着对该文件的引用,因此,需要在require.cache中删除该引用(对当前文件的引用),然后重新执行require操作即可在require.cache中增加对新页面文件(目标页面文件)的引用。
在本公开的一种可选实施例中,所述在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用,具体可以包括:
步骤S11、生成缓存清除指令,所述缓存清除指令中包括所述当前页面文件对应的文件路径;
步骤S12、执行所述缓存清除指令,以根据所述当前页面文件对应的文件路径,在引入模块的缓存中,删除所述当前页面文件的引用;
步骤S13、在路由器中注册所述目标页面文件对应的统一资源定位符URL地址,以使所述引入模块根据所述URL地址引入所述目标页面文件,以及在所述缓存中增加所述目标页面文件的引用。
具体地,可以生成缓存清除指令,如delete require.cache[filepath],其中,filepath为当前页面文件对应的文件路径,该缓存清除指令用于删除require.cache对当前页面文件的引用。
在执行该缓存清除指令之后,即可根据所述当前页面文件对应的文件路径,在引入模块的缓存中,删除所述当前页面文件的引用。再在路由器koa-router中重新注册所述目标页面文件对应的URL(Uniform Resource Locator,统一资源定位符)地址,以使所述引入模块根据所述URL地址引入所述目标页面文件,在所述缓存中增加所述目标页面文件的引用。
其中,目标页面文件里面标识了目标页面的URL,重新注册是指重新绑定该URL对应的页面文件。重新注册后,require操作会自动重新加载该URL对应的页面文件(也即目标页面文件)的引用。
在本公开的一种可选实施例中,所述页面发布消息中包括:所述目标页面的页面标识,且所述目标页面的页面标识与所述当前页面的页面标识相同;
所述下载所述页面发布消息对应的目标页面文件,具体可以包括:
将所述目标页面文件下载至所述页面标识对应的文件路径所指的位置,以覆盖所述当前页面文件。
在本公开的实施例中,发布的目标页面文件与需要被替换的当前页面可以具有相同的页面标识,在从文件服务器下载目标页面文件时,可以将目标页面文件下载至该页面标识对应的文件路径所指的位置(也即当前页面所在位置),这样,目标页面文件和当前页面文件具有相同的文件路径和文件标识,可以直接覆盖掉当前页面文件。在重新注册koa-router的时候,require操作根据文件路径就会自动加载目标页面文件的引用。可以简化发布操作的过程,提高发布的效率。
在本公开的一种可选实施例中,所述页面发布消息中还包括:所述目标页面文件的发布时间;
所述下载所述页面发布消息对应的目标页面文件,包括:
根据所述页面标识和发布时间,从文件服务器下载与所述页面标识和发布时间一致的目标页面文件。
具体地,本公开的实施例可以通过页面标识和发布时间作为目标页面文件的唯一标识信息,例如,当前页面文件为pageId_time4.js,目标页面文件为pageId_time5.js,其中,pageId为页面标识,当前页面和目标页面可以采用相同的页面标识,time4和time5为发布时间。本公开的实施例中,每个页面单独发布,每次监听到的页面发布消息中携带有页面标识和发布时间,通过这两个参数可以确定页面文件的引用路径。
打包服务器在生成目标页面文件pageId_time5.js之后,将目标页面文件pageId_time5.js上传至文件服务器,并且发布携带有页面标识pageId和发布时间time5的页面发布消息,项目服务器监听到该页面发布消息后,从文件服务器下载目标页面文件pageId_time5.js。具体地,将目标页面文件pageId_time5.js下载至所述页面标识对应的文件路径所指的位置,如“./pageId.js”,以覆盖当前页面文件。通过缓存清除指令deleterequire.cache['./pageId.js'],删除require.cache对当前页面文件的引用,也即删除require.cache指向内存中的旧的文件资源(当前页面文件),删除后,在注册路由的时候,重新执行require('./pageId.js')操作,由于文件路径“./pageId.js”已经替换为目标页面文件,因此,require.cache可以指向内存中新的文件资源(目标页面文件)。
在本公开的实施例中,通过页面标识和发布时间不仅可以唯一标识某个页面文件,还可以用于确定需要进行回滚的页面版本。本公开的实施例对单个页面进行单独打包并发布,并且通过页面标识和发布时间唯一标识页面文件,在版本回滚的时候,可以根据页面标识和发布时间确定所要回滚的页面版本,进而可以仅对某一个或者某几个页面进行回滚,而不用对整个Node项目进行回滚,回滚的过程和页面发布的过程相同,只需将待回滚的页面重新发布一遍即可,极大地降低了开发人员对页面进行回归的成本。
在本公开的一种可选实施例中,所述实时监听页面发布消息,具体可以包括:通过第一进程实时监听页面发布消息;
所述在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用,具体可以包括:
在所述第一进程监听到所述页面发布消息的情况下,向至少一个第二进程发送进程消息,以通过所述至少一个第二进程执行所述在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用的操作;其中,所述进程消息中包括:所述目标页面文件的页面标识。
在具体应用中,一个Node项目中需要发布的目标页面可能有多个,为了提高页面发布的效率,本公开的实施例采用多个进程并行处理的方式进行页面发布。具体地,可以通过第一进程实时监听页面发布消息,在监听到有多个页面发布消息的情况下,从文件服务器下载页面发布消息对应的目标页面文件,第一进程依次通知每一个第二进程,通过多个第二进程可以同时对多个目标页面同时进行发布,其中,第二进程可用于清除require.cache对旧的文件资源的引用,以及重新注册koa-router以调用对新的文件资源的引用。
在本公开的一种应用示例中,项目服务器可以启动一个第一进程和四个第二进程,第一进程与第二进程之间通过Node的进程通信机制进行交互,例如,第一进程可以向第二进程发送携带目标页面文件的页面标识的进程消息,以通知第二进程发布该目标页面,第二进程接收到携带页面标识的进程消息之后,开始执行清除require.cache缓存、以及重新注册koa-router的操作,以完成目标页面的发布。第二进程在目标页面发布完成之后,可以向第一进程返回页面发布结果,若发布成功,则第一进行继续通知第二进程继续发布下一个页面发布消息对应的目标页面,在四个第二进程的页面发布操作全部执行完成后,则当前的Node项目发布完成。
可以理解,上述在项目服务器中设置一个第一进程和四个第二进程,仅作为本公开的一种应用示例,本公开实施例对第一进程和第二进程的具体数目不加以限制。
在本公开的一种可选实施例中,在监听到所述页面发布消息之后,以及在下载所述页面发布消息对应的目标页面文件之前,所述方法还可以包括:
步骤S21、将所述页面发布消息加入消息队列;
步骤S22、在预设时间周期到达的情况下,取出所述消息队列中的页面发布消息,并清空所述消息队列;
所述下载所述页面发布消息对应的目标页面文件,具体可以包括:依次下载取出的所述页面发布消息对应的目标页面文件。
本公开的实施例可以采用发布/订阅模式获取页面发布消息,发布/订阅模式是指监听进程在监听到页面发布消息时立即通知项目机器,如果同时接收到数目较多的页面发布消息,可能造成进程阻塞,项目机器无法及时处理页面发布消息的情况。
为解决上述问题,本公开的实施例还可以通过定时轮询的方式替代发布/订阅模式来获取页面发布消息。具体地,可以设置预设时间周期,比如20秒,并且建立一个消息队列,监听进程(第一进程)将监听到的页面发布消息依次存入该消息队列,在预设时间周期到达的情况下,项目服务器主动查询消息队列中是否有页面发布消息,如果有,则取出所述消息队列中的所有页面发布消息,并清空所述消息队列,对取出的页面发布消息对应的目标页面文件依次进行下载并发布。例如,项目服务器可以建立多个第二进程,通过多个第二进程并行执行取出的页面发布消息对应目标页面文件的发布操作。
由此,项目服务器可以周期性地主动获取页面发布消息,并且对消息队列中的页面发布消息并行执行发布操作,可以提高发布的及时性和发布的效率。
在本公开的一种可选实施例中,所述删除当前页面文件的引用之后,所述方法还可以包括:删除所述当前页面文件的父模块对所述当前页面文件的引用。
在具体应用中,对于Node项目,每次执行require操作,除了会缓存自身实例的引用到require.cache中以外,还会将自身实例的引用放入parent.children这个数组中。而delete require.cache[filepath]指令仅仅可以清除require.cache对文件第一次require的实例的引用,此时父文件require实例的children数组中的缓存的引用依旧存在,下一次再require此文件时,由于require.cache中不存在,会再生成一次该文件对应的引入模块实例,同时给其父文件实例的children数组再增加一个引用,这样就造成了内存泄漏。随着发布的页面数量越来越多,旧文件堆积也越来越多,最终将会导致内存爆炸。
为了解决上述问题,本公开的实施例在清除require.cache对当前页面文件的引用之后,还删除所述当前页面文件的父模块对所述当前页面文件的引用,以避免内存泄露的问题发生。
综上,本公开的实施例通过实时监听页面发布消息,在监听到所述页面发布消息的情况下,下载所述页面发布消息对应的目标页面文件,在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用,以实现对目标页面文件的发布。其中,所述目标页面文件用于替换当前页面文件,所述页面发布消息与所述目标页面文件之间具有一一对应的关系,本公开的实施例通过删除require.cache对当前文件的引用,以及调用对目标页面文件的引用,可以克服Node的缓存机制,实现无需重启Node服务的情况下,在Node服务器发布Node项目。此外,本公开的实施例将原有的对整个Node项目进行打包并发布的方式改为对Node项目的页面进行单独打包单独发布的方式,在Node项目中仅有部分页面需要更新的情况下,可以对需要更新的页面文件单独打包并发布,无需重新打包并发布整个Node项目,不仅可以降低打包的成本,而且可以提高Node项目的发布效率。
实施例二
参照图2,其示出了在本公开的一个实施例中的Node项目发布装置的结构图,具体如下。
监听下载模块201,用于实时监听页面发布消息,在监听到所述页面发布消息的情况下,下载所述页面发布消息对应的目标页面文件;其中,所述目标页面文件用于替换当前页面文件,所述页面发布消息与所述目标页面文件之间具有一一对应的关系;
删除更新模块202,用于在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用。
可选地,所述装置还包括:
父引用删除模块,用于删除所述当前页面文件的父模块对所述当前页面文件的引用。
可选地,所述页面发布消息中包括:所述目标页面的页面标识,且所述目标页面的页面标识与所述当前页面的页面标识相同;
所述监听下载模块,包括:
覆盖子模块,用于将所述目标页面文件下载至所述页面标识对应的文件路径所指的位置,以覆盖所述当前页面文件。
可选地,所述页面发布消息中还包括:所述目标页面文件的发布时间;
所述监听下载模块,包括:
第一下载子模块,用于根据所述页面标识和发布时间,从文件服务器下载与所述页面标识和发布时间一致的目标页面文件。
可选地,所述装置还包括:
入队模块,用于将所述页面发布消息加入消息队列;
出队模块,用于在预设时间周期到达的情况下,取出所述消息队列中的页面发布消息,并清空所述消息队列;
所述监听下载模块,包括:
第二下载子模块,用于依次下载取出的所述页面发布消息对应的目标页面文件。
可选地,所述监听下载模块,包括:
监听子模块,用于通过第一进程实时监听页面发布消息;
所述删除更新模块,具体用于在所述第一进程监听到所述页面发布消息的情况下,向至少一个第二进程发送进程消息,以通过所述至少一个第二进程执行所述在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用的操作;其中,所述进程消息中包括:所述目标页面文件的页面标识。
可选地,所述删除更新模块,包括:
生成子模块,用于生成缓存清除指令,所述缓存清除指令中包括所述当前页面文件对应的文件路径;
执行子模块,用于执行所述缓存清除指令,以根据所述当前页面文件对应的文件路径,在引入模块的缓存中,删除所述当前页面文件的引用;
注册子模块,用于在路由器中注册所述目标页面文件对应的统一资源定位符URL地址,以使所述引入模块根据所述URL地址引入所述目标页面文件,以及在所述缓存中增加所述目标页面文件的引用。
综上所述,本公开的实施例提供了一种Node项目发布装置,所述装置包括:监听下载模块201,用于实时监听页面发布消息,在监听到所述页面发布消息的情况下,下载所述页面发布消息对应的目标页面文件;其中,所述目标页面文件用于替换当前页面文件,所述页面发布消息与所述目标页面文件之间具有一一对应的关系;删除更新模块202,用于在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用。所述装置能够实现无需重启Node服务的情况下,在Node服务器发布Node项目。此外,本公开的实施例将原有的对整个Node项目进行打包并发布的方式改为对Node项目的页面进行单独打包单独发布的方式,在Node项目中仅有部分页面需要更新的情况下,可以对需要更新的页面文件单独打包并发布,无需重新打包并发布整个Node项目,不仅可以降低打包的成本,而且可以提高Node项目的发布效率。
本公开的实施例还提供了一种电子设备,参见图3,包括:处理器301、存储器302以及存储在所述存储器上并可在所述处理器上运行的计算机程序3021,所述处理器执行所述程序时实现前述实施例的Node项目发布方法。
本公开的实施例还提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述实施例的Node项目发布方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本公开的实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本公开的实施例的内容,并且上面对特定语言所做的描述是为了披露本公开的实施例的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本公开的实施例的示例性实施例的描述中,本公开的实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本公开的实施例要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本公开的实施例的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
本公开的实施例的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本公开的实施例的排序设备中的一些或者全部部件的一些或者全部功能。本公开的实施例还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序。这样的实现本公开的实施例的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本公开的实施例进行说明而不是对本公开的实施例进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本公开的实施例可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述仅为本公开的实施例的较佳实施例而已,并不用以限制本公开的实施例,凡在本公开的实施例的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本公开的实施例的保护范围之内。
以上所述,仅为本公开的实施例的具体实施方式,但本公开的实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开的实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的实施例的保护范围之内。因此,本公开的实施例的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种Node项目发布方法,其特征在于,所述方法包括:
实时监听页面发布消息,在监听到所述页面发布消息的情况下,下载所述页面发布消息对应的目标页面文件;其中,所述目标页面文件用于替换当前页面文件,所述页面发布消息与所述目标页面文件之间具有一一对应的关系;
在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用;
其中,所述页面发布消息中包括:所述目标页面的页面标识,且所述目标页面的页面标识与所述当前页面的页面标识相同;
所述下载所述页面发布消息对应的目标页面文件,包括:
将所述目标页面文件下载至所述页面标识对应的文件路径所指的位置,以覆盖所述当前页面文件。
2.根据权利要求1所述的方法,其特征在于,所述删除当前页面文件的引用之后,所述方法还包括:
删除所述当前页面文件的父模块对所述当前页面文件的引用。
3.根据权利要求2所述的方法,其特征在于,所述页面发布消息中还包括:所述目标页面文件的发布时间;
所述下载所述页面发布消息对应的目标页面文件,包括:
根据所述页面标识和发布时间,从文件服务器下载与所述页面标识和发布时间一致的目标页面文件。
4.根据权利要求1所述的方法,其特征在于,在监听到所述页面发布消息之后,以及在下载所述页面发布消息对应的目标页面文件之前,所述方法还包括:
将所述页面发布消息加入消息队列;
在预设时间周期到达的情况下,取出所述消息队列中的页面发布消息,并清空所述消息队列;
所述下载所述页面发布消息对应的目标页面文件,包括:
依次下载取出的所述页面发布消息对应的目标页面文件。
5.根据权利要求1所述的方法,其特征在于,所述实时监听页面发布消息,包括:
通过第一进程实时监听页面发布消息;
所述在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用,包括:
在所述第一进程监听到所述页面发布消息的情况下,向至少一个第二进程发送进程消息,以通过所述至少一个第二进程执行所述在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用的操作;其中,所述进程消息中包括:所述目标页面文件的页面标识。
6.根据权利要求1所述的方法,其特征在于,所述在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用,包括:
生成缓存清除指令,所述缓存清除指令中包括所述当前页面文件对应的文件路径;
执行所述缓存清除指令,以根据所述当前页面文件对应的文件路径,在引入模块的缓存中,删除所述当前页面文件的引用;
在路由器中注册所述目标页面文件对应的统一资源定位符URL地址,以使所述引入模块根据所述URL地址引入所述目标页面文件,以及在所述缓存中增加所述目标页面文件的引用。
7.一种Node项目发布装置,其特征在于,所述装置包括:
监听下载模块,用于实时监听页面发布消息,在监听到所述页面发布消息的情况下,下载所述页面发布消息对应的目标页面文件;其中,所述目标页面文件用于替换当前页面文件,所述页面发布消息与所述目标页面文件之间具有一一对应的关系;
删除更新模块,用于在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用;
所述页面发布消息中包括:所述目标页面的页面标识,且所述目标页面的页面标识与所述当前页面的页面标识相同;
所述监听下载模块,包括:
覆盖子模块,用于将所述目标页面文件下载至所述页面标识对应的文件路径所指的位置,以覆盖所述当前页面文件。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
父引用删除模块,用于删除所述当前页面文件的父模块对所述当前页面文件的引用。
9.根据权利要求7所述的装置,其特征在于,所述页面发布消息中还包括:所述目标页面文件的发布时间;
所述监听下载模块,包括:
第一下载子模块,用于根据所述页面标识和发布时间,从文件服务器下载与所述页面标识和发布时间一致的目标页面文件。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
入队模块,用于将所述页面发布消息加入消息队列;
出队模块,用于在预设时间周期到达的情况下,取出所述消息队列中的页面发布消息,并清空所述消息队列;
所述监听下载模块,包括:
第二下载子模块,用于依次下载取出的所述页面发布消息对应的目标页面文件。
11.根据权利要求7所述的装置,其特征在于,所述监听下载模块,包括:
监听子模块,用于通过第一进程实时监听页面发布消息;
所述删除更新模块,具体用于在所述第一进程监听到所述页面发布消息的情况下,向至少一个第二进程发送进程消息,以通过所述至少一个第二进程执行所述在引入模块的缓存中,删除所述当前页面文件的引用,以及增加所述目标页面文件的引用的操作;其中,所述进程消息中包括:所述目标页面文件的页面标识。
12.根据权利要求7所述的装置,其特征在于,所述删除更新模块,包括:
生成子模块,用于生成缓存清除指令,所述缓存清除指令中包括所述当前页面文件对应的文件路径;
执行子模块,用于执行所述缓存清除指令,以根据所述当前页面文件对应的文件路径,在引入模块的缓存中,删除所述当前页面文件的引用;
注册子模块,用于在路由器中注册所述目标页面文件对应的统一资源定位符URL地址,以使所述引入模块根据所述URL地址引入所述目标页面文件,以及在所述缓存中增加所述目标页面文件的引用。
13.一种电子设备,其特征在于,包括:
处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-6中一个或多个所述的Node项目发布方法。
14.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如方法权利要求1-6中一个或多个所述的Node项目发布方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910556376.3A CN110413306B (zh) | 2019-06-25 | 2019-06-25 | Node项目发布方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910556376.3A CN110413306B (zh) | 2019-06-25 | 2019-06-25 | Node项目发布方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110413306A CN110413306A (zh) | 2019-11-05 |
CN110413306B true CN110413306B (zh) | 2021-09-10 |
Family
ID=68359808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910556376.3A Active CN110413306B (zh) | 2019-06-25 | 2019-06-25 | Node项目发布方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110413306B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110989978A (zh) * | 2019-11-06 | 2020-04-10 | 北京达佳互联信息技术有限公司 | 页面打包方法、装置、电子设备及存储介质 |
CN110955432B (zh) * | 2019-11-20 | 2023-04-18 | 中国联合网络通信集团有限公司 | 持续集成的发布方法、装置及系统 |
CN112416427A (zh) * | 2020-12-11 | 2021-02-26 | 推想医疗科技股份有限公司 | 模块管理包的发布方法及装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294902A (zh) * | 2015-05-28 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 预测移动应用程序页面性能的方法、装置及电子设备 |
CN106888240A (zh) * | 2015-12-16 | 2017-06-23 | 天脉聚源(北京)科技有限公司 | 一种页面数据发布方法及系统 |
CN108958855B (zh) * | 2017-05-26 | 2021-12-21 | 阿里巴巴集团控股有限公司 | 页面跳转的方法、装置及系统 |
-
2019
- 2019-06-25 CN CN201910556376.3A patent/CN110413306B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110413306A (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413306B (zh) | Node项目发布方法、装置、电子设备及可读存储介质 | |
CN109725909B (zh) | 代码文件打包部署方法、持续集成服务器及系统 | |
CN106569859B (zh) | 一种目标文件的加载方法及装置 | |
CN103150513B (zh) | 拦截应用程序中的植入信息的方法及装置 | |
CN108737534B (zh) | 一种基于区块链的数据传输方法、装置、区块链系统 | |
CN105487881A (zh) | 一种软件安装包打包方法、装置及系统 | |
US20090210513A1 (en) | Asynchronous automated routing of user to optimal host | |
CN103647816A (zh) | 一种应用软件升级的方法及装置 | |
CN108011931B (zh) | Web数据采集方法和Web数据采集系统 | |
CN105389191A (zh) | 一种基于局域网的软件升级方法、装置和系统 | |
CN103391312B (zh) | 资源离线下载方法及装置 | |
CN103841134A (zh) | 基于api发送、接收信息的方法、装置及系统 | |
CN106886437B (zh) | 应用程序更新方法与装置 | |
CN110020043B (zh) | 页面爬取方法、装置、存储介质及处理器 | |
CN102999636A (zh) | 对网页中的弹窗进行拦截处理的方法和浏览器 | |
CN103207785A (zh) | 数据下载请求的处理方法、装置及系统 | |
CN105955805A (zh) | 一种应用容器迁移的方法及装置 | |
CN107656742A (zh) | 一种软件产品发布方法和装置 | |
CN105100250A (zh) | 分发消息的方法、消息分发服务器及分发消息的系统 | |
CN109725912A (zh) | 应用程序配置方法、装置、终端、服务器及可读存储介质 | |
CN111324361A (zh) | 一种应用升级方法及设备 | |
CN103560997A (zh) | 应用程序下载管理的方法、装置及下载服务器 | |
CN111694639B (zh) | 进程容器地址的更新方法、装置和电子设备 | |
CN107977260B (zh) | 任务提交方法及装置 | |
US20200310828A1 (en) | Method, function manager and arrangement for handling function calls |
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 |