iOS组件化之路(一)
写在最前
从开始学写代码,胡乱的看书,不懂如何写第一个程序,到开始写出第一个程序,这段道路有些漫长。慢慢开始自己独立的去分析给出的需求,到如何实现,最初的想法只是仅仅实现,到后来懂得如何利用自己技术和经验去解耦合。自从踏上移动端iOS开发的道路,就开始用过往的技术和经验去解耦合的道路,也看过各个论坛大牛的各种得意之作。总想着自己造个轮子,虽然不及前人优秀,总会从实践中提升自身的技术素养,也算是提高自身水平的一次次尝试吧。
初尝试
任何软件开发都需要一系列的入口(通常应该是main函数吧),而以往开发,会随着业务需求的增加使入口不断的膨胀,而且各个业务之间耦合的极其严重,到最后不得不去重构甚至重写代码。
iOS App经过系统创建进程以及一些列动作后,会交给UIApplicatonDelegate代理,而很多情况下,在代理中大量的冗余臃肿的代码使维护用来越难以梳理。我要解决的痛点是避免UIApplicatioinDelegate实现类的臃肿与冗余,各个模块视图之间实现松散的耦合,内部可以实现强聚合。
我的想法使构建一个封闭的UIApplicationDelegate代理对象(私有实现),通过两个配置文件和一个中心对象(EZAppEngine)来接管App控制权,在一个配置文件中基于JSON格式来生产根控制器以及根UIWindow对象,另一个配置文件(plist,以后的打算自己生产一个格式)来配置实现了给定接口(这里使OC的协议)的类。然后将UIApplicationDelegate得不同方法拆分成不同协议,这样子解决了UIApplicationDelegate本身的臃肿和冗余问题。接下来还有一个问题,就是各个页面(视图控制器和模态视图)之间解耦合,最初我使用一个封装的对象,通过传入类名和初始化方法以及参数,来创建页面,最终使用视图控制器来确定如何显示,这个方法虽然减少依赖,但是还是不够完善。路由思想本身来自Web端的工程,不同的路径请求被Web服务器分发到各个执行的类中,iOS也可以利用这种思想实现解耦合,并可以跟好解决了WebView和Navtive交互的问题。CocoaPods的出现通过依赖管理以及模块的路由机制,很好的解决解耦合、模块复用的问题,通过自动化CI,可以很容易的将各个不同的模块构建一个新的App.
模块化+POD私有库/公有库+CI总体结构

模块化结构
我定义了抽象的工具(EZToolUtilites), 网络封装(EZServiceUtilites), 核心(EZAppUtitlies)私有库,EZAppEngine中包含了接口协议定义以及对配置文件的解析,默认会使用当前{Target}.json和{Target}.plist,来完成启动工作,另外还定义了项目中经常使用的视图、视图控制器的类库。
接下来会通过合适的粒度对业务模块进行模块拆分,这个需要一定经验,对于产品可能不停的迭代和完善的过程。

胡乱写这么多,接下来继续完善自己的思路。:P
--
学无止境,逆水行舟不进则退,给自己加油!!!!!
iOS组件化之路(一)的更多相关文章
- iOS组件化思路 <转>
随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好 ...
- iOS组件化思路-大神博客研读和思考
一.大神博客研读 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的 ...
- iOS 组件化 —— 路由设计思路分析
原文 前言 随着用户的需求越来越多,对App的用户体验也变的要求越来越高.为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VIPER等复杂架构.更换适合业 ...
- iOS 组件化的几篇文章
随着工程的成长,开发人员的增多,合理的模块划分及低耦合的重要性显得愈发重要.最近在思考这方面的问题,也读了不少通过组件化解耦的文章,这里记录一下. 前 5 篇文章有些关联,建议阅读顺序,1.3.2.4 ...
- iOS 组件化方案
概述 近一年iOS业界讨论组件化方案甚多,大体来说有3种. Protocol注册方案 URL注册方案 Target-Action runtime调用方案 URL注册方案据我了解很多大公司都在采用,蘑菇 ...
- iOS 组件化
iOS 组件化介绍 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间 ...
- 使用CocoaPods创建自己的私有库-iOS组件化第一步
目前iOS组件化常用的解决方案是Pod+路由+持续集成,通常架构设计完成后第一步就是将原来工程里的模块按照架构图分解为一个个独立的pod工程(组件),今天我们就来看看如何创建一个Pod私有库. 新建: ...
- iOS 组件化路由框架 WisdomRouterKit 的应用
[前言] 大家好,写作是为了和读者沟通交流,欢迎各位开发者一起了解 WisdomRouterKit SDK 的功能. 关于 iOS 组件化路由方案框架: WisdomRouterKit 的功能介绍,之 ...
- iOS组件化实现方案
作者原文iOS组件化 - 路由架构从0到1实战 合伙呀 1.CTMediator作为路由中间件 2.基础UI组件以pod形式引入,并且能够独立运行调试 3.基础工具组件以pod形式引入,并且能够独立 ...
随机推荐
- Django与ajax、分页器
ajax简单数据响应 ajax请求,后台只需要返回信息,所以不会出现render.redirect 模板层: $('.btn').click(function() { $.ajax({ url: '/ ...
- PostgreSQL自学笔记:8 查询数据
8 查询数据 8.1 基本查询语句 select语句的基本格式是: select {* | 字段1[,字段2,...]} [ from 表1,表2... [where 表达式] [group by & ...
- react-native添加react-native-vector-icons插件android遇到的问题
问题 yarn add react-native-vector-icons后图省事使用react-native link来添加native配置,结果run时报错. ps:安装的需要native的插件不 ...
- HTML入门5
格式化文本,高阶处理,接下来了解,标记引文,描述列表,计算机代码和其他文本,上下标,联系信息等数据. 学习不太知名的HTML元素来标记高级语义特征. 描述列表,也叫自定义列表,第三种类型的列表,除了u ...
- 锋利的jquery 事件 动画
事件 $(function){} bind(type, [data],function) 事件类型, 传递参数, 处理函数 hover(enter, leave) 光标停留时,函数enter,离开时函 ...
- .NET平台常用的框架
转自:https://www.cnblogs.com/lhxsoft/p/8609089.html 分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memcahe ...
- vcs编译verilog/sysverilog并执行
命令: sverilog:表示支持systemverilog,如果只编译verilog不需要加 test.sv :这个可以是一个systemverilog/verilog文件,也可以是一个filel ...
- 课堂笔记及知识点----栈和队列(2018/10/24(am))
栈: Stack<int> xt=new Stack<int>() ; 先进后出,后进先出,水杯结构,顺序表类似 常用方法: .pop---->出栈,弹栈 ...
- 第一次OO阶段性总结
作业一 在第一次作业发布的时候对这次作业比较掉以轻心,因为之前在暑假的时候上过先导课,对面向对象的编程思想和java的语法都比较熟悉,加上有其他的事物分心,所以到了最后一天才开始着手写代码,轻视作业的 ...
- netbeans10支持php7.1-7.3
2019年1月16日10:56:49 官方发布时间2018年12月27日 PHP支持 NetBeans 10的所有PHP支持都是由我们的NetBeans提交者 Junichi Yamamoto提供的. ...