CN111722841A - Ios平台下软件的组件化实现方法 - Google Patents

Ios平台下软件的组件化实现方法 Download PDF

Info

Publication number
CN111722841A
CN111722841A CN202010355884.8A CN202010355884A CN111722841A CN 111722841 A CN111722841 A CN 111722841A CN 202010355884 A CN202010355884 A CN 202010355884A CN 111722841 A CN111722841 A CN 111722841A
Authority
CN
China
Prior art keywords
module
zpmouter
link
software
service
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
CN202010355884.8A
Other languages
English (en)
Other versions
CN111722841B (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 Wangpin Consulting Co ltd
Original Assignee
Beijing Wangpin Consulting 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 Wangpin Consulting Co ltd filed Critical Beijing Wangpin Consulting Co ltd
Priority to CN202010355884.8A priority Critical patent/CN111722841B/zh
Publication of CN111722841A publication Critical patent/CN111722841A/zh
Application granted granted Critical
Publication of CN111722841B publication Critical patent/CN111722841B/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/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种IOS平台下软件的组件化实现方法,其包括:将软件源代码按功能拆分打包,生成独立的各个功能模块;搭建ZPMRouter模块,并分别建立各个功能模块与ZPMRouter模块的关联;通过ZPMRouter模块完成各个功能模块间的跳转和通讯,及通过ZPMRouter模块配合服务端完成各个功能模块的动态加载。本发明能将一个大的APP拆分成一个个小的组件、模块,相互之间不进行依赖与耦合,从而实现APP的组件化架构开发。

Description

IOS平台下软件的组件化实现方法
技术领域
本发明涉及移动终端应用领域。更具体地说,本发明涉及一种IOS平台下软件的组件化实现方法。
背景技术
目前IOS平台下APP随着用户的需求越来越多,对App的用户体验也变的要求越来越高。为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VIPER等复杂架构。更换适合业务的架构,为了后期能更好的维护项目,于是开发人员就用H5,ReactNative,Weex等技术对已有的项目进行改造。项目架构也变得更加的复杂,纵向的会进行分层,网络层,UI层,数据持久层。每一层横向的也会根据业务进行组件化。尽管这样做了以后会让开发更加有效率,更加好维护,但是各个组件、各个页面之间的跳转逻辑关联性越来越多,业务越复杂,耦合度越高,逻辑越混乱,同时导致开发效率低下,且容易造成代码冲突,各个模块互相依赖,对测试、编译、开发效率、后续维护与扩展均造成不利的影响。如何解耦各层,解耦各个界面和各个组件,降低各个组件之间的耦合度,如何能让整个系统不管多么复杂的情况下都能保持“高内聚,低耦合”的特点?这一系列的问题都摆在开发人员面前。
发明内容
本发明的一个目的是解决至少上述问题,并提供至少后面将说明的优点。
本发明还有一个目的是提供一种IOS平台下软件的组件化实现方法,能将一个大的APP拆分成一个个小的组件、模块,相互之间不进行依赖与耦合,从而实现APP的组件化架构开发。
为了实现根据本发明的这些目的和其它优点,提供了一种IOS平台下软件的组件化实现方法,其包括:
将软件源代码按功能拆分打包,生成独立的各个功能模块;
搭建ZPMRouter模块,并分别建立各个功能模块与ZPMRouter模块的关联;
通过ZPMRouter模块完成各个功能模块间的跳转和通讯,及通过ZPMRouter模块配合服务端完成各个功能模块的动态加载。
优选的是,分别建立各个功能模块与ZPMRouter模块的关联的过程包括:
各个功能模块在软件框架中注册各自的配置文件,同时生成与配置文件对应的路由地址,将所述路由地址保存于ZPMRouter模块中。
优选的是,通过ZPMRouter模块完成各个功能模块间的跳转和通讯,及通过ZPMRouter模块配合服务端完成各个功能模块的动态加载的过程包括:
ZPMRouter模块接受链接请求,并启动重定向服务:若存在重定向配置,则在重定向配置后将链接的原路由地址替换为新路由地址,并根据新路由地址查找新配置文件;若无重定向配置,则继续根据原路由地址查找原配置文件;
ZPMRouter模块查找到配置文件后解析配置文件,查找与链接请求匹配的对应配置:若存在与链接请求匹配的对应配置,则继续进行拦截器服务查找,如果配置有全局拦截器,则进行全局预处理,如果没有配置全局拦截器,则直接链接对应资源;若不存在与链接请求匹配的对应配置,则继续进行降级服务查找,如果找到降级服务,则进行降级处理,如果未找到降级服务,则进行容错处理。
优选的是,全局预处理包括:若链接被拦截,则进行自定义处理;若链接未被拦截,否则继续判断是否配置自定义局部拦截器,若配置自定义局部拦截器且链接被拦截,则仍进行自定义处理,否则直接链接对应资源。
优选的是,降级处理包括:自定义降级和全局降级,若链接配置有自定义降级,则优先自定义降级。
优选的是,所述重定向服务、拦截器服务和降级服务均注册于软件框架中。
本发明至少包括以下有益效果:由于本发明支持解析标准链接进行页面跳转,支持页面通信;支持页面参数自动赋值;支持全局拦截器处理;支持局部自定义拦截器处理;支持动态替换目标链接,进行目标页面重定向;支持全局降级处理;支持局部降级自定义处理;支持依赖注入,组件、模块间进行解耦与通信;支持配置文件映射关系按组分类,多级管理;配置文件、拦截器服务、降级服务、重定向服务等均自动注册到框架,故可以做到灵活配置、轻量引入,使用成本低,扩展性强,解决了在实际开发中模块与模块之间深度耦合依赖、组件与组件之间耦合通信的缺点,减少了不同模块、组件之间的代码冲突,同时也提高了开发、编译、测试效率,降低了项目复杂度。
本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。
附图说明
图1为本发明其中一实施例的方法流程图;
图2为本发明其中一实施例所述ZPMRouter模块的工作流程图。
具体实施方式
下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
需要说明的是,在本发明的描述中,术语“横向”、“纵向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,并不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
如图1~2所示,本发明提供一种IOS平台下软件的组件化实现方法,其包括:
S101、将软件源代码按功能拆分打包,生成独立的各个功能模块;
在本步骤中,功能模块的定义比较广泛,既包括一般意义上的功能模块,如:图片轮播器、定制化菜单、定制化图片选择器、相机、录像、二维码扫描功能、下载功能、定制化城市选择器、个性定制的提示框、Toast提示等等,封装在一个模块中实现一个功能。也包括一般意义上的业务模块,根据自己公司的业务模块进行划分,如:个人信息模块、登录模块、投递模块、搜索模块等,尽量业务相关的组合成一个模。还包括基础组件和通用组件,如:网络库、日志、统计、路由、存储、全局常量、常用宏、常用的分类、还有一些比较常用的小功能类等,各自分为一个独立组件。
上述功能模块一般以pod库的形式存在,模块内部按照各自的开发模式以文件夹的形式进行划分,每个模块对单独对应一个demo,用来完成该模块的功能测试,这样测试机能被解耦开,模块通过利用CocoaPods的方式安装在软件框架中。
当然上述方案只是本申请的一个实施例,功能模块还可以按照软件领域现有的其它划分方式和编辑保存方法进行拆分打包。
通过本步骤,各个模块开发人员只需专注于自己模块开发,避免了修改他人代码,在合并代码上一定程度避免了代码冲突,提升开发效率,避免重复造cycle,节省开发维护成本。
S102、搭建ZPMRouter模块,并分别建立各个功能模块与ZPMRouter模块的关联;
在本步骤中,各个功能模块在软件框架中注册各自的配置文件,同时生成与配置文件对应的路由地址,将所述路由地址保存于ZPMRouter模块中。
S103、通过ZPMRouter模块完成各个功能模块间的跳转和通讯,及通过ZPMRouter模块配合服务端完成各个功能模块的动态加载。
由于软件组件化后,各功能模块之间的跳转和通讯变成了功能模块的前端视图界面的跳转和通讯,各个功能模块的动态加载变成了各功能模块的前端视图界面的加载,因此,上一步骤中的配置文件更具体的指前端视图界面参数的配置,环境变量的配置等等。
在本步骤中,ZPMRouter模块接受链接请求,并启动重定向服务:若存在重定向配置,则在重定向配置后将链接的原路由地址替换为新路由地址,并根据新路由地址查找新配置文件;若无重定向配置,则继续根据原路由地址查找原配置文件;
ZPMRouter模块查找到配置文件后解析配置文件,查找与链接请求匹配的对应配置:若存在与链接请求匹配的对应配置,则继续进行拦截器服务查找,如果配置有全局拦截器,则进行全局预处理,如果没有配置全局拦截器,则直接链接对应资源;若不存在与链接请求匹配的对应配置,则继续进行降级服务查找,如果找到降级服务,则进行降级处理,如果未找到降级服务,则进行容错处理,可防止软件崩溃,然后在开发阶段日志输出,完成本次工作。
这里全局预处理包括:若链接被拦截,则进行自定义处理;若链接未被拦截,否则继续判断是否配置自定义局部拦截器,若配置自定义局部拦截器且链接被拦截,则仍进行自定义处理,否则直接链接对应资源。
自定义局部拦截器是指局部拦截器可根据业务需要进行配置触发条件,在一些场景被触发,如:当从当前页面进入下级页面,当前页面处于未登录状态,而下级页面业务需要用到登录信息,通过局部拦截器可以实现针对当前链接进行局部拦截。而自定义处理是指全局拦截器或局部拦截器被触发后,可根据业务需要进行配置给前端视图界面的反馈,如前一例子中:局部拦截器判断当前页面处于未登录状态则直接进入登录页面,登录成功后再进入当前链接页面,如已登录,则直接进入链接页面。
这里降级处理包括:自定义降级和全局降级,若链接配置有自定义降级,则优先自定义降级,如从原始页面降级为网页,完成本次工作,无自定义降级,则进行全局降级,如进入错误链接页面,完成本次工作。
这里所述重定向服务、拦截器服务和降级服务均注册于软件框架中。
由于上述实施例中支持解析标准链接进行页面跳转,支持页面通信;支持页面参数自动赋值;支持全局拦截器处理;支持局部自定义拦截器处理;支持动态替换目标链接,进行目标页面重定向;支持全局降级处理;支持局部降级自定义处理;支持依赖注入,组件、模块间进行解耦与通信;支持配置文件映射关系按组分类,多级管理;配置文件、拦截器服务、降级服务、重定向服务等均自动注册到框架,故可以做到灵活配置、轻量引入,使用成本低,扩展性强,解决了在实际开发中模块与模块之间深度耦合依赖、组件与组件之间耦合通信的缺点,减少了不同模块、组件之间的代码冲突,同时也提高了开发、编译、测试效率,降低了项目复杂度。
另外本申请提供的技术框架,适应包括不限于native、weex、ReactNative、web等技术均可使用的一套页面跳转方案,同时提供对不同模块间业务调用、传递等提供通信。
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。

Claims (6)

1.IOS平台下软件的组件化实现方法,其特征在于,包括:
将软件源代码按功能拆分打包,生成独立的各个功能模块;
搭建ZPMRouter模块,并分别建立各个功能模块与ZPMRouter模块的关联;
通过ZPMRouter模块完成各个功能模块间的跳转和通讯,及通过ZPMRouter模块配合服务端完成各个功能模块的动态加载。
2.如权利要求1所述的IOS平台下软件的组件化实现方法,其特征在于,分别建立各个功能模块与ZPMRouter模块的关联的过程包括:
各个功能模块在软件框架中注册各自的配置文件,同时生成与配置文件对应的路由地址,将所述路由地址保存于ZPMRouter模块中。
3.如权利要求2所述的IOS平台下软件的组件化实现方法,其特征在于,通过ZPMRouter模块完成各个功能模块间的跳转和通讯,及通过ZPMRouter模块配合服务端完成各个功能模块的动态加载的过程包括:
ZPMRouter模块接受链接请求,并启动重定向服务:若存在重定向配置,则在重定向配置后将链接的原路由地址替换为新路由地址,并根据新路由地址查找新配置文件;若无重定向配置,则继续根据原路由地址查找原配置文件;
ZPMRouter模块查找到配置文件后解析配置文件,查找与链接请求匹配的对应配置:若存在与链接请求匹配的对应配置,则继续进行拦截器服务查找,如果配置有全局拦截器,则进行全局预处理,如果没有配置全局拦截器,则直接链接对应资源;若不存在与链接请求匹配的对应配置,则继续进行降级服务查找,如果找到降级服务,则进行降级处理,如果未找到降级服务,则进行容错处理。
4.如权利要求3所述的IOS平台下软件的组件化实现方法,其特征在于,全局预处理包括:若链接被拦截,则进行自定义处理;若链接未被拦截,否则继续判断是否配置自定义局部拦截器,若配置自定义局部拦截器且链接被拦截,则仍进行自定义处理,否则直接链接对应资源。
5.如权利要求3所述的IOS平台下软件的组件化实现方法,其特征在于,降级处理包括:自定义降级和全局降级,若链接配置有自定义降级,则优先自定义降级。
6.如权利要求3所述的IOS平台下软件的组件化实现方法,其特征在于,所述重定向服务、拦截器服务和降级服务均注册于软件框架中。
CN202010355884.8A 2020-04-29 2020-04-29 Ios平台下软件的组件化实现方法 Active CN111722841B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010355884.8A CN111722841B (zh) 2020-04-29 2020-04-29 Ios平台下软件的组件化实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010355884.8A CN111722841B (zh) 2020-04-29 2020-04-29 Ios平台下软件的组件化实现方法

Publications (2)

Publication Number Publication Date
CN111722841A true CN111722841A (zh) 2020-09-29
CN111722841B CN111722841B (zh) 2024-04-16

Family

ID=72563708

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010355884.8A Active CN111722841B (zh) 2020-04-29 2020-04-29 Ios平台下软件的组件化实现方法

Country Status (1)

Country Link
CN (1) CN111722841B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306543A (zh) * 2020-11-13 2021-02-02 成都中科大旗软件股份有限公司 一种ios系统衍生项目的管理方法
CN113342317A (zh) * 2021-06-24 2021-09-03 武汉华莘教育科技有限公司 基于Android组件化的开发多业务动态组合方法及系统
WO2022252068A1 (zh) * 2021-05-31 2022-12-08 西门子股份公司 应用程序构建方法、执行方法、计算设备以及存储介质
CN117793001A (zh) * 2023-12-28 2024-03-29 北京虎嗅信息科技股份有限公司 一种路由组件的解析和跳转方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100223306A1 (en) * 2009-02-27 2010-09-02 International Business Machines Corporation Method and apparatus for discovering application configuration files in a system
CN106991035A (zh) * 2017-04-06 2017-07-28 北京计算机技术及应用研究所 一种基于微服务架构的主机监控系统
WO2018126210A1 (en) * 2016-12-31 2018-07-05 ShieldX Networks, Inc. Intercepting network traffic routed by virtual switches for selective security processing
CN108563432A (zh) * 2018-03-14 2018-09-21 广东能龙教育股份有限公司 一种通过路由配置的Android应用程序组件化快速开发方法
CN109491653A (zh) * 2018-11-21 2019-03-19 泰康保险集团股份有限公司 微服务架构下的组件共享方法、装置、电子设备
CN110020955A (zh) * 2017-08-24 2019-07-16 腾讯科技(深圳)有限公司 在线医保信息处理方法及装置、服务器和用户终端
CN110149364A (zh) * 2019-04-15 2019-08-20 厦门市美亚柏科信息股份有限公司 基于数据服务平台提供微服务的方法、装置、存储介质
US20190273718A1 (en) * 2018-03-01 2019-09-05 ShieldX Networks, Inc. Intercepting network traffic routed by virtual switches for selective security processing
CN110580183A (zh) * 2019-09-02 2019-12-17 江苏艾佳家居用品有限公司 一种移动应用组件化实现方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100223306A1 (en) * 2009-02-27 2010-09-02 International Business Machines Corporation Method and apparatus for discovering application configuration files in a system
WO2018126210A1 (en) * 2016-12-31 2018-07-05 ShieldX Networks, Inc. Intercepting network traffic routed by virtual switches for selective security processing
CN106991035A (zh) * 2017-04-06 2017-07-28 北京计算机技术及应用研究所 一种基于微服务架构的主机监控系统
CN110020955A (zh) * 2017-08-24 2019-07-16 腾讯科技(深圳)有限公司 在线医保信息处理方法及装置、服务器和用户终端
US20190273718A1 (en) * 2018-03-01 2019-09-05 ShieldX Networks, Inc. Intercepting network traffic routed by virtual switches for selective security processing
CN108563432A (zh) * 2018-03-14 2018-09-21 广东能龙教育股份有限公司 一种通过路由配置的Android应用程序组件化快速开发方法
CN109491653A (zh) * 2018-11-21 2019-03-19 泰康保险集团股份有限公司 微服务架构下的组件共享方法、装置、电子设备
CN110149364A (zh) * 2019-04-15 2019-08-20 厦门市美亚柏科信息股份有限公司 基于数据服务平台提供微服务的方法、装置、存储介质
CN110580183A (zh) * 2019-09-02 2019-12-17 江苏艾佳家居用品有限公司 一种移动应用组件化实现方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
GUO JING 等: "Research on Android Component Security Testing Method for Mobile Application in Power System", 《2019 14TH IEEE CONFERENCE ON INDUSTRIAL ELECTRONICS AND APPLICATIONS》, 16 September 2019 (2019-09-16), pages 633 - 637 *
猎羽: "Android 路由框架ARouter详细使用教程", pages 1 - 9, Retrieved from the Internet <URL:《https://blog.csdn.net/feather_wch/article/details/81605300》> *
郭颖: "监控管理系统Web前端的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 August 2019 (2019-08-15), pages 139 - 192 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306543A (zh) * 2020-11-13 2021-02-02 成都中科大旗软件股份有限公司 一种ios系统衍生项目的管理方法
CN112306543B (zh) * 2020-11-13 2023-08-29 成都中科大旗软件股份有限公司 一种ios系统衍生项目的管理方法
WO2022252068A1 (zh) * 2021-05-31 2022-12-08 西门子股份公司 应用程序构建方法、执行方法、计算设备以及存储介质
CN113342317A (zh) * 2021-06-24 2021-09-03 武汉华莘教育科技有限公司 基于Android组件化的开发多业务动态组合方法及系统
CN113342317B (zh) * 2021-06-24 2022-05-31 武汉华莘科技有限公司 基于Android组件化的开发多业务动态组合方法及系统
CN117793001A (zh) * 2023-12-28 2024-03-29 北京虎嗅信息科技股份有限公司 一种路由组件的解析和跳转方法

Also Published As

Publication number Publication date
CN111722841B (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
CN111722841A (zh) Ios平台下软件的组件化实现方法
CN101571809B (zh) 一种插件注册的实现方法及其装置
CN101930400B (zh) Sdk自动化测试系统及方法
CN101136936A (zh) 业务创建、执行、映射系统及方法
CN107678748B (zh) 一种源代码文件编译方法及装置
CN109614106A (zh) 一种c++程序编译方法和装置
CN101771701B (zh) Web服务客户端自动化生成方法和装置
CN110109681B (zh) 不同平台间代码的转换方法及系统
CN106055334A (zh) 代码管理系统及方法
CN101226502B (zh) 一种自动化测试方法及系统
CN1151219A (zh) 向主控设备提供从属设备权力信息
CN116737130B (zh) 面向模态中间表示的编译方法、系统、设备和存储介质
CN107480223B (zh) 一种搜索方法、装置及存储介质
CN106484488B (zh) 一体化云编译方法和系统
CN101616027B (zh) 业务创建、执行、映射系统及方法
CN113051163A (zh) 单元测试方法、装置、电子设备及存储介质
CN112486518A (zh) 共识算法装配方法及装置
CN101267645B (zh) 用于w基站业务流程软件开发的自动化测试方法和系统
CN113468446B (zh) 一种支持识别第三方二维码数据的方法、系统及设备
CN115129348A (zh) 应用程序的资源更新方法、装置、设备及可读存储介质
CN114201174A (zh) 混合移动应用的构建方法、装置、电子设备及存储介质
CN112632113A (zh) 一种算子管理方法和算子管理系统
CN106775629B (zh) 搜索文件生成方法及装置
CN117435510B (zh) 自动化测试方法、终端设备及计算机可读存储介质
CN113608996B (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