Redian新闻
>
Airbnb 的三阶段 SwiftUI 迁移实践

Airbnb 的三阶段 SwiftUI 迁移实践

科技

作者 | Sergio De Simone
译者 | 明知山
策划 | 丁晓昀

从 2022 年开始,Airbnb 的 iOS 团队就认为 SwiftUI 已经足够成熟,可以在他们的官方应用中使用它。但 Airbnb 的工程师 Bryn Bodayle 表示,这需要一个谨慎的转换过程。

Airbnb 的工程师认为,SwiftUI 的主要优势是它的灵活性和可组合性、声明性、简洁性和惯用性,他们希望这些优势可以改进开发者体验,同时不会在用户体验方面有所损失。

为了尽可能实现无缝的过渡,他们制定了一个三阶段计划。在第一阶段,他们基于现有的设计系统构建一系列可重用的组件。在第二阶段,他们对基本组件进行组合,构建出整个屏幕。在第三个也是最后一个阶段,屏幕将被组合成完整的功能。

在开始前两个阶段之前,Airbnb 的一群自愿者工程师先进行小型试点,并收集反馈,尽早改进他们的基础设施。

如上所述,第一步是基于一系列风格使用 SwiftUI 重建现有的设计系统,这些风格可以通过修饰符实例化并传给视图。这为开发人员使用几行代码轻松定制 UI 组件提供了基础。

第二步是构建基础设施,实现基于 UIKit 的 Epoxy 视图和 SwiftUI 视图之间的双向桥接。桥接的实现细节可以在原文中找到。简单地说,桥接是基于 UIHostingViewController(将 SwiftUI 层次结构嵌入到视图控制器)和 UIViewRepresentable(将 UIKit 视图集成到 SwiftUI 层次结构)。

Airbnb 工程师做出的另一个决定是将 Epoxy 的单向数据流应用到 SwiftUI,将 ObservableOject 作为状态类的基础,在每次状态变化时触发 SwiftUI 重新渲染。

我们发现,工程师们更喜欢继续使用这种方法来构建屏幕,因为这样可以让业务和状态修改逻辑与表示逻辑分开。

可测试性在 Airbnb 有比较高的优先级。他们的新 SwiftUI 实现需要能够很好地适应他们的快照测试方法。为此,他们为每个定义的视图变体起了一个名字,以便与他们的快照测试服务一起使用,并让所有视图变体遵循 Xcode 的 PreviewProvider 协议,以便使用 Xcode 预览。此外,为了支持行为风格测试,他们集成了 ViewInspector。ViewInspector 允许在运行时遍历视图层次结构,并可直接访问底层“视图”结构体,从而使内部状态变得可检查,并可以编程的方式模拟用户交互。

Bodayle 解释说,与 UIKit 实现相比,现在的代码量大约减少到原来的六分之一,而且没有出现与 SwiftUI 响应性相关的性能损失,除了实例化 UIHostingController 时的一点开销。

关于 Airbnb 采用 SwiftUI,这里无法全部概述,所以请不要错过原文的内容和一些有用的代码片段。

原文链接:

https://www.infoq.com/news/2023/10/airbnb-transitioning-swiftui/

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐
下一代 Docker 来了!1小时构建缩至1.5分钟,还能结合 LangChain、Ollama 等做 AI 应用开发
苹果中国App Store将不允许未备案应用上架;iPhone 15发热严重,问题源于第三方软件?Meta又要裁员了 | Q资讯
微软裁员内幕
Angular 重磅回归

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
“租客不要脸!” Airbnb豪宅被白住540天,洛杉矶牙医崩溃了...今日起严格执行!在纽约市提供Airbnb短租,需要提前注册!案例:豪宅Airbnb出租,租客不仅一年半不付房租,还要求房东付10万美元才肯搬走故事 I “地狱租客”:豪华Airbnb留宿540天拒付房费纽约新规:下月起严查Airbnb,未注册房东将被罚$100-5000,这是你需要知道的闹心!Airbnb豪宅被白住540天,来自“地狱”的租客?揭秘:酒店比Airbnb和Vrbo租房更便宜,价格差距高达这么多?草原诗人——邢奇遇见。记下。房东注意!BC省府公布监管短租立法!需有地方政府营业执照或省级注册!大批Airbnb房源要下架征税7.5%!维州政府要对Airbnb下手了!“部分税款将用于建设新住宅”重要里程碑!黑石 Airbnb将纳入标普500指数;ARM上市估值$520亿,苹果英伟达计划购买股份Airbnb监管机构:将多伦多数百套公寓标记为“幽灵酒店”纽约开始严厉打击Airbnb澳洲旅客在Airbnb中发现令人恶心的事!网友:这是最可怕的噩梦每日 24 亿事件处理:Airbnb 的 Riverbed 技术解析Interbrand 2023全球百强品牌榜:Airbnb、Prada、Sephora 品牌价值增幅领先“租客不要脸!” Airbnb豪宅被白住540天,美国房东崩溃了...“假期住我家”黄金周爆火,野生版Airbnb犹如开盲盒古斯塔夫·克林姆特(Gustav Klimt)的金色可怕!安省一家Airbnb酒店发现摄像头,就隐藏在充电器中Airbnb做二房东,赚了$13.6万佐州夫妻买土地开Airbnb,被人盗图做假账号结果一下子火了!杀人偿命,欠债还钱!卡特兰,半水培萌出新芽新根超适合多伦多华人!加拿大热门地点$58.5万起就能买房!Airbnb物业新思路洛杉矶将审议短租房新规!南加州日租房、度假屋、爱彼迎Airbnb经营成本将增加?美国房产最前线 孙斯陶 2023.09.02重磅 ◇ BC省拟10月立法管制短租房,大批房源或将被Airbnb下架!维州或将对Airbnb房东征收7.5%税,墨尔本租金每晚上涨$17美国空姐在Airbnb做二房东,赚了$13.6万在爱尔兰做Airbnb的房东难不难,新移民可以尝试吗?美国Airbnb豪宅被白住540天,房主崩溃了...让Airbnb更卷 – Hyatt计划开展民宿短租业务凯悦也来卷民宿了!Airbnb瑟瑟发抖?“租客不要脸!” Airbnb豪宅被白住540天,牙医崩溃了...
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。