58同城iOS客户端:从MVC到Hybrid架构的组件化演进

0 下载量 80 浏览量 更新于2024-07-15 收藏 702KB PDF 举报
58同城iOS客户端的组件化演变历程始于2010年,随着公司的发展和市场竞争的加剧,其客户端架构经历了显著的变化。最初的版本遵循MVC设计模式,采用了纯Native页面,结构清晰,分为UI展现、业务逻辑和数据访问三层,以满足早期相对简单的业务需求(如图1所示)。 然而,随着业务量的增长和苹果应用审核周期的延长,纯Native开发的局限性开始显现。尤其是对于需要频繁更新且工作量较大的功能,如分类列表和详情页面,采用HTML5技术成为更好的解决方案。因此,58同城推出了第二版架构,引入了Hybrid框架,如图2所示,通过UIWebView加载HTML5页面,实现了与Native的交互,比如用户点击类别时可以触发Native方法进行页面跳转或记录日志。 然而,使用UIWebView存在一些挑战。首先,如何解决Hybrid中的Web与Native的高效交互成为关键。这涉及到设计一种机制,以便用户操作能够无缝传递给Native代码。其次,HTML5页面的加载速度是优化的重点,因为JavaScript、CSS和图片资源的下载会占用大量时间。为了解决这个问题,团队选择内置频繁访问页面的资源,并利用NSURLCache的缓存机制进行优化,自定义了一个名为WBHybridComponent的子类,负责加载预加载的资源,如图3所示。 HTML5ViewController承载HTML5页面,而WBCacheHandler则专门负责管理和处理缓存,确保常用页面的快速加载。这种方法显著提高了用户体验,尤其是在面对动态更新和性能需求日益增长的背景下,58同城iOS客户端的组件化架构适应了业务发展,实现了效率和灵活性的提升。这一历程不仅展示了58同城的技术迭代能力,也反映了移动应用开发中针对不同阶段需求进行架构调整的重要性。