1.本公开涉及计算机技术领域,尤其涉及一种静态资源获取方法、装置、电子设备及存储介质。
背景技术:2.随着前端和后端的开发分离,在前端和后端之间引入了node中间层。其中,node中间层可以在前端和后端之间实现对静态资源的ssr(server-side rendering,服务端渲染),并且,node中间层实现的ssr,可以使用不同存储环境中的静态资源文件。然而,不同存储环境的静态资源的存储位置和文件规格都存在差异,例如开发环境的静态资源存储于内存中而生产环境的静态资源持久化于硬盘中。
3.相关技术中,针对不同存储环境中的静态资源往往会分别开发不同的获取技术手段,以兼顾对不同存储环境中的静态资源进行获取,但该方式造成了系统软硬件开销的增加。
技术实现要素:4.本公开提供一种静态资源获取方法、装置、电子设备及存储介质,以至少解决相关技术中系统软硬件开销增加的技术问题。
5.根据本公开实施例的一方面,提供一种静态资源获取方法,包括:
6.确定待获取的目标静态资源的存储环境;
7.从预设的第一资源传递对象和第二资源传递对象中确定与所述存储环境对应的选定资源传递对象;其中,所述第一资源传递对象为用于获取开发环境中静态资源的资源传递对象,所述第二资源传递对象为用于获取生产环境中静态资源的资源传递对象;
8.向所述选定资源传递对象请求获取所述目标静态资源,并获取所述选定资源传递对象响应的资源调用代码包,所述资源调用代码包用于从与所述选定资源传递对象对应的所述存储环境中提取静态资源;
9.利用所述资源调用代码包,获取所述目标静态资源。
10.在一种可能实施方式中,在所述确定待获取的目标静态资源的存储环境之前,所述静态资源获取方法还包括:
11.利用webpack打包工具打包编译生成所述开发环境中的静态资源,并生成与所述静态资源相关联的资源调用代码包;
12.利用webpack-dev-middle中间件将所述开发环境中的静态资源存储于所述开发环境的内存流中;
13.将所述资源调用代码包挂载于所述第一资源传递对象。
14.在一种可能实施方式中,所述静态资源获取方法还包括:
15.利用webpack-hot-client中间件,对所述内存流进行热更新。
16.在一种可能实施方式中,所述静态资源获取方法还包括:
17.利用内存文件系统,在所述开发环境的内存空间中为所述静态资源创建所述内存流。
18.在一种可能实施方式中,所述生产环境中的静态资源存储于所述生产环境的磁盘空间;
19.在所述确定待获取的目标静态资源的存储环境之前,所述静态资源获取方法还包括:
20.利用koa-static-middleware中间件,将与所述生产环境中的静态资源相关联的资源调用代码包挂载于所述第二资源传递对象。
21.在一种可能实施方式中,所述资源调用代码包包括fs对象、serverfs对象和mrequire方法的至少其中之一;
22.所述利用所述资源调用代码包,获取所述目标静态资源,包括:
23.通过调用所述fs对象、调用所述serverfs对象和执行所述mrequire方法的至少其中之一,获取所述目标静态资源。
24.根据本公开实施例的另一方面,提供一种静态资源获取装置,包括:
25.存储环境确定模块,被配置为执行确定待获取的目标静态资源的存储环境;
26.资源传递对象确定模块,被配置为执行从预设的第一资源传递对象和第二资源传递对象中确定与所述存储环境对应的选定资源传递对象;其中,所述第一资源传递对象为用于获取开发环境中静态资源的资源传递对象,所述第二资源传递对象为用于获取生产环境中静态资源的资源传递对象;
27.资源调用代码包获取模块,被配置为执行向所述选定资源传递对象请求获取所述目标静态资源,并获取所述选定资源传递对象响应的资源调用代码包,所述资源调用代码包用于从与所述选定资源传递对象对应的所述存储环境中提取静态资源;
28.资源获取模块,被配置为执行利用所述资源调用代码包,获取所述目标静态资源。
29.在一种可能实施方式中,所述静态资源获取装置还包括:
30.静态资源生成模块,被配置为执行利用webpack打包工具打包编译生成所述开发环境中的静态资源,并生成与所述静态资源相关联的资源调用代码包;
31.静态资源存储模块,被配置为执行利用webpack-dev-middle中间件将所述开发环境中的静态资源存储于所述开发环境的内存流中;
32.第一资源调用代码包挂载模块,被配置为执行将所述资源调用代码包挂载于所述第一资源传递对象。
33.在一种可能实施方式中,所述静态资源获取装置还包括:
34.内存流热更新模块,被配置为执行利用webpack-hot-client中间件,对所述内存流进行热更新。
35.在一种可能实施方式中,所述静态资源获取装置还包括:
36.内存流创建模块,被配置为执行利用内存文件系统,在所述开发环境的内存空间中为所述静态资源创建所述内存流。
37.在一种可能实施方式中,所述生产环境中的静态资源存储于所述生产环境的磁盘空间;
38.所述静态资源获取装置还包括:
39.第二资源调用代码包挂载模块,被配置为执行利用koa-static-middleware中间件,将与所述生产环境中的静态资源相关联的资源调用代码包挂载于所述第二资源传递对象。
40.在一种可能实施方式中,所述资源调用代码包包括fs对象、serverfs对象和mrequire方法的至少其中之一;
41.所述资源获取模块进一步被配置为执行:
42.通过调用所述fs对象、调用所述serverfs对象和执行所述mrequire方法的至少其中之一,获取所述目标静态资源。
43.根据本公开实施例的另一方面,提供一种电子设备,包括:
44.处理器;
45.用于存储所述处理器的可执行指令的存储器;
46.其中,所述处理器被配置为执行所述可执行指令,以实现如上述任一实施方式所述的静态资源获取方法。
47.根据本公开实施例的另一方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的至少一条指令被电子设备的处理器执行时,使得所述电子设备能够实现上述任一实施方式所述的静态资源获取方法。
48.根据本公开实施例的另一方面,提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一实施方式所述的静态资源获取方法。
49.本公开的实施例提供的技术方案至少带来以下有益效果:
50.本公开实施例的静态资源获取方法、装置、电子设备及存储介质,在确定待获取的目标静态资源的存储环境后,向与所确定的存储环境对应的选定资源传递对象请求获取目标静态资源,进而利用选定资源传递对象响应的资源调用代码包获取目标静态资源,本公开实施例中,针对于目标静态资源的不同存储环境只需要同一种方式获取其中的目标静态资源,即从确定的存储环境对应的选定资源传递对象请求获取目标静态资源以接收选定资源传递对象响应的资源调用代码包并利用接收的资源调用代码包获取目标静态资源,因此,本公开实施例实现了利用同一种获取方式对不同存储环境的目标静态资源的获取,节省了针对不同存储环境中的静态资源进行获取的技术手段对系统软硬件的开销。
51.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
52.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
53.图1是根据一示意性实施例示出的一种静态资源获取方法的流程图;
54.图2是根据一示意性实施例示出的在开发环境中进行配置的流程图;
55.图3是根据一示意性实施例示出的一种静态资源获取方法的应用场景流程图;
56.图4是根据一示意性实施例示出的一种静态资源获取装置的逻辑结构框图;
57.图5是本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
58.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
59.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
60.需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等),均为经用户授权或者经过各方充分授权的信息。
61.前端使用node做中间层在处理ssr服务器端渲染html时,因为开发环境编译后的静态资源和生产环境的静态资源的保存方式不同,同一个node中间层的ssr无法同时兼容开发环境和生产环境这两种存储环境的静态资源。
62.现有的解决这一问题的第一种方式为,开发环境和生产环境采用两套代码,分别维护开发环境和生产环境的两套ssr相关的代码,这种方式维护两套渲染相关的代码成本高且易出错。
63.现有的解决这一问题的第二种方式为,开发环境和生产环境共用一套代码,将开发环境编译结果和生产环境一样输出到磁盘上保存,这种方式虽然同一个node中间层ssr能够同时兼容开发环境和生产环境的代码,但是开发环境因为需要频繁更改代码而导致编译很慢,进而影响开发效率和体验。
64.现有的解决这一问题的第三种方式为,启动两个node服务,一个用于开发环境的资源热更新,一个用于ssr,这种方式造成了node服务启动繁琐,并且需要较高配置的硬件设备才能够实现。
65.有鉴于此,本公开实施例提供一种静态资源获取方法、装置、电子设备及存储介质,利用同一种获取方式对不同存储环境的目标静态资源的获取,以节省针对不同存储环境中的静态资源进行获取的技术手段对系统软硬件的开销。
66.图1是根据一示意性实施例示出的一种静态资源获取方法的流程图,参见图1所示,该静态资源获取方法应用于计算机设备,下面以计算机设备为服务器为例进行说明。
67.步骤101、确定待获取的目标静态资源的存储环境;
68.步骤102、从预设的第一资源传递对象和第二资源传递对象中确定与存储环境对应的选定资源传递对象;其中,第一资源传递对象为用于获取开发环境中静态资源的资源传递对象,第二资源传递对象为用于获取生产环境中静态资源的资源传递对象;
69.步骤103、向选定资源传递对象请求获取目标静态资源,并获取选定资源传递对象响应的资源调用代码包,资源调用代码包用于从与选定资源传递对象对应的存储环境中提取静态资源;
70.步骤104、利用资源调用代码包,获取目标静态资源。
71.本公开实施例的静态资源获取方法,在确定待获取的目标静态资源的存储环境后,向与所确定的存储环境对应的选定资源传递对象请求获取目标静态资源,进而利用选
定资源传递对象响应的资源调用代码包获取目标静态资源,本公开实施例中,针对于目标静态资源的不同存储环境只需要同一种方式获取其中的目标静态资源,即从确定的存储环境对应的选定资源传递对象请求获取目标静态资源以接收选定资源传递对象响应的资源调用代码包并利用接收的资源调用代码包获取目标静态资源,因此,本公开实施例实现了利用同一种获取方式对不同存储环境的目标静态资源的获取,节省了针对不同存储环境中的静态资源进行获取的技术手段对系统软硬件的开销。
72.本公开实施例的静态资源获取方法可应用于node中间层对开发环境和生产环境的静态资源的服务端渲染。与此相匹配地,步骤101确定的存储环境为开发环境和生产环境中的一种。一般来说,开发环境中的代码是为了更好的阅读,而运行环境中的代码则是为了能够更快地执行。因此开发环境和运行环境中的代码形式也不相同。比如,开发环境的代码,要通过混淆压缩后才能放在线上运行,这样代码体积更小,而且对代码执行也不会有任何影响。
73.在一些实施例中,步骤102中的第一资源传递对象为对应于开发环境的资源传递对象,第二资源传递对象为对应于生产环境的资源传递对象,在步骤102中所确定的选定资源传递对象为第一资源传递对象和第二资源传递对象的其中之一。
74.在一些实施例中,第一资源传递对象和第二资源传递对象可以是ctx(context),其中,ctx即上下文对象,ctx可以应用于开发环境和生产环境作为开发环境和生产环境对外的接口。在步骤102中,第一资源传递对象例如开发环境的上下文对象,第二资源传递对象例如生产环境的上下文对象,开发环境的上下文对象用于获取开发环境中的静态资源,生产环境的上下文对象用于获取生产环境中的静态资源。
75.为了实现对开发环境中静态资源的获取,需要在开发环境中进行相应的配置,在此情况下,本公开实施例的静态资源获取方法还包括在开发环境中的配置过程。图2是根据一示意性实施例示出的在开发环境中进行配置的流程图,如图2所示,在步骤101之前,本公开实施例的静态资源获取方法还进一步包括如下步骤201至步骤203。
76.步骤201、利用webpack打包工具打包编译生成开发环境中的静态资源,并生成与静态资源相关联的资源调用代码包。
77.步骤202、利用webpack-dev-middle中间件将开发环境中的静态资源存储于开发环境的内存流中;
78.步骤203、将资源调用代码包挂载于第一资源传递对象。
79.其中,webpack打包工具是用于现代javascript应用程序的静态模块打包工具。webpack-dev-middle中间件是响应webpack打包工具打包出来的静态资源的中间件,它能够将webpack打包工具对前端代码打包出来的静态资源存储于开发环境的内存流中,在使用webpack进行文件打包的情况下,webpack-dev-middleware将打包后的文件直接写入内存,而非硬盘,从而节省了开发环境下的写入时间。
80.在一种示例中,webpack打包工具打包出静态资源时会得到compiler对象,通过调用该compiler对象便能够获得开发环境的内存流中的静态资源。基于此,在一些实施例中,步骤201中的资源调用代码包,即开发环境中与静态资源相关联的资源调用代码包可以是webpack打包工具打包出静态资源时所得到的compiler对象,在步骤203中是将compiler对象挂载于第一资源传递对象,即,将compiler对象挂载于开发环境的上下文对象。从而,在
步骤103中向开发环境的上下文对象获取开发环境的静态资源,便能够获取到开发环境的上下文对象所响应的compiler对象,进一步地,在步骤104中通过调用该compiler对象便可以获取到开发环境的静态资源。
81.在一些实施例中,静态资源存储于开发环境的内存流时还需要对内存流进行热更新,本公开实施例的静态资源获取方法还可以进一步包括:
82.利用webpack-hot-client中间件,对内存流进行热更新。
83.其中,webpack-hot-client中间件用于实现webpack热更新的库。
84.为了在开发环境中实现内存流的创建,本公开实施例的静态资源获取方法还进一步包括:
85.利用内存文件系统(memoryfilesystem),在开发环境的内存空间中为静态资源创建内存流。
86.在生产环境中,生产环境中的静态资源存储于生产环境的磁盘空间,为了获取磁盘空间中存储的静态资源,在步骤101之前,本公开实施例的静态资源获取方法还包括在生产环境中执行的以下步骤:
87.利用koa-static-middleware中间件,将与生产环境中的静态资源相关联的资源调用代码包挂载于第二资源传递对象。
88.其中,koa-static-middleware是一个响应静态资源的koa中间件,通常用于生产环境。其中,koa是一种基于node.js的web(网页)开发框架,node.js是基于chrome v8引擎的javascript运行环境。koa-static-middleware是静态资源请求中间件,静态资源例如html、js、css、jpg、png等,不涉及其它的处理过程。
89.在一些实施例中,资源调用代码包包括fs对象、serverfs对象和mrequire方法的至少其中之一。在一些实施例中,fs对象、serverfs对象是针对生产环境而言的,在生产环境中利用koa-static-middleware中间件能够直接得到用于获取生产环境静态资源的fs对象、serverfs对象,在得到fs对象、serverfs对象之后通过调用fs对象、serverfs对象便可以获得生产环境的静态资源。在一些实施例中,mrequire是一种自定义的执行js(javascript)文件的方法,可称之为js文件执行方法,既可以执行内存流中的js文件,也可以执行磁盘上的js文件。
90.其中,fs可称为静态资源文件,serverfs可称为服务端静态资源文件,fs是指进行csr(client side rendering,客户端渲染)情况下的静态资源文件,serverfs是指进行ssr情况下的静态资源文件。
91.如上述说明中的开发环境中的compiler对象,其相当于生产环境的fs对象、serverfs对象,也就是说,开发环境中的compiler对象也可以称之为开发环境中的fs对象、serverfs对象。
92.在此基础上,步骤104的利用资源调用代码包,获取目标静态资源,进一步包括:
93.通过调用fs对象、调用serverfs对象和执行mrequire方法的至少其中之一,获取目标静态资源。
94.由于上下文对象(ctx)可以集成于webpack和koa的中间件中,因此上下文对象可以作为开发环境和生产环境对外的接口,本公开实施例的静态资源获取方法,利用上下文对象并结合于webpack和koa的中间件所得到的资源调用代码包,通过将资源调用代码包挂
载于上下文对象,进而在获取开发环境或者生产环境的上下文对象响应的资源调用代码包后,利用所获取的资源调用代码包便可以获得开发环境或者生产环境的静态资源,实现了同一种获取方式对不同存储环境的目标静态资源的获取。
95.在一些实施例中,基于上下文对象,步骤103中,向选定资源传递对象请求获取目标静态资源,可以利用ctx.request或者ctx.req实现。其中,ctx.request是上下文对象经过封装的请求对象,ctx.req是上下文对象提供的node.js原生http请求对象。
96.在一些实施例中,资源调用代码包通过挂载到ctx.state实现开发环境的资源调用代码包挂载于第一资源传递对象以及生产环境的资源调用代码包挂载于第二资源传递对象。在开发环境中,compiler对象作为fs对象、serverfs对象挂载于ctx.state,mrequire方法可通过编写代码的方式挂载到ctx.state上。这样,通过开发环境或者生产环境对ctx.request或者ctx.req所响应的ctx.state便可以得到ctx.state上挂载的开发环境或者生产环境的资源调用代码包。
97.上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
98.图3是根据一示意性实施例示出的一种静态资源获取方法的应用场景流程图,参见图3所示,该静态资源获取方法包括以下步骤。
99.步骤301、在开发环境中,调用webpack对编写的代码执行打包编译,将静态资源产出到memoryfilesystem创建的内存流中,并将开发环境中的资源调用代码包挂载到开发环境的ctx.state上,利用webpack-dev-middle中间件和webpack-hot-client中间件实现热更新。
100.其中,资源调用代码包包括开发环境中的compiler对象(相当于fs对象、serverfs对象)和mrequire方法。
101.步骤302、在生产环境中,在koa-static-middleware中间件的基础上,将生产环境中的资源调用代码包挂载到生产环境的ctx.state上。
102.其中,第二页面资源包括生产环境中的fs对象、serverfs对象和mrequire方法。
103.步骤303、ssr服务器确定待获取的目标静态资源的存储环境,若存储环境为开发环境则执行步骤3041,若存储环境为生产环境则执行步骤3042。
104.步骤3041、将开发环境的ctx确定为选定ctx,之后执行步骤305。
105.步骤3042、将生产环境的ctx确定为选定ctx,之后执行步骤305。
106.步骤305、向选定ctx请求获取目标静态资源,并获取选定ctx响应的资源调用代码包。
107.其中,选定ctx响应的资源调用代码包是挂载于选定ctx的ctx.state上的资源调用代码包,如果选定ctx是开发环境的ctx,则获取的资源调用代码包是挂载于开发环境的ctx.state上的资源调用代码,如果选定ctx是生产环境的ctx,则获取的资源调用代码包是挂载于生产环境的ctx.state上的资源调用代码。
108.步骤306、利用资源调用代码包,获取目标静态资源。
109.其中,步骤306可以包括通过调用资源调用代码包中的fs对象、serverfs对象以及执行资源调用代码包中的mrequire方法获得目标静态资源。其中,如果资源调用代码包是开发环境中的资源调用代码包,则利用资源调用代码包获取的目标静态资源是开发环境中
的静态资源,如果资源调用代码包是生产环境中的资源调用代码包,则利用资源调用代码包获取的目标静态资源是生产环境中的静态资源。
110.上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
111.图4是根据一示意性实施例示出的一种静态资源获取装置的逻辑结构框图,参见图4所示,该装置包括存储环境确定模块401、资源传递对象确定模块402、资源调用代码包获取模块403和资源获取模块404。
112.存储环境确定模块401,被配置为执行确定待获取的目标静态资源的存储环境。
113.资源传递对象确定模块402,被配置为执行从预设的第一资源传递对象和第二资源传递对象中确定与存储环境对应的选定资源传递对象;其中,第一资源传递对象为用于获取开发环境中静态资源的资源传递对象,第二资源传递对象为用于获取生产环境中静态资源的资源传递对象。
114.资源调用代码包获取模块403,被配置为执行向选定资源传递对象请求获取目标静态资源,并获取选定资源传递对象响应的资源调用代码包,资源调用代码包用于从与选定资源传递对象对应的存储环境中提取静态资源。
115.资源获取模块404,被配置为执行利用资源调用代码包,获取目标静态资源。
116.本公开实施例的静态资源获取装置,在确定待获取的目标静态资源的存储环境后,向与所确定的存储环境对应的选定资源传递对象请求获取目标静态资源,进而利用选定资源传递对象响应的资源调用代码包获取目标静态资源,本公开实施例中,针对于目标静态资源的不同存储环境只需要同一种方式获取其中的目标静态资源,即从确定的存储环境对应的选定资源传递对象请求获取目标静态资源以接收选定资源传递对象响应的资源调用代码包并利用接收的资源调用代码包获取目标静态资源,因此,本公开实施例实现了利用同一种获取方式对不同存储环境的目标静态资源的获取,节省了针对不同存储环境中的静态资源进行获取的技术手段对系统软硬件的开销。
117.在一些实施例中,本公开实施例的静态资源获取装置还包括静态资源生成模块、静态资源存储模块、第一资源调用代码包挂载模块。
118.静态资源生成模块,被配置为执行利用webpack打包工具打包编译生成开发环境中的静态资源,并生成与静态资源相关联的资源调用代码包。
119.静态资源存储模块,被配置为执行利用webpack-dev-middle中间件将开发环境中的静态资源存储于开发环境的内存流中。
120.第一资源调用代码包挂载模块,被配置为执行将资源调用代码包挂载于第一资源传递对象。
121.在一些实施例中,本公开实施例的静态资源获取装置还包括内存流热更新模块,被配置为执行利用webpack-hot-client中间件,对内存流进行热更新。
122.在一些实施例中,本公开实施例的静态资源获取装置还包括内存流创建模块,被配置为执行利用内存文件系统,在开发环境的内存空间中为静态资源创建内存流。
123.在一些实施例中,生产环境中的静态资源存储于生产环境的磁盘空间。本公开实施例的静态资源获取装置还包括第二资源调用代码包挂载模块,被配置为执行利用koa-static-middleware中间件,将与生产环境中的静态资源相关联的资源调用代码包挂载于
第二资源传递对象。
124.在一些实施例中,资源调用代码包包括fs对象、serverfs对象和mrequire方法的至少其中之一。资源获取模块404进一步被配置为执行:通过调用fs对象、调用serverfs对象和执行mrequire方法的至少其中之一,获取目标静态资源。
125.上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
126.关于上述实施例中的静态资源获取装置,其中各个单元执行操作的具体方式已经在有关该静态资源获取方法的实施例中进行了详细描述,此处将不作详细阐述说明。
127.需要说明的是:上述实施例仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
128.图5是本公开实施例提供的一种电子设备的结构示意图。在一些实施例中,该电子设备为服务器。该电子设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)501和一个或一个以上的存储器502,其中,该存储器502中存储有至少一条程序代码,该至少一条程序代码由该处理器501加载并执行以实现上述各个实施例提供的静态资源获取方法。当然,该电子设备500还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该电子设备500还可以包括其他用于实现设备功能的部件,在此不做赘述。
129.在示例性实施例中,还提供了一种包括至少一条指令的计算机可读存储介质,例如包括至少一条指令的存储器,上述至少一条指令可由计算机设备中的处理器执行以完成上述实施例中的静态资源获取方法。
130.可选地,上述计算机可读存储介质可以是非临时性计算机可读存储介质,例如,该非临时性计算机可读存储介质可以包括rom(read-only memory,只读存储器)、ram(random-access memory,随机存取存储器)、cd-rom(compact disc read-only memory,只读光盘)、磁带、软盘和光数据存储设备等。
131.在示例性实施例中,还提供了一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由计算机设备的处理器执行,以完成上述各个实施例提供的静态资源获取方法。
132.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
133.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
技术特征:1.一种静态资源获取方法,其特征在于,包括:确定待获取的目标静态资源的存储环境;从预设的第一资源传递对象和第二资源传递对象中确定与所述存储环境对应的选定资源传递对象;其中,所述第一资源传递对象为用于获取开发环境中静态资源的资源传递对象,所述第二资源传递对象为用于获取生产环境中静态资源的资源传递对象;向所述选定资源传递对象请求获取所述目标静态资源,并获取所述选定资源传递对象响应的资源调用代码包,所述资源调用代码包用于从与所述选定资源传递对象对应的所述存储环境中提取静态资源;利用所述资源调用代码包,获取所述目标静态资源。2.根据权利要求1所述的静态资源获取方法,其特征在于,在所述确定待获取的目标静态资源的存储环境之前,所述静态资源获取方法还包括:利用webpack打包工具打包编译生成所述开发环境中的静态资源,并生成与所述静态资源相关联的资源调用代码包;利用webpack-dev-middle中间件将所述开发环境中的静态资源存储于所述开发环境的内存流中;将所述资源调用代码包挂载于所述第一资源传递对象。3.根据权利要求2所述的静态资源获取方法,其特征在于,所述静态资源获取方法还包括:利用webpack-hot-client中间件,对所述内存流进行热更新。4.根据权利要求3所述的静态资源获取方法,其特征在于,所述静态资源获取方法还包括:利用内存文件系统,在所述开发环境的内存空间中为所述静态资源创建所述内存流。5.根据权利要求1所述的静态资源获取方法,其特征在于:所述生产环境中的静态资源存储于所述生产环境的磁盘空间;在所述确定待获取的目标静态资源的存储环境之前,所述静态资源获取方法还包括:利用koa-static-middleware中间件,将与所述生产环境中的静态资源相关联的资源调用代码包挂载于所述第二资源传递对象。6.根据权利要求1所述的静态资源获取方法,其特征在于:所述资源调用代码包包括fs对象、serverfs对象和mrequire方法的至少其中之一;所述利用所述资源调用代码包,获取所述目标静态资源,包括:通过调用所述fs对象、调用所述serverfs对象和执行所述mrequire方法的至少其中之一,获取所述目标静态资源。7.一种静态资源获取装置,其特征在于,包括:存储环境确定模块,被配置为执行确定待获取的目标静态资源的存储环境;资源传递对象确定模块,被配置为执行从预设的第一资源传递对象和第二资源传递对象中确定与所述存储环境对应的选定资源传递对象;其中,所述第一资源传递对象为用于获取开发环境中静态资源的资源传递对象,所述第二资源传递对象为用于获取生产环境中静态资源的资源传递对象;资源调用代码包获取模块,被配置为执行向所述选定资源传递对象请求获取所述目标
静态资源,并获取所述选定资源传递对象响应的资源调用代码包,所述资源调用代码包用于从与所述选定资源传递对象对应的所述存储环境中提取静态资源;资源获取模块,被配置为执行利用所述资源调用代码包,获取所述目标静态资源。8.一种电子设备,其特征在于,包括:处理器;用于存储所述处理器的可执行指令的存储器;其中,所述处理器被配置为执行所述可执行指令,以实现如权利要求1至6任一项所述的静态资源获取方法。9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的至少一条指令被电子设备的处理器执行时,使得所述电子设备能够实现如权利要求1至6任一项所述的静态资源获取方法。10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的静态资源获取方法。
技术总结本公开关于一种静态资源获取方法、装置、电子设备及存储介质,属于计算机技术领域,该静态资源获取方法包括:确定待获取的目标静态资源的存储环境;从预设的第一资源传递对象和第二资源传递对象中确定与存储环境对应的选定资源传递对象;向选定资源传递对象请求获取目标静态资源,并获取选定资源传递对象响应的资源调用代码包;利用资源调用代码包,获取目标静态资源。本公开实现了利用同一种获取方式对不同存储环境的目标静态资源的获取,节省了针对不同存储环境中的静态资源进行获取的技术手段对系统软硬件的开销。术手段对系统软硬件的开销。术手段对系统软硬件的开销。
技术研发人员:董天琦
受保护的技术使用者:北京达佳互联信息技术有限公司
技术研发日:2022.07.20
技术公布日:2022/11/1