Tangram,七巧板,几块简单的积木就能拼出大千世界。我们用Tangram来命名这套界面方案,也是希望他能像七巧板一样可以通过几块积木就搭出丰富多彩的界面。

号外:Tangram开源了!通过http://tangram.pingguohe.net可以了解更多技术细节,直接去GitHub查看iOS(https://github.com/alibaba/tangram-ios)和Android(https://github.com/alibaba/tangram-android)源码。

什么是Tangram

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

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

就如Tangram主页所说,我们重点关注方案的多平台一致性,高性能和业务支撑能力。

Tangram怎么来的

从2013年天猫在移动平台发力开始,我们一直在探索界面动态化方案。先后经历了WebView+HTML方案,动态Native方案,直至Tangram的原型——组件化方案。

最初我们看重动态性,在HTML框架和发布工具上做了大量的文章。我们可以快速开发出一张HTML页面,并推送到端上,而且通过Hybrid接口还能与Native进行交互。然而在大规模(双11)应用的过程中我们很快发现了问题——性能。当时我们认为WebView的性能是HTML页面的瓶颈,现在还不是大规模推广HTML的时候,我们需要一套替代方案。

很快我们提出了Dynative方案,框架内置基础组件(文本,图片,Button等)和函数(数学运算,字符串,网络等),以JSON为模板描述页面。Dynative方案兼具HTML方案的动态性和Native方案的高性能,看似完美。但很快在下一次的双11我们再次跌倒——效率。由于基于JSON定义的模板不具备通用性,写一张有逻辑的会场页面就需要数千行JSON,而且里边还有各种潜规则。能搞定这份模板的人,不超过5个。

痛定思痛,作为业务团队我们开始从业务的角度审视技术方案。带界面的业务基本分三种:

  1. 临时性业务——比如活动,几张页面生命周期可能2周,1周,甚至一两天。数量多,需求频繁,有可沉淀的东西,但变化更多。对极致性能不敏感。
  2. 常规业务——比如频道,生命周期长,需要长期维护。数量有限,需求稳定,沉淀性好。对极致性能相当敏感。
  3. 基础业务——跟常规业务相比需求稳定性更高,对性能和稳定性有极高的要求。

对于第1型,我们认为未来一定属于HTML,随着WebView性能的提升和Mobile开发框架与开发技能日趋成熟,现阶段HTML体现出的劣势终将荡然无存。而第2型和第3型是值得我们去思考的,结合我们团队所负责的业务形态,我们结合多年在业务上的经验制定了以粗粒度组件化+灵活布局容器为基本理念的界面解决方案。

整体上,Tangram View作为根节点,具备滚动能力;页面的子节点为布局容器,每行一个容器,向下单行排列;布局容器中按照各自的布局规则,在其内对任意组件进行排列。

至此,Tangram的基础模型已经确定,放弃了第1型和第3型,重点关注第2型。从改造手机天猫首页的实现方案开始,通过几个月的时间证明这套模型和方案在业务上完全可行。进一步对方案进行抽象,并且开始周边建设。

Tangram关注的重点

正如Tangram主页上所述的,Tangram关注三个重点:面向业务、多端一致性和高性能。

面向业务

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

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

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

多端一致性

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

  1. 任意新功能的提出都是不区分平台,在功能设计中必须同时考虑多端功能,具体的实现方案和逻辑必须多端统一Review以保证多端表现一致。
  2. 任意一端的变更都必须在改动前把方案同步给其他端,而且变更必须多端同步发布。

高性能

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

  1. 页面渲染——为了提升渲染效率,Tangram将在视图渲染之前把大量的计算工作在VM中完成,并缓存在VM组成的树形结构里。
  2. 回收和复用——Tangram在Android和iOS平台上分别开发了VLayout和LazyScroll两个基础组件,通过一个双索引可见区域组件发现算法,实现了跨父节点组件的高效回收和复用。

总结

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

转载于:https://www.cnblogs.com/fakeCoder/p/6733606.html

苹果核 - Tangram是我们对界面动态化的态度 Tmail相关推荐

  1. 苹果核 - Tangram 的基础 —— vlayout(Android)

    1. 前言 天猫沉淀了3年的一套界面解决方案已经开始陆续进入开源流程:首先开源的是Android基础组件VLayout vlayout 是手机天猫 Android 版内广泛使用的一个基础 UI 框架项 ...

  2. 苹果核 - 天猫APP改版之全新大首页架构开发模式全面升级-TAC

    转载自苹果核,原文链接:http://pingguohe.net/2017/08/02/tac-1.0.html 对tangram有兴趣的可以看看:http://pingguohe.net/2017/ ...

  3. 苹果核 - 页面动态化的基础 —— Tangram

    12月10日在SFDC(SegmentFault Developer Conference)大会上初次介绍了手机天猫的Tangram方案,现场时间有限,讲得匆忙,特此整理记录.这篇内容是Tangram ...

  4. 鸿蒙系统操作界面跟苹果很像,鸿蒙手机UI界面曝出!图标拟物化、操作逻辑近似苹果iOS13...

    原标题:鸿蒙手机UI界面曝出!图标拟物化.操作逻辑近似苹果iOS13 ​[IT爆料王-原创文章-具备版权效力]就在近日,笔者收到了网友的匿名私信,提供给笔者华为鸿蒙系统的UI界面截图,以及搭载鸿蒙系统 ...

  5. 苹果系统anaconda没有图形化界面怎么解决?

    苹果系统anaconda安装完没有图形化界面怎么解决? 安装命令 conda install anaconda-navigator 安装很快,成功: 参考 知乎:Anaconda navigator怎 ...

  6. 利用Flutter写一个跨平台的果核APP(1)——界面篇1

    前言 从这里开始,我就准备边学边做边用博客记录下自己的重构历程,会结合已有的app的样式进行重构. 原图 先看一下app的截图: 上面两个截图是app的首页和左侧菜单栏的截图,首页下方是一个可以滑动的 ...

  7. 苹果核”乔布斯不为人知的九件事

    乔布斯隐瞒了其私人生活的大部分细节--从他那令人好奇的家庭生活,到他与胰腺癌的抗争史--后者最终于2011年10月5日夺走了他的生命,享年56岁.乔布斯的一生都是作为苹果公司掌舵人在镁光灯下度过的,即 ...

  8. 高达100亿美元!美国国防部将IBM和甲骨文双双踢出了云计算合同;华为任正非说了,华为对向苹果等对手出售5G芯片保持开放的态度...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

  9. Android | Tangram动态页面之路(四)vlayout原理

    本系列文章主要介绍天猫团队开源的Tangram框架的使用心得和原理,由于Tangram底层基于vlayout,所以也会简单讲解,该系列将按以下大纲进行介绍: 需求背景 Tangram和vlayout介 ...

最新文章

  1. java 头像 微信群_java怎么生成带用户微信头像的图片,并把这张图片发送给用户。...
  2. linux常用命令--开发调试篇
  3. do...while循环
  4. Java执行系统命令策略
  5. Shadow-插件化框架分析
  6. wps2019政府专版 无广告
  7. 颜色科学与计算机测色配色实用技术,颜色科学与计算机测色配色实用技术
  8. IAR下载并创建Example工程
  9. safari 插件(如Xmarks)的设置、登陆、禁用等
  10. 服务器运行cad慢,cad从服务器上打开很慢,在本地打开很快
  11. D. Berserk And Fireball(模拟)
  12. BGA“焊点”虚焊原因分析及控制方法
  13. VMware中的虚拟机开启VT,支持KVM
  14. 信息系统项目管理师---第五章 项目范围管理
  15. 硬盘质保、保修期网上查询
  16. 游戏辅助制作核心--植物大战僵尸逆向之阳光生产加速实现满天星(四)1
  17. 微波中继通信中的天馈线系统及检测工具——TFN天馈线测试仪(驻波比测试仪)100系列
  18. 罗森伯格助力杭州G20峰会保电工程-清江智能化变电站
  19. 医院信息系统时要注意事项
  20. 似然函数取对数的原因

热门文章

  1. hbase 预分区设计
  2. Android怎么保证广播安全,Android 广播机制安全性研究.PDF
  3. 计算机专业大二寒假还没入门,关于考研的入门问题我是一个大二的
  4. 手把手教你申请CCC(City Colleges of Chicago)教育邮箱
  5. DXC Technology引领数字化转型 助企业客户拥抱变革
  6. 2015年,写下“世界那么大,我想去看看”的女教师,终被现实打败
  7. 判断一个点是否在给定的凸四边形内
  8. mysql导入sql文件、数据库时报错ERROR: ASCII '\0' appeared in the statement
  9. 关于vscode更新后 格式化代码造成函数括号后的空格被删除,单引号变双引号问题的解决方法
  10. Exchange Server 2016 RTM快速部署指南