iOS组件化(五)-组件间调用

本文为博主原创文章,未经博主允许不得转载
上一讲中,我们说了怎么进行解耦合工作,但是做到最后就会发现,我们总是会剩下一些跳转等耦合行为,我们无法处理这些耦合行为,我们就无法进行独立拆分。
所以我们需要一种组件间的调用方式,该方式是一种解耦合的调用方式,这样我们将剩余的耦合行为全部替换为这种解耦合的组件间调用方式,我们的业务才真正的独立,才能顺利组件化。

一、什么样的组件需要互相调用

组件是有层级之分的,有上下的依赖关系(比如对业务而言的基础库),也有同级的互相接口调用关系(比如不同的上层业务相互提供能力)。
这里写图片描述
在下上的依赖关系下,一般不牵扯调用,依赖即实现代码存在,不需要调用,直接用即可。而同级组件之间为了独立,需要解耦合,则不存在相互的依赖,这样的组件之间才需要相互调用,获取对方的能力。

二、组件间调用的方式

在开发一个APP的时候,需求一来,基本上是前端后端一起进行开发,大家一起定义一个接口文档,后台按照文档去写实现,前端按照文档去写逻辑,在联调之前彼此都是独立的。
所以,组件间调用方式也由此产生,定义一份接口文档,组件能力提供方(后台)写实现,调用方(前端)根据接口写逻辑,开发阶段互不影响。

1、路由

以JLRoute为例,其他的路由也大同小异。
JLRoute的实现即可以看成url(接口)映射block(实现)的方式来解耦调用方和实现方。调用方在需要使用的地方对url进行openurl的操作,不需要对实现方进行依赖;而实现方只需要关心映射到url的block实现,不关心这个url谁使用怎么使用,而url plist在这里面作为文档使用,当合成主工程联调时,则相应的url就会有相应的block为其实现。
官网页面:https://github.com/joeldev/JLRoutes
具体的使用例子这里就不赘述了,网上一搜一大把。

2、runtime

runtime作为OC特有的动态特性,非常适合解耦合。
runtime允许运行阶段确定对象、方法、参数,基于此,我们的调用方可以不依赖实现方,只需要在使用的时候将对象、方法、参数都准备好进行调用即可,而被调用方理论上所有的属性、方法都可以被调用方使用,只要调用方知道你的类名,属性名,方法名。
这里以CTMediator为例,他对调用方式做了代码优化,所以使用起来相对美观。他通过category来为不同的组件创建接口文档(为了调用美观和接口直观,实际上可以不需要),该接口通过CTMediator动态的映射到实现方提供的实现方法上,在动态映射这个步骤来解耦合。
官方页面:https://github.com/casatwy/CTMediator
具体方法不再赘述,可以搜索相关文章,CTMediator比起JLRoute来说使用更简单。

三、最后的解耦合工作

将组件间调用环境搭建好,修改最后的几处组件调用的地方,使我们的业务组件与其他业务组件完全解耦,这个时候我们终于可以建立独立工程,跟基础库一样,建立我们的独立业务组件库了。

四、后续的工作

其实完成业务独立,我们可以说组件化工作已经完成了,我们的目的已经达成,但是光这样是不够的,我们还有很多的优化项,否则我们的独立工程开发、测试都会很困难,只是业务代码独立而已,下一次,我们将开始壳工程的优化。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: uniapp组件生命周期包括created、mounted、updated、destroyed等阶段。created阶段是组件实例被创建时触发,可以在这个阶段进行数据初始等操作;mounted阶段是组件挂载到页面上时触发,可以进行DOM操作等操作;updated阶段是组件数据更新时触发,可以进行数据更新后的DOM操作等操作;destroyed阶段是组件实例被销毁时触发,可以进行清理操作等操作。 ### 回答2: uni-app是一种跨平台应用开发框架,它基于Vue.js,开发者可以使用Vue语法来构建应用。在uni-app中,组件生命周期分为创建、更新、销毁三个阶段。 1. 创建阶段: 组件创建时,会依次调用beforeCreate、created、beforeMount、mounted方法。 beforeCreate方法在实例创建之前被调用,此时组件实例还未初始,不能访问组件的数据和方法。 created方法在实例创建完成后被调用,此时组件实例已经创建完成,可以访问组件的数据和方法。 beforeMount方法在组件挂载前被调用,此时模板已经编译完成,但未挂载到页面中。 mounted方法在组件挂载后被调用,此时组件已经添加到页面中,可以进行DOM操作。 2. 更新阶段: 组件更新时,会依次调用beforeUpdate、updated方法。 beforeUpdate方法在组件更新前被调用,此时数据已经更新,但DOM还未重新渲染。 updated方法在组件更新后被调用,此时组件已经重新渲染,可以进行DOM操作。 3. 销毁阶段: 组件销毁时,会调用beforeDestroy、destroyed方法。 beforeDestroy方法在组件销毁前被调用,此时组件实例还存在,可以进行善后操作。 destroyed方法在组件销毁后被调用,此时组件实例已经被销毁,无法再访问组件的数据和方法。 组件生命周期的作用是在不同阶段进行相应的操作,如在created阶段进行数据初始,在mounted阶段进行DOM操作,在destroyed阶段进行资源释放等,以确保组件的正常运行和优性能。 ### 回答3: uni-app 是一款基于 Vue 实现的跨平台开发框架,用于开发 iOS、Android、华为、微信小程序、支付宝小程序等多个平台的应用。uni-app 的组件生命周期包含以下几个阶段: 1. beforeCreate:在实例初始之后,数据观测和事件配置之前调用,此时还无法访问到组件实例的 data 和 methods 等属性。 2. created:在实例创建完成后调用,此时可以访问到组件实例的 data 和 methods 属性,并可以进行一些初始的操作。 3. beforeMount:在组件挂载到页面之前调用,此时组件的模板已经编译完成,但尚未挂载到页面上。 4. mounted:在组件挂载到页面后调用,此时组件已经渲染到页面上,并且可以进行一些 DOM 操作。 5. beforeUpdate:在组件更新之前调用,此时组件的 data 数据已经发生变,但尚未重新渲染页面。 6. updated:在组件更新之后调用,此时组件的 data 数据已经更新,并且页面已经重新渲染。 7. beforeDestroy:在组件销毁之前调用,此时组件实例仍然可用,并可以进行一些清理工作。 8. destroyed:在组件销毁之后调用,此时组件实例已经被销毁,事件监听和数据绑定都已解除。 需要注意的是,在父组件销毁时,子组件的生命周期也会跟随父组件的销毁而终止。 组件生命周期的不同阶段提供了不同的钩子函数,可以通过钩子函数来执行一些特定的逻辑代码或操作,以满足实际的业务需求。比如在 created 钩子函数中进行接口请求、在 mounted 钩子函数中进行 DOM 操作等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值