什么是 Tangram

Tangram 不仅仅是一个 Native(iOS & Android)的界面开发框架,而是从日常工作中沉淀出的一套界面解决方案,涵盖了 Native SDK、GUI操作台、后端逻辑容器、组件库机制的一整套方案。

Tangram 从手机天猫 - 首页方案抽象而来,是面向组件的界面方案,是开发团队不断权衡性能、稳定性、开发效率、灵活性和动态性多方面表现的结果。除了手机天猫首页外,还支撑了天猫 App 中的天猫直播、我的天猫、猜你喜欢等多个业务,并且在阿里星球等多个阿里系 App 中有所应用。

  

Tangram 关注的重点

Tangram 关注三个重点:面向业务、多端一致性和高性能。

1、面向业务

Tangram 来源于多次试错和方向的调整,最终站在业务角度出发,权衡多项技术指标的结果。所以面向业务是出发点,是整个 Tangram 体系的最基本原则。

基于这个原则,在端上 Tangram 始终坚持粗粒度组件。粗粒度意味着通用性和灵活性的下降,某种程度上还会对动态性造成影响,但在第2型业务中通用性、灵活性和动态性的需求是有节制的,在粗粒度上完全可以满足业务需求。而且,粗粒度还具有使用成本低,性能更好等优势。在端上重点精力则投入到提升组件库复用度,布局容器和组件的丰富性,从而推动业务发展。

除了端上的工作,另一部分重点工作在控制台和服务网关的建设上。作为一个面向业务的方案,控制台是业务方和产品的接口,控制台的主要目标是让业务方可以直接控制基于 Tangram 建设的产品——调整页面布局,切换页面数据,等。服务网关的建设目标是最大程度的降低业务创建 Tangram 页面的压力和成本。

2、多端一致性

在多年的业务开发经历中,屡次被多端表现不一致的问题困扰。为了实现业务诉求,不得不通过复杂的网关逻辑来兼容多端逻辑不一致情况,以实现表现一致。因此团队制定了两个 Tangram 端开发原则:

  • 任意新功能的提出都是不区分平台,在功能设计中必须同时考虑多端功能,具体的实现方案和逻辑必须多端统一 Review 以保证多端表现一致。

  • 任意一端的变更都必须在改动前把方案同步给其他端,而且变更必须多端同步发布。

3、高性能

在面向业务的原则之下,已经给高性能打下了一个良好的基础。而在高性能的思考上重点基于页面渲染效率和组件回收复用两方面。

  • 页面渲染——为了提升渲染效率,Tangram 将在视图渲染之前把大量的计算工作在 VM 中完成,并缓存在 VM 组成的树形结构里。

  • 回收和复用——Tangram 在 Android 和 iOS 平台上分别开发了 VLayout 和 LazyScroll 两个基础组件,通过一个双索引可见区域组件发现算法,实现了跨父节点组件的高效回收和复用。

此外,开发团队还表示,目前已经完成了新版 Tangram 2.0 的讨论,开始执行2.0版本的重构工作。在 Tangram 2.0 中出于适应业务形态的变化,将对开源的 Tangram 1.0 中基于布局和组件的二维结构进行进一步的抽象,用于支撑更复杂的流式布局。并且对于控制台和服务网关也将进一步升级,大幅提升新业务开发效率。在性能层面,对组件开发模型和渲染模式进行一次较大的升级,在渲染和滚动效率上将得到巨大提升。

介绍内容来源:苹果核

相关链接
  • Tangram UI 的详细介绍:点击查看
  • Tangram UI 的下载地址:点击下载

天猫团队开源跨平台模块化 UI 界面开发框架 Tangram相关推荐

  1. Android 动态界面开发框架 Tangram 使用完整教程

    阅读本文大概需要20分钟 熟悉阿里出品的vlayout的读者都知道,vlayout极大地扩展了RecyclerView的LayoutManager,从而为RecyclerView提供了一组布局.使用该 ...

  2. Android Virtualview:淘宝、天猫又开源了一个动态化、高性能的UI框架

    转载 Carson_Ho Android Virtualview:淘宝.天猫又开源了一个动态化.高性能的UI框架 前言 目录 1. 为什么要向 Tangram模型 加入 VirtualView 2. ...

  3. Android Virtualview:淘宝、天猫又开源了一个动态化、高性能的UI框架力作

    前言 淘宝.天猫一直致力于解决 页面动态化的问题 在2017年的4月发布了v1.0解决方案:Tangram模型 及其对应的 Android库 vlayout,该解决方案在手机淘宝.天猫 Android ...

  4. 美团开源Graver框架:用“雕刻”诠释iOS端UI界面的高效渲染

    Graver是一款高效的UI渲染框架,现已开源,它能以更低的资源消耗来构建十分流畅的UI界面. Graver 是一款高效的 UI 渲染框架,它以更低的资源消耗来构建十分流畅的 UI 界面.Graver ...

  5. Android开源库V - Layout:淘宝、天猫都在用的UI框架,赶紧用起来吧!

    前言 V- Layout 是阿里出品的基础 UI 框架,用于快速实现页面的复杂布局,在手机天猫 Android版 内广泛使用 让人激动的是,在上个月V- Layout终于在Github上开源! Git ...

  6. lua运行外部程序_LTUI v2.2 发布, 一个基于lua的跨平台字符终端UI界面库

    LTUI是一个基于lua的跨平台字符终端UI界面库. 此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了一整套 ...

  7. python画界面的插件_ImagePy——UI界面支持开放插件的Python开源图像处理框架

    雷锋网 AI 科技评论按,ImagePy 是一款 python 开源图像处理框架,其 UI 界面支持开放插件.在 github:https://github.com/Image-Py/imagepy ...

  8. 超棒的CSS开源UI界面元素类库 - TopCat

    日期:2013-4-25  来源:GBin1.com TopCoat是一套免费的开源UI元素类库,整套类库不使用任何javascript,而是使用CSS和HTML来生成. 整套UI元素非常丰富,使用标 ...

  9. Android 开源控件与常用开发框架开发工具类

    Android的加载动画AVLoadingIndicatorView 项目地址: https://github.com/81813780/AVLoadingIndicatorView 首先,在 bui ...

最新文章

  1. java 终极超类,Java问答:终极父类(3),java问答
  2. jQuery:收集一些基于jQuery框架开发的控件/jquery插件2
  3. 音视频技术开发周刊 | 184
  4. Utils 工具 推送
  5. Divbrush 网页Div css画板定位布局系统 v1.8
  6. 数学趣题——求圆周率的近似值
  7. 关闭mysql权限管理_MySQL系列:用户及权限管理
  8. SpringCloud工作笔记084---SpringCloud项目中,关于防止表单提交_使用redis+Aspect面向切面实现
  9. PropertyChangeSupport 监听器模式的应用
  10. 如何优雅地给同事提“改进性建议”
  11. 在线购物系统—类图设计
  12. 天正编辑文字出现形未定义_天正双击不能编辑文字
  13. mysql数据迁移双写_【数据迁移】在线数据迁移 :双写数据库、搬历史数据、切换写入、灰度验证(99.9999%)、删除历史-Go语言中文社区...
  14. Nginx网页优化(隐藏版本号,日志分割,更改进程数,网页压缩,防盗链详
  15. 使用CYUSB3014实现SPIFlash读写擦除控制
  16. 表情符号(emoji)大全,只此一文便够了
  17. “知识共享”国际许可协议4.0版本
  18. The bean ‘xxx‘ could not be injected as a ‘xxx‘because it is a JDK dynamic proxy that implements错误解决
  19. C#中Math函数简介
  20. Spring中用@Component、@Repository、@Service和 @Controller等标注的默认Bean名称会是小写开头的非限定类名

热门文章

  1. USB 无线网卡ping每隔8-10秒左右会卡一下
  2. Review Hbase记忆
  3. 是平板?还是手机?三星Galaxy Note美图大赏
  4. Linux 面试题(史上最全面试题,精心整理100家互联网企业,面试必过)
  5. 计算机绘图自考知识点,湖南自考本科07885图学与计算机绘图考试大纲 - 湖南自考生网...
  6. JAVA组件大全复选框,选项按钮,复选方框,下拉式列表的使用介绍
  7. 解决Ubuntu14.04下使用foxit reader(福昕阅读器)导致CPU占用过高的问题
  8. 2801 LOL-盖伦的蹲草计划
  9. codevs 2801 LOL-盖伦的蹲草计划
  10. 高考经验:一个差生冲击高考一本的成功经验