对闲鱼分享组件升级后,才知道什么叫灵活可扩展...

本文涉及的产品
.cn 域名,1个 12个月
简介: amazing~

 作者:闲鱼技术——狸克

背景

今年九月时,闲鱼将原有的社区产品 “鱼塘” 升级为 “会玩” 社区。对于一个社区型的产品,分享功能可以借助用户的社交圈子进行传播,提升产品的曝光量,吸引新用户关注,拉拢老用户留存。但闲鱼原有的分享功能更多的是从商品分享的角度来设计的,不适合会玩社区中用户创建的图文内容分享,为此我们开发新版的分享组件。

新旧分享对比
旧版分享流程新版分享流程

下文将介绍新版分享组件的实现。

具体实现

分享组件时序图

分享组件时序图

如上面图中所示,我们将新版的分享组件分为了分享页面、分享底层 API 和回流页三个部分:

  • 分享页面:前端通过 Weex 实现分享页面,在保证两端的体验一致的情况下,还拥有不错的可扩展性;
  • 分享底层 API:客户端提供分享所需的底层能力,通过 JSBridge 的方式让前端调用;
  • 回流页:提供统一的拉端能力;

画报生成

传统认知中认为分享的内容是最重要的,但实际上分享的形式同样重要。

分享形式对比
分享形式对比

相比于以前图文链接的分享形式,画报分享能够将更多的内容展示给被分享者,提高分享的吸引力。

对于画报的生成,其要解决的就是将给定的若干张图片拼接成一张定宽的长图,我们可以通过归纳法来解决这个问题:

  1. 通过图片的宽高大小关系来将图片分成横图(宽 ≥ 长)长图(长 > 宽)
  2. 处理只有 1 张图的情况,我们只需要将这个图片缩放到所需的定宽即可;
  3. 处理只有 2 张图的情况,这个时候我们排列方式如下:

2 张一组的图片排列

以第一张图为标准确定排列方式,将第二张图进行缩放;

  1. 对于张数为 n 的图片,我们都可以分解成 $n = 2 * x + 1 * y$ 的形式,其中 xy 指代张数为 2 和 1 的图片分组排列;
  2. 但如果仅仅将图片分成张数为 1 和 2 的组进行排列拼接,整体的拼图会略下单调,所以我们又添加了张数为 3 的图片分组,它们的排列如下:

3 张一组的图片排列

  1. 对于张数为 n 的图片,我们都可以分解成 $n = 3 * x + 2 * y + 1 * z$ 的形式,其中 xyz 指代张数为 3 、2 和 1 的图片分组排列;
  2. 同时为了排版的美观,我们还增加了额外的规则:

    1. 尽可能的按照 3 张为一组进行划分;
    2. 最后一组尽可能为 2 张;
  3. 最后我们将分组好的图片进行对应的拼接,最后将所有的分组拼成一张长图即可;

分享能力抽象

由于分享页面是前端完成的,为了能够完成分享的操作,需要客户端封装对应的 API 给前端调用
下面是我们抽象的分享基础能力。
分享基础能力

有了这些基础的能力,前端就通过组合调用对应能力完成页面中的分享功能。

腾讯系分享流程
腾讯系分享流程

拉端与回流

在完成分享之后另外一个重要的环节就是回流,此次的分享也改进了回流流程:

回流流程对比
旧版回流新版回流

旧版的回流采用 URL Scheme 的方式唤起客户端,而新版的我们采用了 Universal Link

URL SchemeUniversal Link 对比
image.png

简单来说,可以将 Universal Link 理解成被 App 注册的 https 链接。当 App 安装时,系统会去注册的域名下检查是否存在相关的验证的文件,如果存在,那么以后浏览器在处理该域名的下的链接时就会调用对应的 App 的做处理。

Universal Link 工作流程
分享拉端流程

由于 Universal Link 必须在页面发生跨域时才生效(未跨域的情况下,会被浏览器当作正常的浏览行为处理),所以在调用时需要特地的切换一个域名。如闲鱼分享的域名为 pages.goofish.com,配置了 Universal Link 的域名为 pages.2.taobao.com

使用 Universal Link 可以让我们更好的把控回流过程中的异常处理(如未安装 App),同时减少了二次确认的环节,降低此处的跳失率。

分享能力的接入

不同场景的分享
不同场景的分享

为了更好的分享效果,针对不同的分享场景我们的分享页面会有所调整,以更好的展示分享内容。但我们不可能为每个场景的分享都做开发,理想的方式分享组件提供页面展示的基础能力,业务方根据自己的需要来发自行拼装页面。

在分析不同场景的分享页面时,我们发现它们之间存在相似的区域,在结合对闲鱼内现有的分享场景,抽象出细粒度的 UI 组件,然后以约定的数据结构来拼装页面,以满足不同分享场景的接入。UI 组件的拆解如下:

分享顶部区域

分享顶部区域

主体内容区域

主体内容区域

拆解完成后,调用方只需要根据业务的需求自行组合数据,即可完成新版分享的接入,极大的提升开发效率。

总结

在新版的分享组件中,我们新增了画报的分享形式,方便用户分享图文信息;同时以 hybrid 的方式开发分享页面,既满足了双端一致的体验,又拥有动态化的能力,方便后续接入更多的分享场景;最后还减少了回流的环节,提升用户的回流率。

最后感谢 躺平 的同学在“生成画报实现”中提供的技术支持。

相关文章
|
1月前
|
Cloud Native 持续交付 开发者
探索云原生技术:构建高效、灵活的应用架构
【10月更文挑战第6天】 在当今数字化浪潮中,企业面临着日益复杂的业务需求和快速变化的市场环境。为了保持竞争力,他们需要构建高效、灵活且可扩展的应用程序架构。本文将探讨云原生技术如何帮助企业实现这一目标,并分析其核心概念与优势。通过深入剖析云原生技术的各个方面,我们将揭示其在现代应用开发和部署中的重要性,并提供一些实用的建议和最佳实践。
52 2
|
2月前
|
存储 缓存 API
探索后端技术:构建高效、可扩展的系统架构
在当今数字化时代,后端技术是构建任何成功应用程序的关键。它不仅涉及数据存储和处理,还包括确保系统的高效性、可靠性和可扩展性。本文将深入探讨后端开发的核心概念,包括数据库设计、服务器端编程、API 开发以及云服务等。我们将从基础开始,逐步深入到更高级的主题,如微服务架构和容器化技术。通过实际案例分析,本文旨在为读者提供一个全面的后端开发指南,帮助大家构建出既高效又具有高度可扩展性的系统架构。
|
9天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
37 1
|
12天前
|
前端开发 API UED
深入理解微前端架构:构建灵活、高效的前端应用
【10月更文挑战第23天】微前端架构是一种将前端应用分解为多个小型、独立、可复用的服务的方法。每个服务独立开发和部署,但共同提供一致的用户体验。本文探讨了微前端架构的核心概念、优势及实施方法,包括定义服务边界、建立通信机制、共享UI组件库和版本控制等。通过实际案例和职业心得,帮助读者更好地理解和应用微前端架构。
|
18天前
|
前端开发 API UED
拥抱微前端架构:构建灵活、高效的前端应用
【10月更文挑战第17天】微前端架构是一种将前端应用拆分为多个小型、独立、可复用的服务的方法,每个服务可以独立开发、部署和维护。本文介绍了微前端架构的核心概念、优势及实施步骤,并分享了业界应用案例和职业心得,帮助读者理解和应用这一新兴架构模式。
|
2月前
|
Kubernetes Cloud Native 安全
云原生技术:构建高效、灵活的现代应用架构
本文深入探讨了云原生技术的核心概念、主要特点及其在现代应用开发中的重要性。通过分析云原生技术的实际应用案例,揭示了其如何帮助企业实现应用的快速迭代、弹性扩展和高可用性。同时,文章还讨论了采用云原生技术时面临的挑战及相应的解决策略,为读者提供了一套完整的云原生技术实践指南。
|
2月前
|
运维 Cloud Native 持续交付
探索云原生技术:构建高效、可扩展的现代应用程序
在当今数字化时代,企业面临着日益增长的压力,需要快速开发和部署应用程序以保持竞争力。传统的软件开发方法已经无法满足这些需求,因此许多企业转向了云原生技术。本文将深入探讨云原生的概念、优势以及如何利用云原生技术构建高效、可扩展的现代应用程序。通过分析实际案例,我们将揭示云原生技术在实现业务敏捷性、降低运维成本和加快产品上市时间方面的巨大潜力。
56 1
|
2月前
|
Cloud Native Devops 持续交付
探索云原生架构:构建高效、灵活和可扩展的系统
本文将深入探讨云原生架构的核心概念、主要技术以及其带来的优势。我们将从云原生的定义开始,了解其设计理念和技术原则;接着分析容器化、微服务等关键技术在云原生中的应用;最后总结云原生架构如何助力企业实现数字化转型,提升业务敏捷性和创新能力。通过这篇文章,读者可以全面了解云原生架构的价值和应用前景。
|
2月前
|
Cloud Native Devops 持续交付
探秘云原生架构:构建高效、灵活的现代应用
在当今数字化时代,企业面临着日益复杂的技术挑战和快速变化的业务需求。为了适应这种环境,云原生架构应运而生。本文将带您深入了解云原生的核心概念、关键技术和应用案例,揭示其在提升业务效率、降低运维成本方面的独特优势。通过阅读本文,您将获得关于如何利用云原生技术构建现代化应用的宝贵见解。
39 0
|
3月前
|
Cloud Native 持续交付 云计算
云原生技术的未来展望:构建更加动态和灵活的IT环境
【7月更文挑战第59天】 随着数字化转型的加速,企业对信息技术基础设施的需求日益增长,尤其是对灵活性、可扩展性和敏捷性的追求。云原生技术作为一种新兴的IT架构范式,以其独特的优势正逐渐成为推动业务创新和实现快速响应市场变化的关键力量。本文将深入探讨云原生技术的发展现状,分析其核心组件如容器化、微服务、DevOps和持续集成/持续部署(CI/CD)等,并预测这些技术如何塑造未来云计算的蓝图,以及企业如何利用这些技术构建一个更加动态和灵活的IT环境。
下一篇
无影云桌面