CN108845800A - 一种组件扩展功能的实现方法、装置、设备及存储介质 - Google Patents
一种组件扩展功能的实现方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN108845800A CN108845800A CN201810503377.7A CN201810503377A CN108845800A CN 108845800 A CN108845800 A CN 108845800A CN 201810503377 A CN201810503377 A CN 201810503377A CN 108845800 A CN108845800 A CN 108845800A
- Authority
- CN
- China
- Prior art keywords
- expansion module
- component
- module
- modulemanager
- configuration file
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种组件扩展功能的实现方法、装置、设备及存储介质,该方法包括:基于模块管理组件ModuleManager中包含的公共逻辑数据生成扩展模块;将扩展模块配置至配置文件中;通过ModuleManager判断配置文件中是否配置有目标扩展模块,其中,第一脚本语言组件注册于原生***;基于第二脚本语言组件,通过目标扩展模块调用第一脚本语言组件以进行相应业务操作;本发明的方法、装置、设备及存储介质,该应用程序通过ModuleManager生成扩展模块,而且,因为模块管理组件包括用于生成扩展模块的公共逻辑数据。所以,在该应用程序因更新迭代而需要生成不同的扩展模块时,可直接调用该公用逻辑数据即可,而无需编写重复编写这些公共逻辑数据,提高了代码容错性。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种组件扩展功能的实现方法、装置、设备及存储介质。
背景技术
随着互联网技术和智能终端技术的发展,各种应用已经普及到大众生活的方方面面,例如,观影、购物、支付、社交、提供各种资讯等等。目前这些智能终端的应用常采用本地应用(Native App)实现,本地应用是通过使用原生操作***提供的API(ApplicationProgramming Interface,应用程序编程接口)编程实现,可以保证应用的高性能和良好的交互体验。
在现有的Native App更新迭代过程中,Native App页面是通过网络视图webview加载统一资源定位符url而生成的页面。具体的,通过Native App的更新迭代,Native App页面均需要通过webview加载javaScript的方式进行绘制,这就使得许多的Native App页面需要去调用java代码,比如说调用安卓***android的数据库、访问网络、日志打印、以及android平台封装完善的分享组件等等。
但是,目前开发人员只是根据每次Native App迭代更新的需求以通过javaScript进行编写相应的项目模块的数据,这也就导致每次的更新迭代都需要重新写很多重复的功能代码,使得每个页面的代码容错性降低。
发明内容
本发明的主要目的在于提出一种组件扩展功能的实现方法、装置、设备及存储介质,其克服了现有技术中应用程序在进行迭代更新时需要重复编写公共逻辑代码的问题。
根据本发明的第一个方面,提供了一种组件扩展功能的实现方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:基于模块管理组件ModuleManager中包含的公共逻辑数据生成扩展模块;初始化软件开发工具包,以将所述扩展模块配置至配置文件中;当第二脚本语言组件基于目标扩展模块访问第一脚本语言组件时,通过所述ModuleManager判断所述配置文件中是否配置有所述目标扩展模块,其中,所述第一脚本语言组件注册于原生***;在确定所述配置文件中配置有所述目标扩展模块的情况下,则基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
可选的,所述配置文件中包含用于存储所述配置文件中的扩展模块的唯一性标识的清单列表;所述通过ModuleManager判断所述配置文件中是否配置有所述目标扩展模块,包括:通过所述ModuleManager查询所述清单列表,判断所述清单列表中是否存储有所述目标扩展模块的唯一性标识;若是,则确定所述配置文件中配置有所述目扩展模块。
可选的,所述唯一性标识包括所述扩展模块的名称。
可选的,在确定所述配置文件中配置有所述目标扩展模块的情况下,所述方法还包括:通过所述ModuleManager向所述第二脚本语言组件反馈提示信息,以确定基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
根据本发明的第二个方面,提供了一种组件扩展功能的实现装置,包含于基于混合开发模式所开发的应用程序中,所述装置包括:
生成模块,用于基于模块管理组件ModuleManager中包含的公共逻辑数据生成扩展模块;配置模块,用于初始化软件开发工具包,以将所述扩展模块配置至配置文件中;判断模块,用于当第二脚本语言组件基于目标扩展模块访问第一脚本语言组件时,通过所述ModuleManager判断所述配置文件中是否配置有所述目标扩展模块,其中,所述第一脚本语言组件注册于原生***;调用模块,用于在确定所述配置文件中配置有所述目标扩展模块的情况下,则基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
可选的,所述配置文件中包含用于存储所述配置文件中的扩展模块的唯一性标识的清单列表;所述判断模块具体用于:通过所述ModuleManager查询所述清单列表,判断所述清单列表中是否存储有所述目标扩展模块的唯一性标识;若是,则确定所述配置文件中配置有所述目扩展模块。
可选的,所述唯一性标识包括所述扩展模块的名称。
可选的,所述装置还包括:提示模块,用于在确定所述配置文件中配置有所述目标扩展模块的情况下,通过所述ModuleManager向所述第二脚本语言组件反馈提示信息,以确定基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
根据本发明的第三个方面,提供了一种电子设备,包括处理器和存储器;
所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种组件扩展功能的实现方法。
根据本发明的第四个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的一种组件扩展功能的实现方法。
本发明有益效果如下:该应用程序通过模块管理组件ModuleManager生成扩展模块,而且,因为所述模块管理组件包括用于生成所述扩展模块的公共逻辑数据。所以,在该应用程序因更新迭代而需要生成不同的扩展模块时,可直接调用该公用逻辑数据即可,而无需编写重复编写这些公共逻辑数据,提高了代码容错性。
此外,该应用程序通过ModuleManager生成扩展模块,即:实现了将该生成的扩展模块封装于该模块管理组件ModuleManager。而在该应用程序使用封装的扩展模块后,也减少了第二脚本语言组件中扩展模块调用原生平台的调用速度,当然,也增加了页面渲染速度,让用户更加快捷的看到了页面,节省了用户的时间成本。而且,通过扩展模块的封装可以更有效提升开发人员对扩展模块的灵活配置和修改,从而让扩展模块的代码达到高内聚,低耦合。
附图说明
图1为本发明第一实施例一种组件扩展功能的实现方法的流程框图;
图2为本发明第二实施例一种组件扩展功能的实现方法的流程框图;
图3为本发明第三实施例一种组件扩展功能的实现方法的流程框图;
图4为本发明第四实施例一种组件扩展功能的实现方法的流程框图;
图5为本发明第四实施例一种组件扩展功能的实现方法中扩展模块实现相应协议的示意图;
图6为本发明第五实施例一种组件扩展功能的实现装置的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
为了便于理解本发明实施例,下面通过几个具体实施例对本发明的实施过程进行详细的阐述。
本发明第一实施例提供一种组件扩展功能的实现方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:基于模块管理组件ModuleManager中包含的公共逻辑数据生成扩展模块;初始化软件开发工具包,以将所述扩展模块配置至配置文件中;当第二脚本语言组件基于目标扩展模块访问第一脚本语言组件时,通过所述ModuleManager判断所述配置文件中是否配置有所述目标扩展模块,其中,所述第一脚本语言组件注册于原生***;在确定所述配置文件中配置有所述目标扩展模块的情况下,则基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
就此,该应用程序通过模块管理组件ModuleManager生成扩展模块,而且,因为所述模块管理组件包括用于生成所述扩展模块的公共逻辑数据。所以,在该应用程序因更新迭代而需要生成不同的扩展模块时,可直接调用该公用逻辑数据即可,而无需编写重复编写这些公共逻辑数据,提高了代码容错性。
此外,该应用程序通过模块管理组件ModuleManager生成扩展模块,即:实现了将该生成的扩展模块封装于该模块管理组件ModuleManager。而在该应用程序使用封装的扩展模块后,也减少了第二脚本语言组件中扩展模块调用原生平台的调用速度,当然,也增加了页面渲染速度,让用户更加快捷的看到了页面,节省了用户的时间成本。而且,通过扩展模块的封装可以更有效提升开发人员对扩展模块的灵活配置和修改,从而让扩展模块的代码达到高内聚,低耦合。
图1为本发明第一实施例一种组件扩展功能的实现方法的流程框图。根据图1所示,本发明第一实施例提供了一种组件扩展功能的实现方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
S11:基于模块管理组件ModuleManager中包含的公共逻辑数据生成扩展模块;
在本实施例中,模块管理组件ModuleManager包含有用于构成各个扩展模块的公共逻辑数据,而且,在本实施例中,应用程序通过ModuleManager中的公共逻辑数据以生成扩展模块,从而实现将生成的扩展模块封装至模块管理组件ModuleManager。而且,在本实施例中,该公共逻辑数据即为逻辑代码。
S12:初始化软件开发工具包,以将所述扩展模块配置至配置文件中;
应用程序通过初始化开发工具包SDK,以将所述扩展模块配置至配置文件中。其中,该配置文件可由人为配置,当然,也可由装载有该应用程序的终端从服务端获取,进一步的,也可由装载有该应用程序的终端通过用于热更新的动态化框架从服务端动态获取。
在本实施例中,该配置文件包括布局文件XML,而且,该布局文件XML示范性的设置为extensible_config.xml文件。
S13:当第二脚本语言组件基于目标扩展模块访问第一脚本语言组件时,通过所述ModuleManager判断所述配置文件中是否配置有所述目标扩展模块,其中,所述第一脚本语言组件注册于原生***;若配置有,则执行步骤S14:否则,执行步骤S15。
在本实施例中,当第二脚本语言组件基于目标扩展模块访问第一脚本语言组件时,该应用程序需要通过所述ModuleManager判断所述配置文件中是否配置有所述目标扩展模块。即:在该应用程序被启动时,该应用程序需要通过所述ModuleManager判断所述配置文件中是否配置有所述目标扩展模块。
可选的,在该应用程序需要通过所述ModuleManager判断所述配置文件中是否配置有所述目标扩展模块之前,本发明实施例还包括以下步骤:
应用程序通过第一脚本语言组件读取配置文件中的目标扩展模块。
其中,第一脚本语言组件注册于原生***。另外,若该第一脚本语言组件安装于安卓***内,则该第一脚本语言组件可示范性的设置为安卓平台android。
即:在本实施例中,应用程序通过安卓平台读取extensible_config.xml文件中的目标扩展模块。然后,该应用程序需要通过所述ModuleManager判断从所述配置文件中读取的扩展模块是否包括所述目标扩展模块。
在本实施例中,并不对构建第一脚本语言组件的第一脚本语言的种类进行限定,只需其满足本发明实施例的要求即可,如:该第一脚本语言为Java。
可选的,所述第二脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的程序所实现的功能相对应的非原生组件。
在本实施例中,并不对构建第二脚本语言组件的第二脚本语言的种类进行限定,只需其满足本发明实施例的要求即可,如:该第二脚本语言为直译式脚本语言JavaScript。
S14:在确定所述配置文件中配置有所述目标扩展模块的情况下,则基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
在确定所述配置文件中配置有所述目标扩展模块的情况下,则应用程序基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
具体的,若目标扩展模块是进行网络访问的模块,则应用程序基于所述第二脚本语言组件,通过所述目标扩展模块调用原生平台进行网络访问。
S15:在确定所述配置文件中没有配置该目标扩展模块的情况下,则应用程序不进行任何处理。
就此,该应用程序通过模块管理组件ModuleManager生成扩展模块,而且,因为所述模块管理组件包括用于生成所述扩展模块的公共逻辑数据。所以,在该应用程序因更新迭代而需要生成不同的扩展模块时,可直接调用该公用逻辑数据即可,而无需编写重复编写这些公共逻辑数据,提高了代码容错性。
此外,该应用程序通过模块管理组件ModuleManager生成扩展模块,即:实现了将该生成的扩展模块封装于该模块管理组件ModuleManager。而在该应用程序使用封装的扩展模块后,也减少了第二脚本语言组件中扩展模块调用原生平台的调用速度,当然,也增加了页面渲染速度,让用户更加快捷的看到了页面,节省了用户的时间成本。而且,通过扩展模块的封装可以更有效提升开发人员对扩展模块的灵活配置和修改,从而让扩展模块的代码达到高内聚,低耦合。
图2为本发明第二实施例一种组件扩展功能的实现方法的流程框图。根据图2所示,本发明第二实施例提供了一种组件扩展功能的实现方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
S21:基于模块管理组件ModuleManager中包含的公共逻辑数据生成扩展模块;
在本实施例中,模块管理组件ModuleManager包含有用于构成各个扩展模块的公共逻辑数据,而且,在本实施例中,应用程序通过ModuleManager中的公共逻辑数据以生成扩展模块,从而实现将生成的扩展模块封装至模块管理组件ModuleManager。而且,在本实施例中,该公共逻辑数据即为逻辑代码。
S22:初始化软件开发工具包,以将所述扩展模块配置至配置文件中;
应用程序通过初始化开发工具包SDK,以将所述扩展模块配置至配置文件中。其中,该配置文件可由人为配置,当然,也可由装载有该应用程序的终端从服务端获取,进一步的,也可由装载有该应用程序的终端通过用于热更新的动态化框架从服务端动态获取。
在本实施例中,该配置文件包括布局文件XML,而且,该布局文件XML示范性的设置为extensible_config.xml文件。
S23:在第二脚本语言组件基于目标扩展模块访问第一脚本语言组件时,通过所述ModuleManager查询所述清单列表,判断所述清单列表中是否存储有所述目标扩展模块的唯一性标识,其中,所述第一脚本语言组件注册于原生***,所述配置文件中包含用于存储所述配置文件中的扩展模块的唯一性标识的清单列表;若存储,则执行步骤S24;否则,执行步骤S26。
在本实施例中,在第二脚本语言组件基于目标扩展模块访问第一脚本语言组件时,该应用程序通过所述ModuleManager查询所述清单列表,以判断所述清单列表中是否存储有所述目标扩展模块的唯一性标识。即:在该应用程序被启动时,该应用程序需要通过所述ModuleManager查询所述清单列表,以判断所述清单列表中是否存储有所述目标扩展模块的唯一性标识,其中,所述第一脚本语言组件注册于原生***;
可选的,该应用程序在查询所述清单列表之前,本发明实施例还包括以下步骤:
应用程序通过第一脚本语言组件读取配置文件中的清单列表上的扩展模块的唯一性标识。
其中,第一脚本语言组件注册于原生***。另外,若该第一脚本语言组件安装于安卓***内,则该第一脚本语言组件可示范性的设置为安卓平台android。
即:在本实施例中,应用程序通过安卓平台读取extensible_config.xml文件中的目标扩展模块。然后,该应用程序需要通过所述ModuleManager判断从所述配置文件中读取的扩展模块是否包括所述目标扩展模块。
在本实施例中,并不对构建第一脚本语言组件的第一脚本语言的种类进行限定,只需其满足本发明实施例的要求即可,如:该第一脚本语言为Java。
可选的,所述第二脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的程序所实现的功能相对应的非原生组件。
在本实施例中,并不对该唯一性标识做出限定,只需其满足本发明实施例的要求即可,可选的,所述唯一性标识包括所述扩展模块的名称。
在本实施例中,并不对构建第一脚本语言组件的第一脚本语言的种类进行限定,只需其满足本发明实施例的要求即可,如:该第一脚本语言为Java。
可选的,所述第二脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的程序所实现的功能相对应的非原生组件。
在本实施例中,并不对构建第二脚本语言组件的第二脚本语言的种类进行限定,只需其满足本发明实施例的要求即可,如:该第二脚本语言为直译式脚本语言JavaScript。
S24:在确定所述清单列表中存储有所述目标扩展模块的唯一性标识的情况下,则确定所述配置文件中包含所述目标配置模块;
S25:基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
在确定所述配置文件中包括所述目标扩展模块的情况下,则应用程序基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
具体的,若目标扩展模块为进行网络访问的模块,则应用程序基于所述第二脚本语言组件,通过所述目标扩展模块调用原生平台进行网络访问。
S26:在确定所述清单列表中没有存储所述目标扩展模块的唯一性标识的情况下,则应用程序不进行任何处理。
就此,不仅可以实现:该应用程序通过模块管理组件ModuleManager生成扩展模块,而且,因为所述模块管理组件包括用于生成所述扩展模块的公共逻辑数据。所以,在该应用程序因更新迭代而需要生成不同的扩展模块时,可直接调用该公用逻辑数据即可,而无需编写重复编写这些公共逻辑数据,提高了代码容错性。
此外,该应用程序通过ModuleManager生成扩展模块,即:实现了将该生成的扩展模块封装于该ModuleManager。而在该应用程序使用封装的扩展模块后,也减少了第二脚本语言组件中扩展模块调用原生平台的调用速度,当然,也增加了页面渲染速度,让用户更加快捷的看到了页面,节省了用户的时间成本。而且,通过扩展模块的封装可以更有效提升开发人员对扩展模块的灵活配置和修改,从而让扩展模块的代码达到高内聚,低耦合。
而且,在本实施例中,还可以通过扩展模块的唯一性标识加快对配置文件中的扩展模块是否包括目标扩展模块的判断速度。
图3为本发明第三实施例一种组件扩展功能的实现方法的流程框图。根据图3所示,本发明第三实施例提供了一种组件扩展功能的实现方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
S31:基于模块管理组件ModuleManager中包含的公共逻辑数据生成扩展模块;
在本实施例中,模块管理组件ModuleManager包含有用于构成各个扩展模块的公共逻辑数据,而且,在本实施例中,应用程序通过ModuleManager中的公共逻辑数据以生成扩展模块,从而实现将生成的扩展模块封装至模块管理组件ModuleManager。而且,在本实施例中,该公共逻辑数据即为逻辑代码。
S32:初始化软件开发工具包,以将所述扩展模块配置至配置文件中;
应用程序通过初始化开发工具包SDK,以将所述扩展模块配置至配置文件中。其中,该配置文件可由人为配置,当然,也可由装载有该应用程序的终端从服务端获取,进一步的,也可由装载有该应用程序的终端通过用于热更新的动态化框架从服务端动态获取。
在本实施例中,该配置文件包括布局文件XML,而且,该布局文件XML示范性的设置为extensible_config.xml文件。
S33:在第二脚本语言组件基于目标扩展模块访问第一脚本语言组件时,通过所述ModuleManager查询所述清单列表,判断所述清单列表中是否存储有所述目标扩展模块的唯一性标识,其中,所述第一脚本语言组件注册于原生***,所述配置文件中包含用于存储所述配置文件中的扩展模块的唯一性标识的清单列表;若存储,则执行步骤S34;否则,执行步骤S37
在本实施例中,在第二脚本语言组件基于目标扩展模块访问第一脚本语言组件时,该应用程序通过所述ModuleManager查询所述清单列表,以判断所述清单列表中是否存储有所述目标扩展模块的唯一性标识。即:在该应用程序被启动时,该应用程序需要通过所述ModuleManager查询所述清单列表,以判断所述清单列表中是否存储有所述目标扩展模块的唯一性标识,其中,所述第一脚本语言组件注册于原生***;
可选的,该应用程序在查询所述清单列表之前,本发明实施例还包括以下步骤:
应用程序通过第一脚本语言组件读取配置文件中的清单列表上的扩展模块的唯一性标识。
其中,第一脚本语言组件注册于原生***。另外,若该第一脚本语言组件安装于安卓***内,则该第一脚本语言组件可示范性的设置为安卓平台android。
即:在本实施例中,应用程序通过安卓平台读取extensible_config.xml文件中的目标扩展模块。然后,该应用程序需要通过所述ModuleManager判断从所述配置文件中读取的扩展模块是否包括所述目标扩展模块。
在本实施例中,并不对构建第一脚本语言组件的第一脚本语言的种类进行限定,只需其满足本发明实施例的要求即可,如:该第一脚本语言为Java。
可选的,所述第二脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的程序所实现的功能相对应的非原生组件。
在本实施例中,并不对该唯一性标识做出限定,只需其满足本发明实施例的要求即可,可选的,所述唯一性标识包括所述扩展模块的名称。
在本实施例中,并不对构建第一脚本语言组件的第一脚本语言的种类进行限定,只需其满足本发明实施例的要求即可,如:该第一脚本语言为Java。
可选的,所述第二脚本语言组件具体为:在混合开发模式下,与原生***中用于构建页面的程序所实现的功能相对应的非原生组件。
在本实施例中,并不对构建第二脚本语言组件的第二脚本语言的种类进行限定,只需其满足本发明实施例的要求即可,如:该第二脚本语言为直译式脚本语言JavaScript。
S34:在确定所述清单列表中存储有所述目标扩展模块的唯一性标识的情况下,则确定所述配置文件中包含所述目标配置模块;
S35:通过所述ModuleManager向所述第二脚本语言组件反馈提示信息,以确定基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作;
通过该确定消息,可以帮助应用程序确定是否基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
S36:基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
在确定所述配置文件中包括所述目标扩展模块的情况下,则应用程序基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
具体的,若目标扩展模块为进行网络访问的模块,则用用程序基于所述第二脚本语言组件,通过所述目标扩展模块调用原生平台进行网络访问。
S37:在确定所述清单列表中没有存储所述目标扩展模块的唯一性标识的情况下,则应用程序不进行任何处理。
就此,不仅可以实现:该应用程序通过模块管理组件ModuleManager生成扩展模块,而且,因为所述模块管理组件包括用于生成所述扩展模块的公共逻辑数据。所以,在该应用程序因更新迭代而需要生成不同的扩展模块时,可直接调用该公用逻辑数据即可,而无需编写重复编写这些公共逻辑数据,提高了代码容错性。
此外,该应用程序通过ModuleManager生成扩展模块,即:实现了将该生成的扩展模块封装于该ModuleManager。而在该应用程序使用封装的扩展模块后,也减少了第二脚本语言组件中扩展模块调用原生平台的调用速度,当然,也增加了页面渲染速度,让用户更加快捷的看到了页面,节省了用户的时间成本。而且,通过扩展模块的封装可以更有效提升开发人员对扩展模块的灵活配置和修改,从而让扩展模块的代码达到高内聚,低耦合。
而且,在本实施例中,还可以通过扩展模块的唯一性标识加快对配置文件中的扩展模块是否包括目标扩展模块的判断速度。
为了更好说明本实施例所述方法的实施过程,下面结合一个具体应用示例,对本实施例所述方法进行说明。
图4为本发明第四实施例一种组件扩展功能的实现方法的流程框图。根据图4所示,本发明第四实施例提供了一种组件扩展功能的实现方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
1、应用程序通过封装的组件扩展功能中的模块管理组件ModuleManager对扩展模块进行管理。即:通过该ModuleManager包含的公共逻辑数据生成扩展模块。具体的,通过JavaScript组件将扩展模块的基类封装下沉在JavaScript组件的软件开发工具包SDK中,相应的应用程序只要集成了该SDK,并且实现JavaScript组件的SDK中扩展模块的基类,即可在应用程序中生成相应的扩展模块。
2、在该应用程序被启动时,应用程序对该SDK进行初始化,即:将JavaScript组件通过ModuleManager生成的扩展模块配置至extensible_config.xml文件中。
3、应用程序通过安卓平台读取extensible_config.xml文件中的扩展模块。
4、当JavaScript组件通过封装的目标扩展模块访问网络时,应用程序调用ModuleManager去判断当前android平台是否存在该目标扩展模块,即判断安卓平台从extensible_config.xml文件中读取的扩展模块中是否有该目标扩展模块。
在确定有的情况下,执行步骤5,否则,执行步骤7。
5、在确定出安卓平台从extensible_config.xml文件中读取的扩展模块中有该目标扩展模块的情况下,确定调用该目标扩展模块,而且,还需判断是否向JavaScript组件反馈提示信息callback。若确定反馈,则ModuleManager向JavaScript组件反馈提示信息callback,并执行步骤6,否则,执行步骤7。
6、在JavaScript组件收到提示信息callback后,该应用程序基于JavaScript组件,通过所述目标扩展模块调用所述原生平台以进行相应业务操作,具体的,应用程序在JavaScript页面上进行相应的业务操作。
7、ModuleManager不进行任何处理,即:结束该目标扩展模块的调用。
在本实施例中,为满足ModuleManager向JavaScript组件反馈提示信息callback,在本实施例中,对相应的目标扩展模块中添加了反馈功能,而且,图5为本发明第四实施例一种组件扩展功能的实现方法中扩展模块实现相应协议的示意图,该扩展模块实现相应协议的具体类如图5所示。
图6为本发明第五实施例一种组件扩展功能的实现装置的结构示意图。根据图6所示,本发明第五实施例提供了一种组件扩展功能的实现装置,包含于基于混合开发模式所开发的应用程序中,所述装置包括:
生成模块110,用于基于模块管理组件ModuleManager中包含的公共逻辑数据生成扩展模块;配置模块120,用于初始化软件开发工具包,以将所述扩展模块配置至配置文件中;判断模块130,用于当第二脚本语言组件基于目标扩展模块访问第一脚本语言组件时,通过所述ModuleManager判断所述配置文件中是否配置有所述目标扩展模块,其中,所述第一脚本语言组件注册于原生***;调用模块150,用于在确定所述配置文件中配置有所述目标扩展模块的情况下,则基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
可选的,所述配置文件中包含用于存储所述配置文件中的扩展模块的唯一性标识的清单列表;所述判断模块130具体用于:通过所述ModuleManager查询所述清单列表,判断所述清单列表中是否存储有所述目标扩展模块的唯一性标识;若是,则确定所述配置文件中配置有所述目扩展模块。
可选的,所述唯一性标识包括所述扩展模块的名称。
可选的,所述装置还包括:提示模块140,用于在确定所述配置文件中配置有所述目标扩展模块的情况下,通过所述ModuleManager向所述第二脚本语言组件反馈提示信息,以确定基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
本发明第六实施例提供了一种电子设备,包括处理器和存储器;所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种组件扩展功能的实现方法。
本发明第六实施例中的一种电子设备所涉及的名词及实现原理具体可以参照本发明实施例中的第一至四实施例的一种组件扩展功能的实现方法,在此不再赘述。
本发明第七实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个模块,所述一个或者多个模块可被一个或者多个处理器执行,以实现上述的一种组件扩展功能的实现方法。
本发明第七实施例中的一种计算机可读存储介质所涉及的名词及实现原理具体可以参照本发明实施例中的第一至四实施例的一种组件扩展功能的实现方法,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (10)
1.一种组件扩展功能的实现方法,其特征在于,应用于基于混合开发模式所开发的应用程序,所述方法包括:
基于模块管理组件ModuleManager中包含的公共逻辑数据生成扩展模块;
初始化软件开发工具包,以将所述扩展模块配置至配置文件中;
当第二脚本语言组件基于目标扩展模块访问第一脚本语言组件时,通过所述ModuleManager判断所述配置文件中是否配置有所述目标扩展模块,其中,所述第一脚本语言组件注册于原生***;
在确定所述配置文件中配置有所述目标扩展模块的情况下,则基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
2.根据权利要求1所述的方法,其特征在于,所述配置文件中包含用于存储所述配置文件中的扩展模块的唯一性标识的清单列表;
所述通过ModuleManager判断所述配置文件中是否配置有所述目标扩展模块,包括:
通过所述ModuleManager查询所述清单列表,判断所述清单列表中是否存储有所述目标扩展模块的唯一性标识;
若是,则确定所述配置文件中配置有所述目扩展模块。
3.根据权利要求2所述的方法,其特征在于,所述唯一性标识包括所述扩展模块的名称。
4.根据权利要求1-3任一项所述的方法,其特征在于,在确定所述配置文件中配置有所述目标扩展模块的情况下,所述方法还包括:
通过所述ModuleManager向所述第二脚本语言组件反馈提示信息,以确定基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
5.一种组件扩展功能的实现装置,其特征在于,包含于基于混合开发模式所开发的应用程序中,所述装置包括:
生成模块,用于基于模块管理组件ModuleManager中包含的公共逻辑数据生成扩展模块;
配置模块,用于初始化软件开发工具包,以将所述扩展模块配置至配置文件中;
判断模块,用于当第二脚本语言组件基于目标扩展模块访问第一脚本语言组件时,通过所述ModuleManager判断所述配置文件中是否配置有所述目标扩展模块,其中,所述第一脚本语言组件注册于原生***;
调用模块,用于在确定所述配置文件中配置有所述目标扩展模块的情况下,则基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
6.根据权利要求5所述的装置,其特征在于,所述配置文件中包含用于存储所述配置文件中的扩展模块的唯一性标识的清单列表;
所述判断模块具体用于:通过所述ModuleManager查询所述清单列表,判断所述清单列表中是否存储有所述目标扩展模块的唯一性标识;若是,则确定所述配置文件中配置有所述目扩展模块。
7.根据权利要求6所述的装置,其特征在于,所述唯一性标识包括所述扩展模块的名称。
8.根据权利要求5-7任一项所述的装置,其特征在于,所述装置还包括:
提示模块,用于在确定所述配置文件中配置有所述目标扩展模块的情况下,通过所述ModuleManager向所述第二脚本语言组件反馈提示信息,以确定基于所述第二脚本语言组件,通过所述目标扩展模块调用所述第一脚本语言组件以进行相应业务操作。
9.一种电子设备,其特征在于,包括处理器和存储器;
所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现权利要求1至4中任一项所述的一种组件扩展功能的实现方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1至4中任一项所述的一种组件扩展功能的实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810503377.7A CN108845800B (zh) | 2018-05-23 | 2018-05-23 | 一种组件扩展功能的实现方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810503377.7A CN108845800B (zh) | 2018-05-23 | 2018-05-23 | 一种组件扩展功能的实现方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108845800A true CN108845800A (zh) | 2018-11-20 |
CN108845800B CN108845800B (zh) | 2022-05-31 |
Family
ID=64213297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810503377.7A Active CN108845800B (zh) | 2018-05-23 | 2018-05-23 | 一种组件扩展功能的实现方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108845800B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522500A (zh) * | 2018-11-26 | 2019-03-26 | 深圳乐信软件技术有限公司 | 网页显示方法、装置、终端和存储介质 |
CN112363705A (zh) * | 2020-11-10 | 2021-02-12 | 中国平安人寿保险股份有限公司 | ***包生成方法、装置、计算机设备及存储介质 |
CN112748915A (zh) * | 2020-12-30 | 2021-05-04 | 山东浪潮通软信息科技有限公司 | 一种基于StimulSoft的动态扩展业务函数的方法及设备 |
CN116112369A (zh) * | 2023-01-04 | 2023-05-12 | 中国联合网络通信集团有限公司 | 一种云网络运维管理***、方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130263086A1 (en) * | 2012-03-27 | 2013-10-03 | Microsoft Corporation | Extensible Mechanism for Providing Suggestions in a Source Code Editor |
CN106202096A (zh) * | 2015-05-05 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 客户端页面渲染方法及装置 |
CN107391169A (zh) * | 2017-06-09 | 2017-11-24 | 口碑控股有限公司 | 安卓页面的动态更新方法和装置 |
CN107526579A (zh) * | 2016-06-22 | 2017-12-29 | 中兴通讯股份有限公司 | 一种应用程序页面开发管理方法及装置 |
CN108021614A (zh) * | 2017-08-18 | 2018-05-11 | 口碑(上海)信息技术有限公司 | 一种用于页面动态加载的方法及*** |
-
2018
- 2018-05-23 CN CN201810503377.7A patent/CN108845800B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130263086A1 (en) * | 2012-03-27 | 2013-10-03 | Microsoft Corporation | Extensible Mechanism for Providing Suggestions in a Source Code Editor |
CN106202096A (zh) * | 2015-05-05 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 客户端页面渲染方法及装置 |
CN107526579A (zh) * | 2016-06-22 | 2017-12-29 | 中兴通讯股份有限公司 | 一种应用程序页面开发管理方法及装置 |
CN107391169A (zh) * | 2017-06-09 | 2017-11-24 | 口碑控股有限公司 | 安卓页面的动态更新方法和装置 |
CN108021614A (zh) * | 2017-08-18 | 2018-05-11 | 口碑(上海)信息技术有限公司 | 一种用于页面动态加载的方法及*** |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522500A (zh) * | 2018-11-26 | 2019-03-26 | 深圳乐信软件技术有限公司 | 网页显示方法、装置、终端和存储介质 |
CN112363705A (zh) * | 2020-11-10 | 2021-02-12 | 中国平安人寿保险股份有限公司 | ***包生成方法、装置、计算机设备及存储介质 |
CN112363705B (zh) * | 2020-11-10 | 2023-07-28 | 中国平安人寿保险股份有限公司 | ***包生成方法、装置、计算机设备及存储介质 |
CN112748915A (zh) * | 2020-12-30 | 2021-05-04 | 山东浪潮通软信息科技有限公司 | 一种基于StimulSoft的动态扩展业务函数的方法及设备 |
CN112748915B (zh) * | 2020-12-30 | 2022-10-25 | 浪潮通用软件有限公司 | 一种基于StimulSoft的动态扩展业务函数的方法及设备 |
CN116112369A (zh) * | 2023-01-04 | 2023-05-12 | 中国联合网络通信集团有限公司 | 一种云网络运维管理***、方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108845800B (zh) | 2022-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108845800A (zh) | 一种组件扩展功能的实现方法、装置、设备及存储介质 | |
CN105100191B (zh) | 一种云编译实现Java应用安装的方法、装置及*** | |
CN102222005B (zh) | 面向业务模型的软件运行平台、运行方式及一种开发方法 | |
CN101571809B (zh) | 一种插件注册的实现方法及其装置 | |
CN102622241B (zh) | 一种软件升级方法及装置 | |
CN102413022B (zh) | 一种应用调试方法和*** | |
CN103580908B (zh) | 服务器的配置方法及*** | |
CN107203419A (zh) | 应用程序中的模块间调用方法、装置及*** | |
CN109669716A (zh) | 页面控制方法、装置、设备及可读存储介质 | |
JP5414814B2 (ja) | ネットワーク環境におけるスペースのカスタマイズ | |
CN103353845A (zh) | 脚本加载、推送方法及装置 | |
CN109522068A (zh) | 页面的展示方法及***、页面数据的编辑方法 | |
CN108984268A (zh) | Docker***中容器管理的方法和装置 | |
CN103902265A (zh) | 一种应用实现方法及相关装置 | |
CN101853152B (zh) | 一种生成用户图形界面的方法和*** | |
CN104541262A (zh) | 用于富因特网应用的透明网络内适配的***和方法 | |
CN106569856A (zh) | 一种应用视图资源文件的加载方法和装置 | |
CN104834541B (zh) | 功能模块挂载方法、挂载***及更新挂载***的方法 | |
CN108052340A (zh) | 一种应用升级方法、装置 | |
CN102523308B (zh) | 一种应用开发方法和运行该方法所开发应用的平台*** | |
CN108228147A (zh) | 一种性能数据日志获取方法及装置 | |
CN101986740A (zh) | 一种java卡 | |
US20100179982A1 (en) | Method for auditing the data of a computer application of a terminal | |
EP2823411A1 (en) | A method and system of application development for multiple device client platforms | |
CN107463406A (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 |