HubFramework 2.0.10

HubFramework 2.0.10

测试测试
Lang语言 Obj-CObjective C
许可 Apache 2
发布最后发布2017年5月

John SundellAron CedercrantzYunus Nedim Mehel维护。



Spotify FOSS Slack

欢迎使用Hub框架 - 一个用于在iOS上构建原生、组件驱动的UI的工具包。它是为任何规模的团队设计的,能够快速构建、调整和发布新的UI功能,无论是新应用还是现有应用。它还使得构建由后端推动的UI变得简单。

Hub框架有两个核心概念 - 组件内容操作

组件

而不是构建具有针对控件、数据绑定和选择处理的特定行为的UIViewControllers - 一个由Hub框架驱动的UI完全是关于组件的。

组件可以以任何方式重用和重新排列,并可以渲染任何模型。每个组件都定义了屏幕上的一个矩形,其中可以渲染任何内容,这使得快速迭代UI变得容易,并创建了模块化的构建块,从而减少了代码重复的需求。

好消息是您不需要重写现有的UIViews来开始使用Hub框架,相反,框架的架构完全基于协议,这使得添加现有UI的兼容性变得容易。

要了解更多关于组件的信息,请查看组件编程指南

内容操作

为了匹配高度动态的组件驱动UI,内容操作以声明性方式定义要渲染的内容。内容可以是在代码中定义的,在应用程序中本地运行,或者由后端系统提供的JSON。这使您可以轻松聚合来自多个来源的数据,并直接从后端更改UI及其内容。

应用程序的每个功能都可以定义自己的内容操作,并将它们组合成一个内容加载链。每个操作都可以执行UI状态的原子性变异,从而便于实现A/B测试或提供系统级的通用功能,如缓存或加载指示器。

要了解更多关于内容操作的信息,请查看内容编程指南

背景故事

那么,我们为什么要构建这个?在Spotify,我们喜欢尝试我们的UI,用新的令人兴奋的方式呈现内容 - 并且继续学习什么有效,什么无效。

然而,传统在iOS上构建和发送UI的方式正在减缓我们的速度。始终需要从头开始编写UIViewControllers,硬编码行为并将特定模型绑定到特定视图,导致迭代速度慢,而且有很多重复的工作。

所以我们像往常一样,开始进行实验。Hub框架就是这些实验的结果。我们意识到,通过将我们的UI构建为"内容中心",使用组件作为构建块,并通过内容操作完全分离我们的模型代码和UI - 使我们的应用更加动态,更容易操作。更重要的是,通过让我们的后端JSON数据包含额外的元数据和完全本地化的字符串,我们可以直接渲染响应。而不必在所有视图中进行大量的自定义映射和转换。

结果是,我们现在可以比以往任何时候都更快地实验和尝试新的UI想法 - 同时维护的代码量较少。通过与您共享Hub框架 - 开源社区 - 我们希望更多的应用程序和团队能够从使用这种类型的架构中受益。

Spotify是如何使用这个的?

这个框架在每天有数百上百万用户使用的Spotify iOS应用中被用于生产。我们用它来构建“浏览”、“跑步”、“派对”、“流派”页面等视图。值得注意的是,我们不会保留这个仓库的内部镜像 - Hub框架的 所有开发都在公开环境中进行。

兼容性

Hub框架与iOS 8或更高版本兼容,可以使用Objective-C或Swift。在Swift中,API已注解以感觉是Swift原生的,并为Swift 3正确标记了nullability和API优化。

虽然框架本身完全用Objective-C编写,但演示应用是用Swift 3编写的。

安装

您可以选择手动安装Hub框架,也可以通过依赖管理器进行安装。

手动安装

  • 克隆这个仓库(例如,将其作为子模块添加)。
  • 将项目HubFramework.xcproj拖入Xcode,作为您的应用程序项目的子项目。
  • 通过将“Linked Frameworks and Libraries”下“General”选项卡中的“HubFramework”添加到最旁边的列表中来链接它。

SystemConfiguration链接

一旦安装了Hub框架,请将您的应用程序与Apple的SystemConfiguration框架链接起来。这是通过在应用程序项目的“General”选项卡下选择“Linked Frameworks and Libraries”来完成的。这个框架用于确定使用Hub框架的应用程序的连接状态。

导入框架

在Objective-C中

#import <HubFramework/HubFramework.h>

在Swift中

import HubFramework

入门

为了帮助您快速入门使用Hub框架,我们创建了一个配置指南,它会带您了解如何在应用程序中设置它,以及一个入门指南,它会提供一个逐步教程,指导您如何使用它构建第一个视图。

此外,还有一系列的编程指南,每本指南都会向您介绍框架的各个方面。

演示应用

要查看Hub框架的一个实现示例,请打开演示应用,它包含一些不同的功能,展示了框架的一些功能。

文档

Hub框架的API得到了很好的文档,我们生成了一个文档网站以及用于文档应用的DocSetDash。文档也编写成Xcode在用时ész传递的方式。

Dash文档会自动更新,以反映框架的任何更改。通过订阅https://spotify.github.io/HubFramework/docsets/HubFramework.xml源来获取它。

实时编辑

由于Hub框架允许使用JSON数据定义UI,所以它还允许您快速使用本地JSON文件构建或原型化UI。它包含一个命令行工具(hublive),当你运行它时,它允许您实时看到在本地JSON文件中做出的更改。有关如何使用实时编辑的更多信息,请参阅实时编辑指南

Xcode文件模板

Hub框架包含一系列Xcode文件模板,使得创建组件、内容操作等的样板文件变得容易。

要安装它们,只需复制位于templates/xcode中的Hub Framework文件夹到~/Library/Developer/Xcode/Templates/File Templates(可能需要在路径中创建最后两个文件夹)。

帮助 & 故障报告

如果您需要帮助或希望报告故障 - 请提交一个问题。请确保为我们提供尽可能多的可调试信息,如使用的iOS版本和任何重现步骤。示例代码也有助于我们为您提供帮助。

您还可以直接与Hub框架背后的团队合作交谈!Spotify FOSS社区有一个Slack群组,您可以加入。一旦加入,就可以转到hubframework通道来与我们交谈!

贡献

每个人都非常欢迎为Hub框架贡献力量!我们可以共同努力使框架更有能力,并帮助我们解决任何我们可能遇到的问题。然而,在贡献力量之前,请阅读我们的贡献指南

作者

Hub框架在SpotifyJohn SundellAron CedercrantzRobin Goos其他一些人构建。