iOS快速开发框架Bee-Framework应用和解析(一) --- 为什么使用Bee framework
2015-02-09 16:25
537 查看
去年夏天,兼职参与了一个创业项目iOS部分的开发。可能是iOS刚入门的原因吧,对苹果原生的开发方式有以下的不好的感觉:
巨型ViewController, 由于delegate和data source的存在,让view controller承担的太多的责任。
源代码会引用不少第三方的库以及代码片段,比如AF Networking, ASI Http, JSON kit, push service, location service, 自定义控件,杂乱,难以管理和重用。
作为一个有些经验的老工程师,总是想创建一个App的时候,将其分层,做好数据抽象,让代码清晰好维护。这需要开发者自己做一些抽象和对业务进行研究,将网络协议,数据存储,工具,界面流程等分类分层封装,并管理好第三方的库,力争可最大程度重用。这是一个比较费时的过程。这里要郑重推荐一下Bee-Framework, 如果用OC开发的小伙伴,Bee-Framework就是那个将网络协议,数据存储,工具,界面,分类分层封装,管理好第三方库的简化框架,另外,它还带来了XML+CSS的混合UI开发方式和美观的界面。笔者用Bee-Framework重新实现了开源中国的客户端并上架成功。感觉Bee和原生在工作量上的区别,非界面的部分,至少比常规模式少一半,界面部分应该比常规模式少30%。
分享和整理Bee-Framework知识之前,先来一些问题吧:
Q: iOS boilerplate类的框架,有哪些可以选择,实用性如何?
A: Three20, 前身似乎是Facebook开源的框架,已停止更新,主要包括一些系统功能(数组,表格,Bundle, 本地化)的封装和扩展。NimbusKit, 功能比较全面,包含CSS,比Bee-Framework少了不少功能,但也支持Table Model, InterApp等Bee不具有的功能。Bee-Framework, 功能比较齐全,基于oc,开发上手快,基本不需要特别的帮助,有一定的用户群并有一些商业产品。CrossApp, 纯C++的跨平台开源引擎,支持iOS, Android,
有一些商业产品,社区和资料看上去比较多, 优点是iOS, Android一套代码搞定。具体见下表:
Q: Bee-Framework适合开发什么样的App?
A: 主要适用于信息展示,社交,工具,电子商务客户端等类型的App。能用MVC表述的App都比较适合Bee-Framework.
Q: Bee-Framework适合什么样的组织,什么样的开发者?
A: 适合创业者或小型公司需要快速上线原生App的情况。对于开发者来说可以大幅减少代码量和工作时间, 懂CSS的前端程序员也可以快速上手iOS开发。
Q: Bee-Framework如何封装oc的类,轻重如何?有效率问题吗?
A: 从代码看绝大多数的控件继承了原生控件并加入了一些扩展功能,数据成员似乎不算太多,算是薄薄的一层封装,使用上内存的耗费和原生应用未见明显增多。
Q: 使用Bee-Framework的时候,有哪些推荐的开发方式?
A: 对Bee-Framework,由于其架构的分层非常清晰,互相之间的耦合也很松,所以对其使用可以很灵活,可以大胆用nib, 自定义控件,不用太担心和其他代码的整合。简略的说:是否使用BeeUI控件, 是否使用BeeUI消息。具体优缺点可见下表说明:
Q: 使用Bee-Framework有哪些局限?
A: BeeUICell + XML + CSS的UI开发无法完全代替原生UI和自定义控件。个人认为深层的原因是XML需要在编译时写好(本质上是另一种xib,支持了CSS),而某些运行时变化的控件不够灵活,不可能开始就排布好。这种时候应该果断自己用代码写自定义控件。还有 Interface builder不够完善和好用。
看完了以上这些问题,如果您认为Bee-Framework适合你,不要犹豫,用吧:
https://github.com/gavinkwoe/BeeFramework
巨型ViewController, 由于delegate和data source的存在,让view controller承担的太多的责任。
源代码会引用不少第三方的库以及代码片段,比如AF Networking, ASI Http, JSON kit, push service, location service, 自定义控件,杂乱,难以管理和重用。
作为一个有些经验的老工程师,总是想创建一个App的时候,将其分层,做好数据抽象,让代码清晰好维护。这需要开发者自己做一些抽象和对业务进行研究,将网络协议,数据存储,工具,界面流程等分类分层封装,并管理好第三方的库,力争可最大程度重用。这是一个比较费时的过程。这里要郑重推荐一下Bee-Framework, 如果用OC开发的小伙伴,Bee-Framework就是那个将网络协议,数据存储,工具,界面,分类分层封装,管理好第三方库的简化框架,另外,它还带来了XML+CSS的混合UI开发方式和美观的界面。笔者用Bee-Framework重新实现了开源中国的客户端并上架成功。感觉Bee和原生在工作量上的区别,非界面的部分,至少比常规模式少一半,界面部分应该比常规模式少30%。
分享和整理Bee-Framework知识之前,先来一些问题吧:
Q: iOS boilerplate类的框架,有哪些可以选择,实用性如何?
A: Three20, 前身似乎是Facebook开源的框架,已停止更新,主要包括一些系统功能(数组,表格,Bundle, 本地化)的封装和扩展。NimbusKit, 功能比较全面,包含CSS,比Bee-Framework少了不少功能,但也支持Table Model, InterApp等Bee不具有的功能。Bee-Framework, 功能比较齐全,基于oc,开发上手快,基本不需要特别的帮助,有一定的用户群并有一些商业产品。CrossApp, 纯C++的跨平台开源引擎,支持iOS, Android,
有一些商业产品,社区和资料看上去比较多, 优点是iOS, Android一套代码搞定。具体见下表:
iOS 框架 | 核心优点 | 局限 | 易上手度 | 界面可定制性 | 功能完整性 |
Three20 | 简单 | 无框架,仅重用代码 | 容易 | 无 | 弱 |
Nimbus-Kit | 较完整 | 无框架,需要学习大量的class, 不易上手 | 一般 | 强 | 强 |
Bee-Framework | 框架完整,分层清晰 | Bee UI Template无法替代原生/自定义控件 | 容易 | 强 | 非常强 |
CrossApp | iOS,Android 二合一 | 需要学习全新C++框架,可能需要自己开发控件 | 一般 | 一般 | 非常强 |
A: 主要适用于信息展示,社交,工具,电子商务客户端等类型的App。能用MVC表述的App都比较适合Bee-Framework.
Q: Bee-Framework适合什么样的组织,什么样的开发者?
A: 适合创业者或小型公司需要快速上线原生App的情况。对于开发者来说可以大幅减少代码量和工作时间, 懂CSS的前端程序员也可以快速上手iOS开发。
Q: Bee-Framework如何封装oc的类,轻重如何?有效率问题吗?
A: 从代码看绝大多数的控件继承了原生控件并加入了一些扩展功能,数据成员似乎不算太多,算是薄薄的一层封装,使用上内存的耗费和原生应用未见明显增多。
Q: 使用Bee-Framework的时候,有哪些推荐的开发方式?
A: 对Bee-Framework,由于其架构的分层非常清晰,互相之间的耦合也很松,所以对其使用可以很灵活,可以大胆用nib, 自定义控件,不用太担心和其他代码的整合。简略的说:是否使用BeeUI控件, 是否使用BeeUI消息。具体优缺点可见下表说明:
使用选择 | 说明 | 收益 | 局限 |
BeeCore | 只使用Bee的核心:数据,网络协议,工具部分,不使用Bee的消息系统。 。 | 享受Bee model, controller的好处,不担心和现有MVC框架和消息整合。 | 未能享受Bee消息系统的便利,以及CSS模板的便利。 |
BeeMVC(BeeUISignal) | 使用BeeUISignal用于消息通信, BeeViewModel优化数据存储,使用BeeUIBoard加载xib。 | 享受BeeUISignal和BeeViewModel的好处,不使用Bee的模板界面开发方式。适用于自定义控件需求较多的场合。 | 未能享受CSS模板的便利。 |
BeeUI + UIView | 使用BeeUICell开发自定义控件,混合个别自定义控件。 | 享受BeeUICell便利的CSS开发和调试。 | BeeUICell和自定义控件的风格不太一致。 |
A: BeeUICell + XML + CSS的UI开发无法完全代替原生UI和自定义控件。个人认为深层的原因是XML需要在编译时写好(本质上是另一种xib,支持了CSS),而某些运行时变化的控件不够灵活,不可能开始就排布好。这种时候应该果断自己用代码写自定义控件。还有 Interface builder不够完善和好用。
看完了以上这些问题,如果您认为Bee-Framework适合你,不要犹豫,用吧:
https://github.com/gavinkwoe/BeeFramework
相关文章推荐
- iOS快速开发框架Bee-Framework应用和解析(二) - Bee framework架构概览
- iOS快速开发框架Bee-Framework应用和解析(二) --- Bee framework架构概览
- iOS快速开发框架Bee-Framework应用和解析(三) - Message, Model, Signal
- iOS快速开发框架Bee-Framework应用和解析 (四,完结)UI容器,UICell, UILayout(XML + CSS)
- iOS快速开发框架Bee-Framework应用和解析(三) --- Message, Model, Signal
- 使用CodeIgniter框架快速开发PHP应用(一)(转载请保留出处)
- iOS快速开发框架--Bee Framework
- 使用 CodeIgniter 框架快速开发 PHP 应用(一)
- 使用CodeIgniter框架快速开发PHP应用(七)
- 使用 CodeIgniter 框架快速开发 PHP 应用(四)
- 使用 CodeIgniter 框架快速开发 PHP 应用(二)
- IOS开发 使用TouchJSON框架 解析JSON
- 使用 CodeIgniter 框架快速开发 PHP 应用(七)
- NHibernate的基本使用、快速入门 - Microsoft.NET开发框架应用资源(zhuan)
- 使用CodeIgniter框架快速开发PHP应用(八)
- 使用 CodeIgniter 框架快速开发 PHP 应用(六)
- 论坛源码推荐(4月23日):支付形式的iOS实用库 能够调整歌曲播放速度的应用 快速的集成和开发框架
- 使用 CI 简化数据库开发 《使用 CodeIgniter 框架快速开发 PHP 应用》
- 使用CodeIgniter框架快速开发PHP应用(四)