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年不到他们大都去当领导去了。一般只有在它刚干这行的前五年才能见到这类人。所以招聘人就是招聘人和他的工作经验,组件化和架构是非必需条件,有更好。

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

公有库

私有库和中间件

私有组件工程文件结构

业务组件工程文件结构

目录
相关文章
|
11月前
|
缓存 监控 前端开发
中间件和插件的区别是什么?
中间件和插件的区别是什么?
544 67
|
算法 Java 数据库
Android 应用的主线程在什么情况下会被阻塞?
【10月更文挑战第20天】为了避免主线程阻塞,我们需要合理地设计和优化应用的代码。将耗时操作移到后台线程执行,使用异步任务、线程池等技术来提高应用的并发处理能力。同时,要注意避免出现死循环、不合理的锁使用等问题。通过这些措施,可以确保主线程能够高效地运行,提供流畅的用户体验。
1033 156
|
UED 开发者 Python
使用Python构建命令行工具:argparse和click库的使用
使用Python构建命令行工具:argparse和click库的使用
584 0
|
测试技术 iOS开发
用Instruments分析内存使用情况
用Instruments分析内存使用情况
1855 1
|
运维 Oracle 安全
在家参加OCP考试(MySQL OCP和Oracle OCP)
考试前 考试前需要了解信息如下
2342 0
|
12月前
|
缓存 Android开发 开发者
《跨端开发变革者:解码阿里Ant Container Engine的底层逻辑》
阿里Ant Container Engine(ACE)是跨端开发领域的革新工具,通过一套代码库实现多端应用构建,大幅降低开发成本与周期。它整合丰富组件库与优化工具链,确保各平台一致的优质体验。ACE的热插拔技术实现毫秒级更新,助力应用快速迭代;深度性能优化使其媲美原生应用。以闲鱼为例,其跨端模块占比达78%,彰显ACE高效灵活特性。ACE助力企业降本增效、抓住市场机遇,推动数字化创新与发展。
233 11
SVN 提交代码后面如何修改日志信息
SVN 提交代码后面如何修改日志信息
1936 0
|
前端开发 JavaScript UED
什么是组件化设计
【10月更文挑战第22天】什么是组件化设计
|
前端开发 UED
组件化的好处是什么
【8月更文挑战第13天】组件化的好处是什么
611 1

热门文章

最新文章

下一篇
开通oss服务