CN113282541A - 文件调用方法、装置和电子设备 - Google Patents
文件调用方法、装置和电子设备 Download PDFInfo
- Publication number
- CN113282541A CN113282541A CN202110628709.6A CN202110628709A CN113282541A CN 113282541 A CN113282541 A CN 113282541A CN 202110628709 A CN202110628709 A CN 202110628709A CN 113282541 A CN113282541 A CN 113282541A
- Authority
- CN
- China
- Prior art keywords
- project
- file
- sub
- main
- calling
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种文件调用方法、装置和电子设备,首先响应于文件调用请求,如果文件调用请求所调用的目标文件属于主工程单独使用的文件,从第一子工程中调用该目标文件;如果该目标文件属于主工程和第二子工程共用的文件,从该第二子工程中调用该目标文件。该方式中,通过设置第一子工程,将主工程单独使用的文件单独存放在第一子工程中,如果需要调用主工程单独使用的文件,直接从第一子工程中调用即可,不再将该主工程单独使用的文件,以及主工程和第二子工程共用的文件都存放在第二子工程中;分开存放文件的方式使文件的引用位置更加清晰,同时也有助于开发人员快速查找到所需要的文件,提高了开发效率,降低了开发成本。
Description
技术领域
本公开涉及软件开发技术领域,尤其是涉及一种文件调用方法、装置和电子设备。
背景技术
在移动端项目开发过程中,如果同一种方法或功能需要在多个位置使用,可以将这一方法或功能所对应的业务代码进行封装,得到相应的封装库文件,以封装库文件的形式在多个位置进行使用。相关技术中,如果所开发的项目是多工程项目,即在该项目中包含多个工程时,该多个工程通常包含一个主工程和至少一个子工程,对于其中一个子工程来说,该子工程中通常包含该子工程私有的封装库文件、主工程和该子工程共用的封装库文件,以及主工程单独需要的封装库文件,开发人员在项目开发过程中,通常需要查找封装库文件,由于该子工程所需要的封装库文件和主工程单独需要的封装库文件都存放在该子工程中,导致封装库文件的引用位置的清晰度较差,开发人员难以快速查找到所需要的封装库文件,降低了开发效率,增加了开发成本。
发明内容
本公开的目的在于提供一种文件调用方法、装置和电子设备,以提高开发效率,降低开发成本。
本公开提供的一种文件调用方法,预设项目中包括主工程、第一子工程和第二子工程,所述方法包括:响应于文件调用请求,如果所述文件调用请求所调用的目标文件属于所述主工程单独使用的文件,从所述第一子工程中调用所述目标文件;如果所述目标文件属于所述主工程和所述第二子工程共用的文件,从所述第二子工程中调用所述目标文件。
进一步的,所述第一子工程用于保存所述主工程单独使用的文件;所述第二子工程用于保存所述第二子工程单独使用的文件,以及所述主工程和所述第二子工程共用的文件。
进一步的,所述第一子工程中不包括业务代码;所述第二子工程中包括所述第二子工程对应的业务代码。
进一步的,所述第一子工程包括第一配置文件;所述第一配置文件用于记录所述第一子工程中保存的文件的配置信息;所述方法还包括:响应于文件新增请求,如果所述文件新增请求对应的新增文件属于所述主工程单独使用的文件,将所述新增文件的配置信息添加至所述第一配置文件中,将所述新增文件保存至所述第一子工程中。
进一步的,所述第二子工程包括多个,每个所述第二子工程包括与该第二子工程对应的第二配置文件;所述第二配置文件用于记录所述第二子工程中保存的文件的配置信息;所述方法还包括:针对每个所述第二子工程,如果所述新增文件属于所述主工程和该第二子工程共用的文件,或者属于该第二子工程单独使用的文件,将所述新增文件的配置信息添加至该第二子工程对应的第二配置文件中,将所述新增文件保存至该第二子工程中。
进一步的,所述主工程中保存有所述主工程单独使用的非公开文件;所述方法还包括:如果所述目标文件属于所述主工程单独使用的非公开文件,从所述主工程中调用所述目标文件。
本公开提供的一种文件调用装置,预设项目中包括主工程、第一子工程和第二子工程,所述装置包括:第一调用模块,用于响应于文件调用请求,如果所述文件调用请求所调用的目标文件属于所述主工程单独使用的文件,从所述第一子工程中调用所述目标文件;第二调用模块,用于如果所述目标文件属于所述主工程和所述第二子工程共用的文件,从所述第二子工程中调用所述目标文件。
进一步的,所述第一子工程用于保存所述主工程单独使用的文件;所述第二子工程用于保存所述第二子工程单独使用的文件,以及所述主工程和所述第二子工程共用的文件。
本公开提供的一种电子设备,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现上述任一项所述的文件调用方法。
本公开提供的一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述任一项所述的文件调用方法。
本公开提供的文件调用方法、装置和电子设备,首先响应于文件调用请求,如果文件调用请求所调用的目标文件属于主工程单独使用的文件,从第一子工程中调用该目标文件;如果该目标文件属于主工程和第二子工程共用的文件,从该第二子工程中调用该目标文件。该方式中,通过设置第一子工程,将主工程单独使用的文件单独存放在第一子工程中,如果需要调用主工程单独使用的文件,直接从第一子工程中调用即可,不再将该主工程单独使用的文件,以及主工程和第二子工程共用的文件都存放在第二子工程中;分开存放文件的方式使文件的引用位置更加清晰,同时也有助于开发人员快速查找到所需要的文件,提高了开发效率,降低了开发成本。
附图说明
为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开其中一种实施例提供的一种文件调用方法的流程图;
图2为本公开其中一种实施例提供的一种文件调用方法的流程图;
图3为本公开其中一种实施例提供的一种文件调用方法的流程图;
图4为本公开其中一种实施例提供的一种项目结构示意图;
图5为本公开其中一种实施例提供的一种项目结构示意图;
图6为本公开其中一种实施例提供的一种文件调用装置的结构示意图;
图7为本公开其中一种实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合实施例对本公开的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
在移动端项目开发过程中,经常使用到封装这一开发语言特性,即同一方法或功能需要在多个地方使用到时,可以把这一方法或功能所对应的业务代码进行封装,得到相应的封装库文件,以封装库文件的形式来使用。一般情况下,在移动端项目开发过程中,比如,在移动端的移动操作系统开发项目中,可以使用CocoaPods对使用到的封装库文件进行管理,可以在配置文件中具体引用等;其中,CocoaPods是一项应用级别的依赖管理器,可以针对Objective-C(一种在C语言的基础上加入面向特性扩充而成的编程语言)、Swift(一种编程语言)和其他任一在Objective-C动态运行时所运行的语言,可以为额外的封装库文件的管理提供标准的格式。
如果所开发的项目是单工程项目,在该单工程项目中使用多个封装库文件,一般不会产生什么影响,但是当所开发的项目是多工程项目时,即该项目由多个工程构成时,多个工程中通常包括一个主工程和至少一个子工程,例如,以子工程为子工程A为例,该子工程A作为主工程必不可少的部分,在主工程启动时需要提前完成加载,并嵌入到主工程中,该子工程A和主工程都使用了封装库文件,并且,子工程A和主工程所需要的封装库文件,全部在子工程A的配置文件中引入,对于所引用的封装库文件,无法确认该封装库文件是主工程必须的,还是子工程A必须的,导致封装库文件的引用位置的清晰度较差,当开发人员需要查找封装库文件时,难以快速查找到所需要的封装库文件,降低了开发效率,增加了开发成本。
基于此,本公开实施例提供了一种文件调用方法、装置和电子设备,该技术可以应用于对封装库文件进行存储和调用的应用中。
为便于理解,首先对本公开其中一种实施例所公开的一种文件调用方法进行详细介绍;该方法中,预设项目中包括主工程、第一子工程和第二子工程,该预设项目可以是移动端相关的开发项目,如移动端的移动操作系统开发项目等,也可以是其他开发项目等;该主工程通常是该项目的唯一标识,在一个项目中可以包括多个工程,但有且只有一个主工程,其余为子工程,在主工程启动时,多个子工程通常需要提前完成加载,本实施例以预设项目包括主工程、第一子工程和第二子工程为例进行说明,在该项目的整个框架结构中,主工程、第一子工程和第二子工程通常处于并行的目录中,该第一子工程和第二子工程中包含的内容并不相同,比如,该第一子工程中包含主工程单独使用的文件,该第二子工程中包含主工程和第二子工程共用的文件等。如图1所示,该方法包括如下步骤:
步骤S102,响应于文件调用请求,如果文件调用请求所调用的目标文件属于主工程单独使用的文件,从第一子工程中调用目标文件。
上述文件调用请求可以是当需要对文件进行调用时所生成的请求;上述目标文件可以理解为实际需要调用的文件,比如,该目标文件可以是需要调用的封装库文件等;上述主工程单独使用的文件可以理解为在该项目中,只需要在主工程中使用,在第二子工程中不需要使用的文件,该主工程单独使用的文件可以是第三方公开的文件,通常保存在第一子工程中,比如,以该目标文件是封装库文件为例,则该封装库文件可以是第三方公开的封装库文件,该封装库文件本身可以在主工程和子工程中使用,只是在本项目中,该封装库文件只需要在主工程中使用,在第二子工程中不需要使用,是主工程特有的封装库文件。在实际实现时,当接收到文件调用请求后,首先响应该文件调用请求,然后判断该文件调用请求所请求调用的目标文件是否属于主工程单独使用的文件,如果是,由于该主工程单独使用的文件预先保存在第一子工程中,这时可以直接从第一子工程中调用该目标文件。
步骤S104,如果目标文件属于主工程和第二子工程共用的文件,从第二子工程中调用目标文件。
在上述项目中,可能会存在一部分文件是在主工程和第二子工程中都需要使用的文件;在实际实现时,如果判断文件调用请求所请求调用的目标文件属于主工程和第二子工程都需要使用的文件,则从第二子工程中调用该目标文件;比如,以该目标文件是封装库文件为例,如果判断该封装库文件是主工程和第二子工程都需要使用的封装库文件,则该封装库文件通常预先保存在第二子工程中,当需要调用该封装库文件时,可以从该第二子工程中调用该封装库文件。
上述文件调用方法,首先响应于文件调用请求,如果文件调用请求所调用的目标文件属于主工程单独使用的文件,从第一子工程中调用该目标文件;如果该目标文件属于主工程和第二子工程共用的文件,从该第二子工程中调用该目标文件。该方式中,通过设置第一子工程,将主工程单独使用的文件单独存放在第一子工程中,如果需要调用主工程单独使用的文件,直接从第一子工程中调用即可,不再将该主工程单独使用的文件,以及主工程和第二子工程共用的文件都存放在第二子工程中;分开存放文件的方式使文件的引用位置更加清晰,同时也有助于开发人员快速查找到所需要的文件,提高了开发效率,降低了开发成本。
在一可选的实施方式中,该方法在上述实施例方法的基础上实现;该方法中,第一子工程用于保存主工程单独使用的文件;第二子工程用于保存第二子工程单独使用的文件,以及主工程和第二子工程共用的文件。第一子工程中不包括业务代码;第二子工程中包括第二子工程对应的业务代码。第一子工程包括第一配置文件;第一配置文件用于记录第一子工程中保存的文件的配置信息;第二子工程包括多个,每个第二子工程包括与该第二子工程对应的第二配置文件;第二配置文件用于记录第二子工程中保存的文件的配置信息;比如,以该文件是封装库文件为例,在实际实现时,上述第一子工程可以作为一种动态库容器,其本身不包含业务代码,只存放主工程单独使用的封装库文件;该第一子工程中包含的第一配置文件中,记录有主工程单独使用的封装库文件的配置信息,如该封装库文件的名称、大小等信息;上述第二子工程的数量可以是多个,每个第二子工程通常都是主工程必不可少的一部分,主工程能正常运行的前提条件是每个第二子工程能预先编译完好;每个第二子工程中包含该第二子工程的业务代码,以及该第二子工程独自需要的封装库文件,另外,每个第二子工程中还可以包含有主工程和该第二子工程同时需要的封装库文件,每个第二子工程包含的第二配置文件中,记录有该第二子工程独自需要的封装库文件的配置信息,以及该主工程和该第二子工程同时需要的封装库文件,如该封装库文件的名称、大小等信息;如图2所示,该方法包括如下步骤:
步骤S202,响应于文件调用请求,如果文件调用请求所调用的目标文件属于主工程单独使用的文件,从第一子工程中调用目标文件。
步骤S204,如果目标文件属于主工程和第二子工程共用的文件,从第二子工程中调用目标文件。
步骤S206,响应于文件新增请求,如果文件新增请求对应的新增文件属于主工程单独使用的文件,将新增文件的配置信息添加至第一配置文件中,将新增文件保存至第一子工程中。
上述文件新增请求可以是当需要增加项目中所使用的文件时所生成的请求;上述新增文件可以理解为实际需要新增加的文件,该文件新增请求对应的新增文件可能是主工程单独使用的文件,也可能是第二子工程单独使用的文件,也可能是第二子工程与主工程共用的文件;上述新增文件的配置信息可以包括该新增文件的名称、大小等信息。在实际实现时,当接收到文件新增请求后,首先响应该文件新增请求,然后判断该文件新增请求所请求新增的新增文件是否属于主工程单独使用的文件,如果是,则将该新增文件的配置信息添加至第一配置文件中,将该新增文件保存至第一子工程中;比如,以该新增文件是需要增加的封装库文件为例,如果主工程中需要添加新的封装库文件,即文件新增请求对应的新增文件属于主工程单独使用的封装库文件,则在第一子工程的第一配置文件中添加该新的封装库文件的配置信息,并将该新的封装库文件保存至第一子工程中。
步骤S208,针对每个第二子工程,如果新增文件属于主工程和该第二子工程共用的文件,或者属于该第二子工程单独使用的文件,将新增文件的配置信息添加至该第二子工程对应的第二配置文件中,将新增文件保存至该第二子工程中。
由于第二子工程可以包括多个,对于每个第二子工程来说,如果判断该文件新增请求所请求新增的新增文件属于主工程和指定第二子工程同时需要的文件,或者属于该指定第二子工程独自需要的文件,则将该新增文件的配置信息添加至该指定第二子工程对应的第二配置文件中,将新增文件保存至该指定第二子工程中;比如,以该新增文件是需要增加的封装库文件,多个第二子工程中的指定第二子工程以子工程A表示为例,如果该子工程A需要添加新的封装库文件,即文件新增请求对应的新增文件属于该子工程A单独使用的封装库文件,或者属于该子工程A与主工程共用的封装库文件,则在该子工程A的配置文件中添加该新的封装库文件的配置信息,将该新的封装库文件保存至子工程A中。
上述文件调用方法,首先响应于文件调用请求,如果文件调用请求所调用的目标文件属于主工程单独使用的文件,从第一子工程中调用目标文件。如果目标文件属于主工程和第二子工程共用的文件,从第二子工程中调用目标文件。然后响应于文件新增请求,如果文件新增请求对应的新增文件属于主工程单独使用的文件,将新增文件的配置信息添加至第一配置文件中,将新增文件保存至第一子工程中。针对每个第二子工程,如果新增文件属于主工程和该第二子工程共用的文件,或者属于该第二子工程单独使用的文件,将新增文件的配置信息添加至该第二子工程对应的第二配置文件中,将新增文件保存至该第二子工程中。该方式中,通过设置第一子工程,将主工程单独使用的文件单独存放在第一子工程中,如果需要调用主工程单独使用的文件,直接从第一子工程中调用即可,不再将该主工程单独使用的文件,以及主工程和第二子工程共用的文件都存放在第二子工程中;分开存放文件的方式使文件的引用位置更加清晰,同时也有助于开发人员快速查找到所需要的文件,提高了开发效率,降低了开发成本。
另外,当主工程需要新增单独使用的文件时,在第一子工程中增加即可,当第二子工程需要新增单独使用的文件,或者第二子工程与主工程需要新增共用的文件时,在相应的第二子工程中增加即可,该方式实现了按需导入,解决了导入语义不明的问题。
在一可选的实施方式中,该方法在上述实施例方法的基础上实现;该方法中,主工程中保存有主工程单独使用的非公开文件;该非公开文件可以理解为只能在该主工程中使用的私有文件,该私有文件是非公开的,不能被其他子工程使用;在实际实现时,主工程中通常包含有主工程的业务代码,以及该主工程的私有文件,如主工程私有的封装库文件等;如图3所示,该方法包括如下步骤:
步骤S302,响应于文件调用请求,如果文件调用请求所调用的目标文件属于主工程单独使用的文件,从第一子工程中调用目标文件。
步骤S304,如果目标文件属于主工程和第二子工程共用的文件,从第二子工程中调用目标文件。
步骤S306,如果目标文件属于主工程单独使用的非公开文件,从主工程中调用目标文件。
在实际实现时,由于主工程单独使用的非公开文件通常只保存在主工程中,当判断文件调用请求所请求调用的目标文件属于主工程单独使用的非公开文件时,则直接从该主工程中调用即可;比如,以该目标文件是封装库文件为例,如果判断封装库文件属于主工程私有的封装库文件,当需要调用该封装库文件时,可以直接从该主工程中调用。
上述文件调用方法,响应于文件调用请求,如果文件调用请求所调用的目标文件属于主工程单独使用的文件,从第一子工程中调用目标文件。如果目标文件属于主工程和第二子工程共用的文件,从第二子工程中调用目标文件。如果目标文件属于主工程单独使用的非公开文件,从主工程中调用目标文件。该方式中,通过设置第一子工程,将主工程单独使用的文件单独存放在第一子工程中,如果需要调用主工程单独使用的文件,直接从第一子工程中调用即可,不再将该主工程单独使用的文件,以及主工程和第二子工程共用的文件同时存放在第二子工程中;分开存放文件的方式使文件的引用位置更加清晰,同时也有助于开发人员快速查找到所需要的文件,提高了开发效率,降低了开发成本。
为进一步理解上述实施例,下面提供如图4所示的一种项目结构示意图,该项目结构示意图是采用本方案优化之前,通常采用的项目结构形式,如图4所示,该项目结构示意图中包括一个主工程、子工程A、子工程B和其他子工程,主工程和各个子工程处于并行的目录;其中,主工程可以包含一个或多个子工程,在主工程中,主工程本身会包含有主工程的业务代码以及主工程私有的封装库文件。子工程A中包含有子工程A的业务代码以及子工程A私有的封装库文件。此外,子工程A还作为本项目主工程的载体,承担主工程特有的封装库文件(对应上述主工程单独使用的文件)以及主工程和子工程A共用的封装库文件,如图4所示,该子工程A中的封装库A1、A2、A3等指的是该子工程A独自需要的封装库文件,或者是该子工程A和主工程同时需要的封装库文件;该子工程A中的封装库a1、a2、a3等指的是主工程独自需要,实际上与子工程A没有强相关关系的封装库文件,子工程A只是作为一个载体,提供主工程独自需要的封装库文件的存放位置。该子工程A是主工程必不可少的一部分,主工程能运行的前提条件是子工程A能编译完好。
同样,子工程B中包含有子工程B的业务代码以及子工程B私有的封装库文件。此外,子工程B还作为本项目主工程的载体,承担主工程特有的封装库文件,以及主工程和子工程B共用的封装库文件,如图4所示,该子工程B中的封装库B1、B2、B3等指的是该子工程B独自需要的封装库文件,或者是该子工程B和主工程同时需要的封装库文件;该子工程B中的封装库b1、b2、b3等指的是主工程独自需要,实际上与子工程B没有强相关关系的封装库文件,子工程B只是作为一个载体,提供主工程独自需要的封装库文件的存放位置。该子工程B也是主工程必不可少的一部分,主工程能运行的前提条件是子工程B能编译完好。项目中可能还存在其他子工程,如果还存在其他子工程,则其他子工程通常也和子工程A、子工程B一样,也会包含各自单独需要的封装库文件,以及该子工程和主工程同时需要的封装库文件,并且其他子工程预先编译完好也是主工程能正常运行的前提;具体可以参考上述子工程A或子工程B的相关描述,在此不再赘述。
下面提供如图5所示的一种项目结构示意图,该项目结构示意图是采用本方案优化后的项目结构形式,如图5所示,该项目结构示意图中包括一个主工程、子工程A、子工程B和其他子工程,主工程和各个子工程处于并行的目录;其中,主工程可以包含一个或多个子工程。在主工程中,主工程本身会包含有主工程的业务代码以及主工程私有的封装库文件。对于子工程A,与上述图4中的子工程A的不同之处在于,图5中的子工程A中已不包含主工程特有的封装库文件,通过编译和项目整理,将图4中原本在子工程A的配置文件中引入的主工程特有的封装库文件的配置信息,以及子工程A中的引入的主工程特有的封装库文件进行移除,实现了与子工程A的解耦。如图5中所示,该子工程A中的封装库A1、A2、A3等指的是该子工程A独自需要的封装库文件,或者是该子工程A和主工程同时需要的封装库文件;后续如果需要添加新的封装库文件,该新的封装库文件必须是子工程A特有的,即该子工程A独自需要的封装库文件才会添加在子工程A中;或者是该子工程A和主工程共用的封装库文件,即该子工程A和主工程同时需要的封装库文件才会添加在子工程A中。
图5中的子工程B作为一种动态库容器,其本身不包含业务代码,只用于存放主工程单独使用的封装库文件。该子工程B可以是在图4所示的项目结构中新建的一个子工程,再将图4中各个子工程中所包含的主工程单独使用的封装库文件转移至该新建的子工程B中即可,得到图5中的项目结构示意图。比如,以图4中的子工程A为例,可以将图4中子工程A中的封装库a1、a2、a3等转移至该新建的子工程B中,后续如果主工程需要添加新的封装库文件,直接在该新建的子工程B的配置文件中新增即可,不需要在子工程A等其他子工程中新增;如果各个子工程需要添加新的封装库文件,在相应的各个子工程的配置文件中新增即可,实现了按需导入,解决了导入语义不明的问题。
采用本方案优化后的项目结构形式,在不影响编译的情况下,通过拆分现有的引入方式,使主工程和子工程A等各个子工程所需要的封装库文件在独立的配置文件中引入,引入位置更加清晰明了,且位置准确;通过该优化后的项目结构形式,可以解决在图4的子工程A中添加新的封装库文件所产生的语义不明的问题,即由于图4中的子工程A中包含有子工程A私有的封装库文件、主工程特有的封装库文件,以及主工程和子工程A共用的封装库文件,如果在图4的子工程A中添加了新的封装库文件,无法区分该新的封装库文件是主工程需要的还是子工程A需要的;同样,也可以解决在图4的子工程B中添加新的封装库文件所产生的语义不明的问题,即由于图4中的子工程B中包含有子工程B私有的封装库文件、主工程特有的封装库文件,以及主工程和子工程B共用的封装库文件,如果在图4的子工程B中添加了新的封装库文件,无法区分该新的封装库文件是主工程需要的还是子工程B需要的;对于图4中存在的其他子工程,也同样可以解决在其他子工程中添加新的封装库文件语义不明的问题。
上述采用本方案优化后的项目结构形式,将子工程B剥离出来,子工程B本身不再包含业务代码,只是作为一个空壳,嵌入到主工程中,子工程B中包含主工程单独使用的封装库文件,这些封装库文件之前存放在子工程A、子工程B或其他子工程中。以子工程A为例,在对项目结构优化后,在子工程A中,只存在子工程A单独使用的封装库文件,以及子工程A和主工程共同需要的封装库,不再存放主工程单独使用的封装库文件。对于新增封装库文件,如果该新增封装库文件是主工程单独使用的封装库文件,只需在子工程B的配置中新增即可,不需要影响到子工程A和其他子工程,由于子工程A本身具有业务代码,通过移除子工程A中,与子工程A不相关的封装库文件,实现了对子工程A的解耦;如果该新增封装库文件是其他子工程单独使用的封装库文件,或者是其他子工程与主工程共用的封装库文件,在相应的子工程的配置文件中新增该新增封装库文件的配置信息,将该新增封装库文件保存至相应的子工程中即可。
另外,该优化后的项目结构形式更便于对项目进行管理和规范,比如,如果采用优化前的项目结构形式,由于该子工程A中保存有子工程A独自需要的封装库文件,子工程A和主工程同时需要的封装库文件,即A1、A2、A3等,还保存有主工程单独使用的封装库文件a1、a2、a3等,如果开发人员需要对子工程A进行替换,由于子工程A中包含了较多的封装库文件,导致对子工程A进行替换时的工作量较大,降低了开发人员的工作效率;如果采用优化后的项目结构形式,由于子工程A中不再保存主工程单独使用的封装库文件a1、a2、a3等,从而可以减少子工程A中所包含的封装库文件的数量,降低了对子工程A进行替换时的工作量,提升了开发人员的工作效率。
为方便理解,下面基于上述图4和图5中的项目结构示意图,对第一子工程的创建过程进一步说明,具体的,可以在已有项目中,首先新建第一子工程,并为该第一子工程设置好名称,然后建立该第一子工程与该项目中主工程的关联关系,确保每次主工程编译之前可以加载新建的该第一子工程,并对该第一子工程进行编译,在第一子工程和其他已有子工程都编译完好后,才能保证主工程的正常运行;该新建的第一子工程作为一种动态库容器,其本身不包含业务代码,只用于存放主工程单独使用的文件,如,存放主工程特有的封装库文件,可以将其他已有子工程中所包含的主工程单独使用的封装库文件转移至该新建的第一子工程中,后续如果主工程需要添加新的封装库文件,直接在该新建的第一子工程中新增即可;当开发人员需要查找主工程单独使用的文件时,直接从该第一子工程中查找即可,不需要再从其他子工程中一一查找,从而可以提高开发人员的开发效率,降低开发成本。
本公开其中一种实施例提供了一种文件调用装置的结构示意图,该装置中,预设项目中包括主工程、第一子工程和第二子工程,如图6所示,该装置包括:第一调用模块60,用于响应于文件调用请求,如果文件调用请求所调用的目标文件属于主工程单独使用的文件,从第一子工程中调用目标文件;第二调用模块61,用于如果目标文件属于主工程和第二子工程共用的文件,从第二子工程中调用目标文件。
上述文件调用装置,首先响应于文件调用请求,如果文件调用请求所调用的目标文件属于主工程单独使用的文件,从第一子工程中调用该目标文件;如果该目标文件属于主工程和第二子工程共用的文件,从该第二子工程中调用该目标文件。该装置中,通过设置第一子工程,将主工程单独使用的文件单独存放在第一子工程中,如果需要调用主工程单独使用的文件,直接从第一子工程中调用即可,不再将该主工程单独使用的文件,以及主工程和第二子工程共用的文件都存放在第二子工程中;分开存放文件的方式使文件的引用位置更加清晰,同时也有助于开发人员快速查找到所需要的文件,提高了开发效率,降低了开发成本。
在一可选的实施方式中,第一子工程用于保存主工程单独使用的文件;第二子工程用于保存第二子工程单独使用的文件,以及主工程和第二子工程共用的文件。
在一可选的实施方式中,第一子工程中不包括业务代码;第二子工程中包括第二子工程对应的业务代码。
在一可选的实施方式中,第一子工程包括第一配置文件;第一配置文件用于记录第一子工程中保存的文件的配置信息;该装置还用于:响应于文件新增请求,如果文件新增请求对应的新增文件属于主工程单独使用的文件,将新增文件的配置信息添加至第一配置文件中,将新增文件保存至第一子工程中。
在一可选的实施方式中,第二子工程包括多个,每个第二子工程包括与该第二子工程对应的第二配置文件;第二配置文件用于记录第二子工程中保存的文件的配置信息;该装置还用于:针对每个第二子工程,如果新增文件属于主工程和该第二子工程共用的文件,或者属于该第二子工程单独使用的文件,将新增文件的配置信息添加至该第二子工程对应的第二配置文件中,将新增文件保存至该第二子工程中。
在一可选的实施方式中,主工程中保存有主工程单独使用的非公开文件;该装置还用于:如果目标文件属于主工程单独使用的非公开文件,从主工程中调用目标文件。
本公开其中一种实施例所提供的文件调用装置,其实现原理及产生的技术效果和前述文件调用方法实施例相同,为简要描述,文件调用装置实施例部分未提及之处,可参考前述文件调用方法实施例中相应内容。
本公开实施例还提供了一种电子设备,参见图7所示,该电子设备包括处理器130和存储器131,该存储器131存储有能够被处理器130执行的机器可执行指令,该处理器130执行机器可执行指令以实现上述文件调用方法。
进一步地,图7所示的电子设备还包括总线132和通信接口133,处理器130、通信接口133和存储器131通过总线132连接。
其中,存储器131可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口133(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线132可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器130可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器130中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器130可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器131,处理器130读取存储器131中的信息,结合其硬件完成前述实施例的方法的步骤。
本公开实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述文件调用方法,具体实现可参见方法实施例,在此不再赘述。
本公开实施例所提供的文件调用方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种文件调用方法,其特征在于,预设项目中包括主工程、第一子工程和第二子工程,所述方法包括:
响应于文件调用请求,如果所述文件调用请求所调用的目标文件属于所述主工程单独使用的文件,从所述第一子工程中调用所述目标文件;
如果所述目标文件属于所述主工程和所述第二子工程共用的文件,从所述第二子工程中调用所述目标文件。
2.根据权利要求1所述的方法,其特征在于,所述第一子工程用于保存所述主工程单独使用的文件;
所述第二子工程用于保存所述第二子工程单独使用的文件,以及所述主工程和所述第二子工程共用的文件。
3.根据权利要求1所述的方法,其特征在于,所述第一子工程中不包括业务代码;所述第二子工程中包括所述第二子工程对应的业务代码。
4.根据权利要求1所述的方法,其特征在于,所述第一子工程包括第一配置文件;所述第一配置文件用于记录所述第一子工程中保存的文件的配置信息;所述方法还包括:
响应于文件新增请求,如果所述文件新增请求对应的新增文件属于所述主工程单独使用的文件,将所述新增文件的配置信息添加至所述第一配置文件中,将所述新增文件保存至所述第一子工程中。
5.根据权利要求4所述的方法,其特征在于,所述第二子工程包括多个,每个所述第二子工程包括与该第二子工程对应的第二配置文件;所述第二配置文件用于记录所述第二子工程中保存的文件的配置信息;所述方法还包括:
针对每个所述第二子工程,如果所述新增文件属于所述主工程和该第二子工程共用的文件,或者属于该第二子工程单独使用的文件,将所述新增文件的配置信息添加至该第二子工程对应的第二配置文件中,将所述新增文件保存至该第二子工程中。
6.根据权利要求1所述的方法,其特征在于,所述主工程中保存有所述主工程单独使用的非公开文件;所述方法还包括:
如果所述目标文件属于所述主工程单独使用的非公开文件,从所述主工程中调用所述目标文件。
7.一种文件调用装置,其特征在于,预设项目中包括主工程、第一子工程和第二子工程,所述装置包括:
第一调用模块,用于响应于文件调用请求,如果所述文件调用请求所调用的目标文件属于所述主工程单独使用的文件,从所述第一子工程中调用所述目标文件;
第二调用模块,用于如果所述目标文件属于所述主工程和所述第二子工程共用的文件,从所述第二子工程中调用所述目标文件。
8.根据权利要求7所述的装置,其特征在于,所述第一子工程用于保存所述主工程单独使用的文件;
所述第二子工程用于保存所述第二子工程单独使用的文件,以及所述主工程和所述第二子工程共用的文件。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1-6任一项所述的文件调用方法。
10.一种机器可读存储介质,其特征在于,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现权利要求1-6任一项所述的文件调用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110628709.6A CN113282541B (zh) | 2021-06-04 | 2021-06-04 | 文件调用方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110628709.6A CN113282541B (zh) | 2021-06-04 | 2021-06-04 | 文件调用方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113282541A true CN113282541A (zh) | 2021-08-20 |
CN113282541B CN113282541B (zh) | 2023-08-11 |
Family
ID=77283645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110628709.6A Active CN113282541B (zh) | 2021-06-04 | 2021-06-04 | 文件调用方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113282541B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117931755A (zh) * | 2024-03-22 | 2024-04-26 | 上海合见工业软件集团有限公司 | 批量导入封装库的方法、装置、设备和介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006301898A (ja) * | 2005-04-20 | 2006-11-02 | Net Five Star Inc | プロジェクト管理装置及びその方法 |
CN104461569A (zh) * | 2014-12-26 | 2015-03-25 | 东南大学 | 一种基于matlab的c/c++程序生成辅助方法 |
JP2016012272A (ja) * | 2014-06-30 | 2016-01-21 | 株式会社日立製作所 | 業務処理システムおよび業務処理方法 |
WO2017185606A1 (zh) * | 2016-04-29 | 2017-11-02 | 乐视控股(北京)有限公司 | 基于overlay机制的APK开发方法及系统 |
CN108681491A (zh) * | 2018-05-04 | 2018-10-19 | 武汉极意网络科技有限公司 | 一种文件解耦方法及系统 |
CN111324373A (zh) * | 2018-12-13 | 2020-06-23 | 北京奇虎科技有限公司 | 多个工程文件上传代码仓库的方法及装置、计算设备 |
CN111443921A (zh) * | 2020-03-27 | 2020-07-24 | 中国平安财产保险股份有限公司 | web前端项目的分包部署方法、系统和计算机设备 |
CN111459503A (zh) * | 2020-03-30 | 2020-07-28 | 北京顺达同行科技有限公司 | web前端项目部署方法、装置、服务器及存储介质 |
CN111796860A (zh) * | 2020-06-28 | 2020-10-20 | 中国工商银行股份有限公司 | 微前端方案实现方法及装置 |
WO2021056823A1 (zh) * | 2019-09-24 | 2021-04-01 | 网易(杭州)网络有限公司 | 系统调用方法、装置和电子设备 |
KR102243256B1 (ko) * | 2020-05-13 | 2021-04-21 | 박호원 | 기상청의 기후 정보에 기초하여 건설 공정을 스케줄링하는 방법 및 그를 이용한 서버 |
-
2021
- 2021-06-04 CN CN202110628709.6A patent/CN113282541B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006301898A (ja) * | 2005-04-20 | 2006-11-02 | Net Five Star Inc | プロジェクト管理装置及びその方法 |
JP2016012272A (ja) * | 2014-06-30 | 2016-01-21 | 株式会社日立製作所 | 業務処理システムおよび業務処理方法 |
CN104461569A (zh) * | 2014-12-26 | 2015-03-25 | 东南大学 | 一种基于matlab的c/c++程序生成辅助方法 |
WO2017185606A1 (zh) * | 2016-04-29 | 2017-11-02 | 乐视控股(北京)有限公司 | 基于overlay机制的APK开发方法及系统 |
CN108681491A (zh) * | 2018-05-04 | 2018-10-19 | 武汉极意网络科技有限公司 | 一种文件解耦方法及系统 |
CN111324373A (zh) * | 2018-12-13 | 2020-06-23 | 北京奇虎科技有限公司 | 多个工程文件上传代码仓库的方法及装置、计算设备 |
WO2021056823A1 (zh) * | 2019-09-24 | 2021-04-01 | 网易(杭州)网络有限公司 | 系统调用方法、装置和电子设备 |
CN111443921A (zh) * | 2020-03-27 | 2020-07-24 | 中国平安财产保险股份有限公司 | web前端项目的分包部署方法、系统和计算机设备 |
CN111459503A (zh) * | 2020-03-30 | 2020-07-28 | 北京顺达同行科技有限公司 | web前端项目部署方法、装置、服务器及存储介质 |
KR102243256B1 (ko) * | 2020-05-13 | 2021-04-21 | 박호원 | 기상청의 기후 정보에 기초하여 건설 공정을 스케줄링하는 방법 및 그를 이용한 서버 |
CN111796860A (zh) * | 2020-06-28 | 2020-10-20 | 中国工商银行股份有限公司 | 微前端方案实现方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117931755A (zh) * | 2024-03-22 | 2024-04-26 | 上海合见工业软件集团有限公司 | 批量导入封装库的方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113282541B (zh) | 2023-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190324772A1 (en) | Method and device for processing smart contracts | |
CN110321131B (zh) | 业务组件打包方法、系统及服务器 | |
CN113190294A (zh) | Linux系统调用Android HIDL接口的方法、装置及存储介质 | |
CN111736913B (zh) | 类加载方法和装置 | |
CN112667405B (zh) | 信息处理方法、装置、设备及存储介质 | |
CN112463123A (zh) | 任务编译方法、装置、网络节点、系统及存储介质 | |
CN112037061A (zh) | 区块链中交易的处理方法、装置、电子设备及存储介质 | |
CN111338716A (zh) | 基于规则引擎的数据处理方法、装置及终端设备 | |
CN115827100A (zh) | 一种工业软件微服务合并的方法及系统 | |
CN111679852A (zh) | 一种冲突依赖库的检测方法及装置 | |
CN113282541A (zh) | 文件调用方法、装置和电子设备 | |
CN109408256B (zh) | 应用调用方法和装置 | |
CN111240772A (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
CN108228842B (zh) | Docker镜像库文件存储方法、终端、设备以及存储介质 | |
CN116483477A (zh) | 一种api调用方法及装置 | |
CN106778270B (zh) | 一种恶意应用程序的检测方法及系统 | |
CN111045746A (zh) | 代码扩展方法和框架 | |
CN114791884A (zh) | 测试环境的构建方法、装置、存储介质及电子设备 | |
CN113010206A (zh) | 一种web应用系统的容器化方法、系统及装置 | |
CN112130900A (zh) | 一种bmc的用户信息管理方法、系统、设备以及介质 | |
CN113986379B (zh) | 一种应用启动方法、装置、计算机设备和存储介质 | |
CN109194734A (zh) | 消息推送方法、装置、服务器及可读存储介质 | |
CN114371852B (zh) | 一种编译方法及装置 | |
CN113687973B (zh) | 一种日志动态化输出的控制方法、设备及介质 | |
CN111209056B (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 |