CN111443906A - 一种应用的访问方法和装置 - Google Patents

一种应用的访问方法和装置 Download PDF

Info

Publication number
CN111443906A
CN111443906A CN202010216087.1A CN202010216087A CN111443906A CN 111443906 A CN111443906 A CN 111443906A CN 202010216087 A CN202010216087 A CN 202010216087A CN 111443906 A CN111443906 A CN 111443906A
Authority
CN
China
Prior art keywords
module
compiled
modules
application
path
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.)
Granted
Application number
CN202010216087.1A
Other languages
English (en)
Other versions
CN111443906B (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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology 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 Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN202010216087.1A priority Critical patent/CN111443906B/zh
Publication of CN111443906A publication Critical patent/CN111443906A/zh
Application granted granted Critical
Publication of CN111443906B publication Critical patent/CN111443906B/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/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种应用的访问方法和装置,其中,该方法包括:接收应用访问请求,其中,应用访问请求用于请求访问前端应用的第一模块;从前端应用中包括的待编译模块中查找第一模块,其中,前端应用包括待编译模块和已编译模块,已编译模块为在编译过程中已编译的模块,待编译模块为在编译过程中未编译的模块;在从待编译模块中查找到第一模块的情况下,编译第一模块,得到第一模块对应的第一模块代码;响应应用访问请求返回第一模块对应的第一模块代码。本申请解决了相关技术中前端应用的编译过程中模块的编译效率较低的技术问题。

Description

一种应用的访问方法和装置
技术领域
本申请涉及计算机领域,尤其涉及一种应用的访问方法和装置。
背景技术
随着前端技术的发展,前端开发从静态网页的开发到复杂的前后端交互再到基于node.js的全栈开发,前端需要做的事情越来越多,前端代码的逻辑和交互效果越来越复杂,越来越不易于管理。前端代码在部署运行之前,一般需要经过四步流程处理:编译、优化、合并及混淆、部署服务。随着项目中的文件不断增加,编译、优化这两部分花费的时间保持线性增长。在项目开发阶段,开发人员需要等待的编译时间越来越长,编译的效率越来越低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请提供了一种应用的访问方法和装置,以至少解决相关技术中前端应用的编译过程中模块的编译效率较低的技术问题。
根据本申请实施例的一个方面,提供了一种应用的访问方法,包括:
接收应用访问请求,其中,所述应用访问请求用于请求访问前端应用的第一模块;
从所述前端应用中包括的待编译模块中查找所述第一模块,其中,所述前端应用包括所述待编译模块和已编译模块,所述已编译模块为在编译过程中已编译的模块,所述待编译模块为在所述编译过程中未编译的模块;
在从所述待编译模块中查找到所述第一模块的情况下,编译所述第一模块,得到所述第一模块对应的第一模块代码;
响应所述应用访问请求返回所述第一模块对应的所述第一模块代码。
可选地,编译所述第一模块,得到所述第一模块对应的第一模块代码包括:
从具有对应关系的待编译模块和模块路径中查找所述第一模块所对应的第一模块路径,其中,所述模块路径用于指示所述待编译模块的模块文件的存储路径;
对所述第一模块路径所指示的模块文件进行编译,得到第一模块代码。
可选地,在对所述第一模块路径所指示的模块文件进行编译,得到第一模块代码之后,所述方法还包括:
获取所述第一模块代码对应的第二模块路径,其中,所述第二模块路径用于指示所述第一模块代码的存储路径;
将所述第一模块代码保存到所述前端应用中,并使用具有对应关系的所述第一模块和所述第二模块路径更新所述具有对应关系的待编译模块和模块路径。
可选地,在接收所述应用访问请求之前,所述方法还包括:
获取模块标记信息,其中,所述模块标记信息用于从所述前端应用所包括的模块中标记所述待编译模块;
确定所述前端应用的编译队列中的每个模块是否在所述模块标记信息中;
在确定所述每个模块在所述模块标记信息中的情况下,记录具有对应关系的所述每个模块和所述每个模块的模块路径,得到模块列表;
在确定所述每个模块不在所述模块标记信息中的情况下,编译所述每个模块,得到应用代码;
将所述模块列表保存到所述应用代码中,得到所述前端应用。
可选地,在从所述前端应用中包括的待编译模块中查找所述第一模块之后,所述方法还包括:
在未查找到所述第一模块的情况下,查找所述第一模块对应的第二模块代码;
响应所述应用访问请求返回所述第一模块对应的所述第二模块代码。
根据本申请实施例的另一方面,还提供了一种应用的访问装置,包括:
接收模块,用于接收应用访问请求,其中,所述应用访问请求用于请求访问前端应用的第一模块;
第一查找模块,用于从所述前端应用中包括的待编译模块中查找所述第一模块,其中,所述前端应用包括所述待编译模块和已编译模块,所述已编译模块为在编译过程中已编译的模块,所述待编译模块为在所述编译过程中未编译的模块;
第一编译模块,用于在从所述待编译模块中查找到所述第一模块的情况下,编译所述第一模块,得到所述第一模块对应的第一模块代码;
第一返回模块,用于响应所述应用访问请求返回所述第一模块对应的所述第一模块代码。
可选地,所述编译模块包括:
查找单元,用于从具有对应关系的待编译模块和模块路径中查找所述第一模块所对应的第一模块路径,其中,所述模块路径用于指示所述待编译模块的模块文件的存储路径;
编译单元,用于对所述第一模块路径所指示的模块文件进行编译,得到第一模块代码。
可选地,所述装置还包括:
第一获取模块,用于在对所述第一模块路径所指示的模块文件进行编译,得到第一模块代码之后,获取所述第一模块代码对应的第二模块路径,其中,所述第二模块路径用于指示所述第一模块代码的存储路径;
处理模块,用于将所述第一模块代码保存到所述前端应用中,并使用具有对应关系的所述第一模块和所述第二模块路径更新所述具有对应关系的待编译模块和模块路径。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。
根据本申请实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。
在本申请实施例中,采用接收应用访问请求,其中,应用访问请求用于请求访问前端应用的第一模块;从前端应用中包括的待编译模块中查找第一模块,其中,前端应用包括待编译模块和已编译模块,已编译模块为在编译过程中已编译的模块,待编译模块为在编译过程中未编译的模块;在从待编译模块中查找到第一模块的情况下,编译第一模块,得到第一模块对应的第一模块代码;响应应用访问请求返回第一模块对应的第一模块代码的方式,前端应用包括的模块被划分为待编译模块和已编译模块两种,在前端应用的编译过程中对部分模块进行编译得到已编译模块,并将待编译模块记录在前端应用中,待编译模块均是在需要被访问时进行编译得到其对应的第一模块代码返回给发起应用访问请求的访问方,在待编译模块需要被访问时对其进行编译,达到了前端应用的模块按需编译的目的,在前端应用的编译过程中只编译部分模块作为已编译模块,使得前期的编译时间能够缩短,从而实现了提高前端应用的编译过程中模块的编译效率的技术效果,进而解决了相关技术中前端应用的编译过程中模块的编译效率较低的技术问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的应用的访问方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的应用的访问方法的流程图;
图3是根据本申请可选实施例的一种应用的访问方法的示意图;
图4是根据本申请实施例的一种可选的应用的访问装置的示意图;
以及
图5是根据本申请实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一方面,提供了一种应用的访问的方法实施例。
可选地,在本实施例中,上述应用的访问方法可以应用于如图1所示的由终端101和服务器103所构成的硬件环境中。如图1所示,服务器103通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供服务(如游戏服务、应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器103提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101并不限定于PC、手机、平板电脑等。本申请实施例的应用的访问方法可以由服务器103来执行,也可以由终端101来执行,还可以是由服务器103和终端101共同执行。其中,终端101执行本申请实施例的应用的访问方法也可以是由安装在其上的客户端来执行。
图2是根据本申请实施例的一种可选的应用的访问方法的流程图,如图2所示,该方法可以包括以下步骤:
步骤S202,接收应用访问请求,其中,所述应用访问请求用于请求访问前端应用的第一模块;
步骤S204,从所述前端应用中包括的待编译模块中查找所述第一模块,其中,所述前端应用包括所述待编译模块和已编译模块,所述已编译模块为在编译过程中已编译的模块,所述待编译模块为在所述编译过程中未编译的模块;
步骤S206,在从所述待编译模块中查找到所述第一模块的情况下,编译所述第一模块,得到所述第一模块对应的第一模块代码;
步骤S208,响应所述应用访问请求返回所述第一模块对应的所述第一模块代码。
通过上述步骤S202至步骤S208,前端应用包括的模块被划分为待编译模块和已编译模块两种,在前端应用的编译过程中对部分模块进行编译得到已编译模块,并将待编译模块记录在前端应用中,待编译模块均是在需要被访问时进行编译得到其对应的第一模块代码返回给发起应用访问请求的访问方,在待编译模块需要被访问时对其进行编译,达到了前端应用的模块按需编译的目的,在前端应用的编译过程中只编译部分模块作为已编译模块,使得前期的编译时间能够缩短,从而实现了提高前端应用的编译过程中模块的编译效率的技术效果,进而解决了相关技术中前端应用的编译过程中模块的编译效率较低的技术问题。
可选地,在本实施例中,上述应用的访问方法可以但不限于应用于前端应用对应的后台服务器。
在步骤S202提供的技术方案中,前端应用可以但不限于包括各种功能的应用,例如:游戏、网页、浏览器、购物、金融、理财、多媒体、直播等等。
可选地,在本实施例中,应用访问请求用于请求访问前端应用的第一模块,应用访问请求可以但不限于是在浏览器上由用户发起的。
在步骤S204提供的技术方案中,前端应用包括待编译模块和已编译模块,服务器上可以部署该前端应用对应的模块列表,通过模块列表用于记录前端应用中未编译的模块,即待编译模块。
可选地,在本实施例中,待编译模块可以但不限于称为业务模块,已编译模块可以但不限于被称为主模块。业务模块是在前端应用的访问过程中进行按需编译的模块,其可以但不限于是在前端应用更新优化的过程中需要进行更新优化的模块。
可选地,在本实施例中,待编译模块的数量可以但不限于是一个或者多个,已编译模块的数量可以但不限于是一个或者多个。
在步骤S206提供的技术方案中,可以但不限于使用编译工具对模块进行编译,比如:编译工具可以但不限于包括webpack等等。
作为一种可选的实施例,编译所述第一模块,得到所述第一模块对应的第一模块代码包括:
S11,从具有对应关系的待编译模块和模块路径中查找所述第一模块所对应的第一模块路径,其中,所述模块路径用于指示所述待编译模块的模块文件的存储路径;
S12,对所述第一模块路径所指示的模块文件进行编译,得到第一模块代码。
可选地,在本实施例中,后台服务器记录具有对应关系的待编译模块和模块路径,即可以使用键值对的方式记录模块列表,待编译模块的id和path作为一个键值对代表了一个待编译模块对应的存储路径。
可选地,在本实施例中,上述模块列表可以但不限于为编译器的符号表symboltable。
作为一种可选的实施例,在对所述第一模块路径所指示的模块文件进行编译,得到第一模块代码之后,还包括:
S21,获取所述第一模块代码对应的第二模块路径,其中,所述第二模块路径用于指示所述第一模块代码的存储路径;
S22,将所述第一模块代码保存到所述前端应用中,并使用具有对应关系的所述第一模块和所述第二模块路径更新所述具有对应关系的待编译模块和模块路径模。
可选地,在本实施例中,每个待编译模块进行编译后均将其保存在前端应用中,并将具有对应关系的待编译模块和模块路径中的模块路径更新为编译后的模块路径,从而当再次访问该模块时能够直接访问到编译后的模块路径上。
作为一种可选的实施例,在接收所述应用访问请求之前,还包括:
S31,获取模块标记信息,其中,所述模块标记信息用于从所述前端应用所包括的模块中标记所述待编译模块;
S32,确定所述前端应用的编译队列中的每个模块是否在所述模块标记信息中;
S33,在确定所述每个模块在所述模块标记信息中的情况下,记录具有对应关系的所述每个模块和所述每个模块的模块路径,得到所述模块列表;
S34,在确定所述每个模块不在所述模块标记信息中的情况下,编译所述每个模块,得到应用代码;
S35,将所述模块列表保存到所述应用代码中,得到所述前端应用。
可选地,在本实施例中,在接收应用访问请求之前,在前端应用的编译过程中,可以由开发人员通过模块标记信息来对待编译模块进行声明。模块标记信息可以但不限于包括指定函数importModule(string id,string path)。
例如:开发人员可以通过指定函数importModule(string id,string path)来声明业务模块id。该函数没有任何代码逻辑,只是声明文件路径path上的模块为业务模块,并且指定id。修改项目中主模块,假定是src/main.js,在main.js中声明项目中的所有业务模块。
以webpack编译为例,它对于所有模块一视同仁,统一放入编译队列里等待编译。此时可以在其基础上,由开发人员使用importModule标记出业务模块,这些被标记的模块被视为延后编译。使用importModule标记模块时,定义了两个参数id与path,可以用于确定需要编译该模块的时机。
可选地,在本实施例中,Webpack在编译源代码文件时,根据文件后缀,调用对应的预处理函数。该函数参数为string source,表示源代码文件的内容。Webpack读取所有文件,利用字符串匹配算法,将文件与importModule(string id,string path)进行匹配,如果匹配到,则获取id和path,作为待编译模块存放在编译器的符号表中。
可选地,在本实施例中,按照正常的前端编译流程,webpack只配置已编译模块的路径,因此只有已编译模块被编译,得到应用代码。再将符号表symbol table的内容写入到编译完成的应用代码中。在后续的访问过程中对symbol table中的模块进行按需编译。
作为一种可选的实施例,在从所述前端应用中包括的待编译模块中查找所述第一模块之后,还包括:
S41,在未查找到所述第一模块的情况下,查找所述第一模块对应的第二模块代码;
S42,响应所述应用访问请求返回所述第一模块对应的所述第二模块代码。
可选地,在本实施例中,如果应用访问请求所请求访问的第一模块不在待编译模块中,则直接将编译好的第一模块对应的第二模块代码返回给浏览器。
本申请还提供了一种可选实施例,该可选实施例提出了一种基于热模块替换的按需编译的方法。该方案能够解决由于模块数量的增长导致编译时间过长,编译效率下降的问题。该方案首先将前端应用的代码模块划分为主模块和业务模块,模块划分的方式可以是依据用户对模块的使用率等等参数按照用户对应用的使用需求进行划分,将能够基本满足用户使用需求的模块划分为主模块在编译阶段进行编译,将用户使用较少的模块划分为业务模块在前端应用的访问阶段进行编译。
比如:将用户的使用率较高(较高可以但不限于指高于使用率阈值或者使用率由高到低排序的前几个等)的模块作为主模块,将用户的使用率较低(较低可以但不限于指低于使用率阈值或者使用率由高到低排序的后几个等)的模块作为业务模块。以视频应用为例,可以将用户的使用率较高的搜索模块,会员模块,首页模块,电视剧模块,综艺模块等划分为主模块,将除主模块之外的模块划分为业务模块。或者,也可以将用户的使用率较低的游戏模块,小说模块,音乐模块等划分为业务模块,将除业务模块之外的块划分为业务模块。
在前端编译开发阶段,只编译主模块,而忽略业务模块,在能够基本满足用户的使用需要的同时,也可以降低进入编译环节的模块数量,从而减少编译时长,节省前端应用在编译阶段消耗的时间。在访问前端应用时,根据URL路由匹配其对应的业务模块,然后只编译匹配的业务模块,并通过热模块替换更新应用代码,从而满足用户对前端应用的使用需求。
在本可选实施例中还提供了一种基于上述按需编译方法的应用访问方法,在前端应用的访问阶段按照用户的访问请求调用在前端应用的编译开发阶段已编译的主模块,或者当用户需要对在前端应用的编译开发阶段未编译的业务模块进行访问时对需要访问的业务模块进行编译再提供给用户进行访问。图3是根据本申请可选实施例的一种应用的访问方法的示意图,如图3所示,该流程包括以下步骤:
步骤1,业务模块声明:首先通过指定函数importModule(string id,stringpath)来声明业务模块。该函数没有任何代码逻辑,只是声明文件路径path上的模块为业务模块,并且指定id。
步骤2,js文件预处理函数:Webpack在编译源代码文件时,根据文件后缀,调用对应的预处理函数。该函数参数可以为string source,表示源代码文件的内容。Webpack读取所有文件,利用字符串匹配算法,将文件与importModule(string id,string path)匹配,并获取匹配成功的id和path,存放在编译器的符号表中。
步骤3,编译主模块:按照正常的前端编译流程,webpack只配置主模块的路径,因此只有主模块被编译。并将步骤2中符号表symbol table的内容写入到编译完成的对象中。在步骤4和步骤5中使用。
步骤4,按需编译过程:用户在浏览器地址栏输入,或者点击搜索引擎提供的链接地址访问网站时,服务器接收到Http请求,并将http请求头中的path字符串传递给编译器,编译器以此为id查询symbol table,找到定义业务模块的文件路径,并编译该模块。
步骤5,链接更新:修改主模块中symbol table,将业务模块id,对应的path更新为编译成功后的模块路径。
步骤6,业务模块渲染:主模块运行时,根据symbol table找到对应的编译成功的模块路径,并执行。
通过上述过程,利用用户每次只使用项目中一部分的功能的特点,采用按需编译(只编译业务需要的功能模块)的方案,可以显著减少编译时长,提高效率,从而加快编译速度,提高开发效率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述应用的访问方法的应用的访问装置。图4是根据本申请实施例的一种可选的应用的访问装置的示意图,如图4所示,该装置可以包括:
接收模块42,用于接收应用访问请求,其中,所述应用访问请求用于请求访问前端应用的第一模块;
第一查找模块44,用于从所述前端应用中包括的待编译模块中查找所述第一模块,其中,所述前端应用包括所述待编译模块和已编译模块,所述已编译模块为在编译过程中已编译的模块,所述待编译模块为在所述编译过程中未编译的模块;
第一编译模块46,用于在从所述待编译模块中查找到所述第一模块的情况下,编译所述第一模块,得到所述第一模块对应的第一模块代码;
第一返回模块48,用于响应所述应用访问请求返回所述第一模块对应的所述第一模块代码。
需要说明的是,该实施例中的接收模块42可以用于执行本申请实施例中的步骤S202,该实施例中的第一查找模块44可以用于执行本申请实施例中的步骤S204,该实施例中的第一编译模块46可以用于执行本申请实施例中的步骤S206,该实施例中的第一返回模块48可以用于执行本申请实施例中的步骤S208。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
通过上述模块,前端应用包括的模块被划分为待编译模块和已编译模块两种,在前端应用的编译过程中对部分模块进行编译得到已编译模块,并将待编译模块记录在前端应用中,待编译模块均是在需要被访问时进行编译得到其对应的第一模块代码返回给发起应用访问请求的访问方,在待编译模块需要被访问时对其进行编译,达到了前端应用的模块按需编译的目的,在前端应用的编译过程中只编译部分模块作为已编译模块,使得前期的编译时间能够缩短,从而实现了提高前端应用的编译过程中模块的编译效率的技术效果,进而解决了相关技术中前端应用的编译过程中模块的编译效率较低的技术问题。
作为一种可选的实施例,所述编译模块包括:
查找单元,用于从具有对应关系的待编译模块和模块路径中查找所述第一模块所对应的第一模块路径,其中,所述模块路径用于指示所述待编译模块的模块文件的存储路径;
编译单元,用于对所述第一模块路径所指示的模块文件进行编译,得到第一模块代码。
作为一种可选的实施例,所述装置还包括:
第一获取模块,用于在对所述第一模块路径所指示的模块文件进行编译,得到第一模块代码之后,获取所述第一模块代码对应的第二模块路径,其中,所述第二模块路径用于指示所述第一模块代码的存储路径;
处理模块,用于将所述第一模块代码保存到所述前端应用中,并使用具有对应关系的所述第一模块和所述第二模块路径更新所述具有对应关系的待编译模块和模块路径。
作为一种可选的实施例,所述装置还包括:
第二获取模块,用于在接收所述应用访问请求之前,获取模块标记信息,其中,所述模块标记信息用于从所述前端应用所包括的模块中标记所述待编译模块;
确定模块,用于确定所述前端应用的编译队列中的每个模块是否在所述模块标记信息中;
记录模块,用于在确定所述每个模块在所述模块标记信息中的情况下,记录具有对应关系的所述每个模块和所述每个模块的模块路径,得到模块列表;
第二编译模块,用于在确定所述每个模块不在所述模块标记信息中的情况下,编译所述每个模块,得到应用代码;
保存模块,用于将所述模块列表保存到所述应用代码中,得到所述前端应用。
作为一种可选的实施例,所述装置还包括:
第二查找模块,用于在从所述前端应用中包括的待编译模块中查找所述第一模块之后,在未查找到所述第一模块的情况下,查找所述第一模块对应的第二模块代码;
第二返回模块,用于响应所述应用访问请求返回所述第一模块对应的所述第二模块代码。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的另一个方面,还提供了一种用于实施上述应用的访问方法的服务器或终端。
图5是根据本申请实施例的一种终端的结构框图,如图5所示,该终端可以包括:一个或多个(图中仅示出一个)处理器501、存储器503、以及传输装置505,如图5所示,该终端还可以包括输入输出设备507。
其中,存储器503可用于存储软件程序以及模块,如本申请实施例中的应用的访问方法和装置对应的程序指令/模块,处理器501通过运行存储在存储器503内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用的访问方法。存储器503可包括高速随机存储器,还可以包括非易失性存储器,如磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器503可进一步包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置505用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置505包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置505为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器503用于存储应用程序。
处理器501可以通过传输装置505调用存储器503存储的应用程序,以执行下述步骤:
S1,接收应用访问请求,其中,所述应用访问请求用于请求访问前端应用的第一模块;
S2,从所述前端应用中包括的待编译模块中查找所述第一模块,其中,所述前端应用包括待编译模块和已编译模块,所述已编译模块为在编译过程中已编译的模块,所述待编译模块为在所述编译过程中未编译的模块;
S3,在从所述待编译模块中查找到所述第一模块的情况下,编译所述第一模块,得到所述第一模块对应的第一模块代码;
S4,响应所述应用访问请求返回所述第一模块对应的所述第一模块代码。
采用本申请实施例,提供了一种应用的访问的方案。前端应用包括的模块被划分为待编译模块和已编译模块两种,在前端应用的编译过程中对部分模块进行编译得到已编译模块,并将待编译模块记录在前端应用中,待编译模块均是在需要被访问时进行编译得到其对应的第一模块代码返回给发起应用访问请求的访问方,在待编译模块需要被访问时对其进行编译,达到了前端应用的模块按需编译的目的,在前端应用的编译过程中只编译部分模块作为已编译模块,使得前期的编译时间能够缩短,从而实现了提高前端应用的编译过程中模块的编译效率的技术效果,进而解决了相关技术中前端应用的编译过程中模块的编译效率较低的技术问题通。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图5所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图5其并不对上述电子装置的结构造成限定。例如,终端还可包括比图5中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图5所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行应用的访问方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,接收应用访问请求,其中,所述应用访问请求用于请求访问前端应用的第一模块;
S2,从所述前端应用中包括的待编译模块中查找所述第一模块,其中,所述前端应用包括待编译模块和已编译模块,所述已编译模块为在编译过程中已编译的模块,所述待编译模块为在所述编译过程中未编译的模块;
S3,在从所述待编译模块中查找到所述第一模块的情况下,编译所述第一模块,得到所述第一模块对应的第一模块代码;
S4,响应所述应用访问请求返回所述第一模块对应的所述第一模块代码。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种应用的访问方法,其特征在于,包括:
接收应用访问请求,其中,所述应用访问请求用于请求访问前端应用的第一模块;
从所述前端应用中包括的待编译模块中查找所述第一模块,其中,所述前端应用包括所述待编译模块和已编译模块,所述已编译模块为在编译过程中已编译的模块,所述待编译模块为在所述编译过程中未编译的模块;
在从所述待编译模块中查找到所述第一模块的情况下,编译所述第一模块,得到所述第一模块对应的第一模块代码;
响应所述应用访问请求返回所述第一模块对应的所述第一模块代码。
2.根据权利要求1所述的方法,其特征在于,编译所述第一模块,得到所述第一模块对应的第一模块代码包括:
从具有对应关系的待编译模块和模块路径中查找所述第一模块所对应的第一模块路径,其中,所述模块路径用于指示所述待编译模块的模块文件的存储路径;
对所述第一模块路径所指示的模块文件进行编译,得到第一模块代码。
3.根据权利要求2所述的方法,其特征在于,在对所述第一模块路径所指示的模块文件进行编译,得到第一模块代码之后,所述方法还包括:
获取所述第一模块代码对应的第二模块路径,其中,所述第二模块路径用于指示所述第一模块代码的存储路径;
将所述第一模块代码保存到所述前端应用中,并使用具有对应关系的所述第一模块和所述第二模块路径更新所述具有对应关系的待编译模块和模块路径。
4.根据权利要求1所述的方法,其特征在于,在接收所述应用访问请求之前,所述方法还包括:
获取模块标记信息,其中,所述模块标记信息用于从所述前端应用所包括的模块中标记所述待编译模块;
确定所述前端应用的编译队列中的每个模块是否在所述模块标记信息中;
在确定所述每个模块在所述模块标记信息中的情况下,记录具有对应关系的所述每个模块和所述每个模块的模块路径,得到模块列表;
在确定所述每个模块不在所述模块标记信息中的情况下,编译所述每个模块,得到应用代码;
将所述模块列表保存到所述应用代码中,得到所述前端应用。
5.根据权利要求1所述的方法,其特征在于,在从所述前端应用中包括的待编译模块中查找所述第一模块之后,所述方法还包括:
在未查找到所述第一模块的情况下,查找所述第一模块对应的第二模块代码;
响应所述应用访问请求返回所述第一模块对应的所述第二模块代码。
6.一种应用的访问装置,其特征在于,包括:
接收模块,用于接收应用访问请求,其中,所述应用访问请求用于请求访问前端应用的第一模块;
第一查找模块,用于从所述前端应用中包括的待编译模块中查找所述第一模块,其中,所述前端应用包括所述待编译模块和已编译模块,所述已编译模块为在编译过程中已编译的模块,所述待编译模块为在所述编译过程中未编译的模块;
第一编译模块,用于在从所述待编译模块中查找到所述第一模块的情况下,编译所述第一模块,得到所述第一模块对应的第一模块代码;
第一返回模块,用于响应所述应用访问请求返回所述第一模块对应的所述第一模块代码。
7.根据权利要求6所述的装置,其特征在于,所述编译模块包括:
查找单元,用于从具有对应关系的待编译模块和模块路径中查找所述第一模块所对应的第一模块路径,其中,所述模块路径用于指示所述待编译模块的模块文件的存储路径;
编译单元,用于对所述第一模块路径所指示的模块文件进行编译,得到第一模块代码。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第一获取模块,用于在对所述第一模块路径所指示的模块文件进行编译,得到第一模块代码之后,获取所述第一模块代码对应的第二模块路径,其中,所述第二模块路径用于指示所述第一模块代码的存储路径;
处理模块,用于将所述第一模块代码保存到所述前端应用中,并使用具有对应关系的所述第一模块和所述第二模块路径更新所述具有对应关系的待编译模块和模块路径。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至5任一项中所述的方法。
10.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行上述权利要求1至5任一项中所述的方法。
CN202010216087.1A 2020-03-25 2020-03-25 一种应用的访问方法和装置 Active CN111443906B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010216087.1A CN111443906B (zh) 2020-03-25 2020-03-25 一种应用的访问方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010216087.1A CN111443906B (zh) 2020-03-25 2020-03-25 一种应用的访问方法和装置

Publications (2)

Publication Number Publication Date
CN111443906A true CN111443906A (zh) 2020-07-24
CN111443906B CN111443906B (zh) 2023-09-05

Family

ID=71629625

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010216087.1A Active CN111443906B (zh) 2020-03-25 2020-03-25 一种应用的访问方法和装置

Country Status (1)

Country Link
CN (1) CN111443906B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112527306A (zh) * 2020-10-27 2021-03-19 百果园技术(新加坡)有限公司 项目开发中模块的独立化实现方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9134975B1 (en) * 2014-08-22 2015-09-15 International Business Machines Corporation Determining which computer programs are candidates to be recompiled after application of updates to a compiler
CN108897545A (zh) * 2018-06-29 2018-11-27 南昌华勤电子科技有限公司 代码编译方法及装置
CN109358841A (zh) * 2018-08-15 2019-02-19 中国平安人寿保险股份有限公司 网页应用开发编译方法、装置及存储设备、计算机设备
CN109375921A (zh) * 2018-08-15 2019-02-22 中国平安人寿保险股份有限公司 页面文件快速编译方法、装置及存储设备、计算机设备
CN110569035A (zh) * 2019-08-08 2019-12-13 数字广东网络建设有限公司 软件开发项目的代码编译方法、装置、设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9134975B1 (en) * 2014-08-22 2015-09-15 International Business Machines Corporation Determining which computer programs are candidates to be recompiled after application of updates to a compiler
CN108897545A (zh) * 2018-06-29 2018-11-27 南昌华勤电子科技有限公司 代码编译方法及装置
CN109358841A (zh) * 2018-08-15 2019-02-19 中国平安人寿保险股份有限公司 网页应用开发编译方法、装置及存储设备、计算机设备
CN109375921A (zh) * 2018-08-15 2019-02-22 中国平安人寿保险股份有限公司 页面文件快速编译方法、装置及存储设备、计算机设备
CN110569035A (zh) * 2019-08-08 2019-12-13 数字广东网络建设有限公司 软件开发项目的代码编译方法、装置、设备和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112527306A (zh) * 2020-10-27 2021-03-19 百果园技术(新加坡)有限公司 项目开发中模块的独立化实现方法、装置、设备及介质
CN112527306B (zh) * 2020-10-27 2024-05-28 百果园技术(新加坡)有限公司 项目开发中模块的独立化实现方法、装置、设备及介质

Also Published As

Publication number Publication date
CN111443906B (zh) 2023-09-05

Similar Documents

Publication Publication Date Title
CN110688598B (zh) 业务参数采集方法、装置、计算机设备和存储介质
CN102385594B (zh) 多核浏览器的内核控制方法和装置
CN102567516B (zh) 脚本加载方法及装置
US20120124028A1 (en) Unified Application Discovery across Application Stores
CN110245069B (zh) 页面版本的测试方法和装置、页面的展示方法和装置
CN108846753B (zh) 用于处理数据的方法和装置
US20140143647A1 (en) Method for improving browser cache by reducing duplicate stored content
CN111104635A (zh) 一种表格网页的生成方法和装置
US9652209B2 (en) Static analysis and reconstruction of deep link handling in compiled applications
CN104424199A (zh) 搜索方法和装置
CN110569108B (zh) 小游戏虚拟机执行环境的创建方法及相关产品
CN109145235B (zh) 用于解析网页的方法、装置及电子设备
CN103944944A (zh) 分享网页链接的方法、电子设备及***
CN106201562A (zh) 一种页面切换方法及装置
CN112099800A (zh) 代码数据的处理方法、装置和服务器
CN111803917A (zh) 资源的处理方法和装置
CN102375881A (zh) 内容签名通知
CN114328632A (zh) 基于位图的用户数据分析方法、装置及计算机设备
CN105653550A (zh) 网页过滤方法和装置
CN111443906A (zh) 一种应用的访问方法和装置
CN110018831B (zh) 程序处理方法、装置及计算机可读存储介质
CN113836451A (zh) 网页访问方法、装置、计算机设备和存储介质
CN111813816A (zh) 数据处理方法、装置、计算机可读存储介质和计算机设备
CN112181407B (zh) 业务实现处理方法及装置、***、电子设备和存储介质
CN103812908A (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