app的组件化之路:业务组件化与中间件,MVVM架构的作用

简介: app的组件化之路:业务组件化与中间件,MVVM架构的作用

app发展的两个方向:组件化和新架构。

app组件化包括业务组件和中间件,它起到代码仓库隔离的作用,是模块化的具体应用,每个人通常分工时,做不同的模块从减少代码上传时的代码冲突。

MVVM架构是模块内页面的代码组织形式,能提高模块内页面代码的内聚性,提高代码的结构清晰性,易读性和开维护性。

组件化就是为了提高代码的重用率,架构是为提高具体功能页面的清晰性。组件化作用在文件级别,架构主要体现在页面级别,组件化对多app尤其重要,单app对架构更偏重。

业务组件可以是一个工程也可以不是。因为业务组件通常不需要对所有代码编译测试,它可能不能独立运行,一般不上传私有库,但是上传代码仓库。而私有组件和中间件一般都是一个工程,因为它通常能独立运行,内对所有代码编译测试,不然pod spec lint命令检查不通过,无法上传私有库或公有库。若业务组件能单独运行,等代码稳定了可以把它抽象成私有库。注意:我说的私有库是指通过严格的编译检查,通过pod repo push ******Spec上传私有源的工程仓库,不上传私有源的工程我们不称它为私有库。

业务组件是相当于主工程产生的。主工程一般负责引入和组织业务组件,公有组件,中间件,私有组件;还负责app工程启动与数据加载,登录逻辑等各个app经常变更的页面与逻辑,甚至包括根据请求结果进行架构切换的逻辑。业务组件只实现部分功能,一般业务组件项目不能独立运行全部它的全部功能,需要主工程引用和使用。若他能全部运行并使用它的全部功能,那么它就可以抽象成狭义私有库或中间件了。业务组件可以理解成是松耦合的文件结合,不要求独立运行。

中间件和私有组件:是严格约束的代码库,咱们和公有组件一样都能独立运行,能通过严格的pod spec lint检查。一般放在自己公司的gitlab上,一般也能放在github或码云上。为了保密和不付费,下载速度快,通常放在自己公司gitlab服务器上。中间件就是被其它的多个私有库或业务组件使用的一种私有库,它本质实际也是私有库。

新架构mvvm和组件化是软件工程的两个方面。组件化是指的项目文件的组织方式,而MVVM或MVP是对功能的具体实现与组织形式。所以组件化重在文件,MVVM重在功能。

MVMM一般分为实体类,View(页面元素),控制器,view-model负责具体的请求与参数填写与校验,请求结果的简单解析。所有只要在MVC的基础上抽象出view-model一般都属于MVVM,注意不是使用单例处理所有请求的方式。一般MVVM都使用ReactiveCocoa,大量使用信号和block。MVVM有很多实现方式,只要符合MVVM概念组织页面都属于MVVM架构。但是MVVM架构是有优劣的。

好的架构能让代码组织更清晰,更容易理解,但是决定代码好坏的不是架构,主要是人而不是架构。很差的架构有的人仍旧能写高质量的代码,有的人用最先进的架构写出低劣的代码都是很正常。千万别别指望所有的bug所有的人只要给时间修改就一定能消灭bug。有的人在修改一个bug时产生另一个bug,只是新的bug可能更难测试出来的bug。这个就要看这个人属于那种人了,也要看他的方案的完美性了。如:我们在一个页面请求成功弹出一个会消失的提示框并返回上一个页面。当使用MBProgressHUD等其它库加载在keywindow上,通常是看不到哪个提示框,测试就会给你提个问题单,很多人会采用延迟退出的方式,来让弹出框弹出后再返回。其实这样会降低用户体验,并且可能出现内存泄漏误报,甚至多次点击概率闪退等其它不可控问题,而且通常测试还测试不出来。当然最正确的解决方案是采用多window方案来实现跨页面显示。

程序猿有四类:

1.做的即慢质量又差的;2.做的即快质量又差的;3.做的慢但是质量好的;4.做的即快质量又好的。个性决定命运。若第一类三年升级不到3它走不到10年80%转行的命运;第二类人并不一定能变成第四类人,排除经验的原因外,很可能是性格使然,这类人通常更容易转行;第三类人通常能进入10年20%保留在本行业内;第四类人除了特殊原因,他们都是我们追求的目标,可惜这种人一般除了在程序猿这行业全能,通常更适合领导,10年不到他们大都去当领导去了。一般只有在它刚干这行的前五年才能见到这类人。所以招聘人就是招聘人和他的工作经验,组件化和架构是非必需条件,有更好。

看一下我们的业务组件化,中间件,公有组件在工程中的组织形式吧:

公有库

私有库和中间件

私有组件工程文件结构

业务组件工程文件结构

目录
相关文章
|
8天前
|
设计模式 存储 前端开发
MVVM、MVC、MVP三种常见软件架构设计模式的区别
MVC、MVP 和 MVVM 是三种常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。
28 12
|
24天前
|
前端开发
什么是MVVM架构?
MVVM是Model-View-ViewModel的简写。它本质上就是MVC的改进版。MVVM模式有助于将应用程序的业务和表示逻辑与用户界面 (UI) 清晰分离。 保持应用程序逻辑和UI之间的清晰分离有助于解决许多开发问题,并使应用程序更易于测试、维护和演变。 它还可以显著提高代码重用机会,并允许开发人员和UI设计人员在开发应用各自的部分时更轻松地进行协作。
25 2
|
2天前
|
前端开发 测试技术 API
探索安卓应用的架构演进:从MVC到MVVM
本篇文章将深入探讨安卓应用开发中的架构演进,特别关注从传统的MVC(Model-View-Controller)到现代流行的MVVM(Model-View-ViewModel)架构的转变。通过对比两种架构的设计理念、实现方式和实际应用案例,解析MVVM在提高代码可维护性和可测试性方面的优势。
6 0
|
30天前
|
前端开发 Android开发
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
|
30天前
|
Android开发
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
|
3天前
|
监控 Cloud Native 开发者
云原生技术浪潮下的微服务架构实践
云原生技术正引领着现代软件开发的潮流,其中微服务架构作为其核心理念之一,为复杂应用提供了灵活、可扩展的解决方案。本文将探讨在云原生环境下实施微服务架构的策略和挑战,并结合实际案例分析微服务设计的最佳实践,旨在为开发者提供一套可行的微服务部署与管理指南。
|
3天前
|
消息中间件 监控 API
构建微服务架构:从理论到实践的全面指南
本文将深入探讨微服务架构的设计原则、实施步骤和面临的挑战。与传统的单体架构相比,微服务通过其独立性、可伸缩性和灵活性,为现代应用开发提供了新的视角。文章将介绍如何从零开始规划和部署一个微服务系统,包括选择合适的技术栈、处理数据一致性问题以及实现服务间通信。此外,我们还将讨论在迁移至微服务架构过程中可能遇到的技术和组织挑战,以及如何克服这些难题以实现顺利过渡。
|
1天前
|
设计模式 消息中间件 运维
微服务架构在后端开发中的应用与挑战
微服务架构作为一种现代软件开发方法,带来了灵活性、可扩展性和高效性,但同时也引发了诸如复杂性管理、数据一致性等新的挑战。本文深入探讨了微服务架构在后端开发中的应用场景,以及应对这些挑战的策略。
4 0
|
1天前
|
监控 API 数据库
构建高效后端:微服务架构的实战指南
【6月更文挑战第14天】在数字化浪潮下,后端开发面临着前所未有的挑战和机遇。本文将深入探讨微服务架构的设计理念、实现方式及其在现代软件开发中的重要性,为读者提供一份全面而实用的微服务实战手册。
|
1天前
|
负载均衡 监控 测试技术
微服务架构下的API网关设计
【6月更文挑战第14天】本文将深入探讨微服务架构中的核心组件——API网关,分析其在系统设计中的重要性和实现策略。我们将通过一个具体的案例,展示如何构建一个高效、可扩展的API网关,以满足现代应用程序的需求。