iOS快速开发框架Bee-Framework应用和解析(一) --- 为什么使用Bee framework
来源:互联网 发布:中国联通网络套餐种类 编辑:程序博客网 时间:2024/05/16 08:02
去年夏天,兼职参与了一个创业项目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一套代码搞定。具体见下表:
iOS 框架
核心优点
局限
易上手度
界面可定制性
功能完整性
Three20
简单
无框架,仅重用代码
容易
无
弱
Nimbus-Kit
较完整
无框架,需要学习大量的class, 不易上手
一般
强
强
Bee-Framework
框架完整,分层清晰
Bee UI Template无法替代原生/自定义控件
容易
强
非常强
CrossApp
iOS,Android
二合一
需要学习全新C++框架,可能需要自己开发控件
一般
一般
非常强
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消息。具体优缺点可见下表说明:
使用选择
说明
收益
局限
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和自定义控件的风格不太一致。
Q: 使用Bee-Framework有哪些局限?
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应用和解析(二) - Bee framework架构概览
- iOS快速开发框架Bee-Framework应用和解析(三) --- Message, Model, Signal
- iOS快速开发框架Bee-Framework应用和解析(三) - Message, Model, Signal
- android ios 快速开发框架Bee Framework
- iOS快速开发框架--Bee Framework
- iOS快速开发框架--Bee Framework
- iOS快速开发框架Bee-Framework应用和解析 (四,完结)UI容器,UICell, UILayout(XML + CSS)
- 推荐一款国人开发的 MVC快速开发框架 Bee Framework
- Bee-Framework初探
- bee
- bee
- Bee
- bee框架学习笔记
- 快速浏览ios框架系列(一)----UIKit Framework
- beego和bee的安装、自动生成API框架
- 使用bee生成xml文件
- Keil生成Bin文件的方法
- 关于大型网站技术演进的思考(二)--存储的瓶颈(2)
- 存中文进数据库变成乱码--未解决
- Android4.3引入的UiAutomation新框架官方简介
- struts2防止表单重复提交
- iOS快速开发框架Bee-Framework应用和解析(一) --- 为什么使用Bee framework
- Ubuntu 14.04 LTS下安装Google Chrome浏览器
- hdu 5120 Intersection(几何 容斥)
- 关于大型网站技术演进的思考(三)--存储的瓶颈(3)
- epoll详解
- Problem 037——UVa 207 - PGA Tour Prize Money
- 关于大型网站技术演进的思考(四)--存储的瓶颈(4)
- 关于大型网站技术演进的思考(五)--存储的瓶颈(5)
- C++代码中 栈溢出错误 chkstk.asm 一则