开源|优酷动态模板研发体系为分发提效30%

简介:动态模板技术方案将客户端研发链路实现了串联,通过完备的工具化支撑体系,让开发者可以高效完成组件由原始设计稿到可运行代码的最短通路,本文将对研发体系中涉及到的核心模块就行介绍,希望对技术社区及广大开发者有一定帮助。

作者 | 阿里巴巴文娱技术
来源 | 阿里开发者公众号

一 概述

优酷是一个多屏、多端,以内容分发及内容消费为主体的文娱生态综合体。在内容分发场景,存在大量的客户端开发需求,包括视觉升级、各场景的业务需求迭代、大小屏设备需求同步等,为了降低研发在跨端场景中组件重复开发的技术成本,优酷技术团队于2019年底开始探索跨端动态化研发提效解决方案,经过2年多时间的努力,目前跨端动态化能力已经在优酷各业务场景落地,帮助研发团队在分发业务上实现提效30%左右。

动态模板技术体系以跨端动态化SDK为中心,通过在设计阶段、研发阶段、联调阶段降低对接、开发、调试等核心工作的技术成本,从而真正实现研发提效。目前整个技术方案包括画眉跨平台动效解决方案、智能化设计平台GaiaSketch、跨端模板动态化方案GaiaX、动态模板可视化少代码搭建平台GaiaStudio、辅助调试工具快速预览FastPreview。

动态模板技术方案将客户端研发链路实现了串联,通过完备的工具化支撑体系,让开发者可以高效完成组件由原始设计稿到可运行代码的最短通路,本文将对研发体系中涉及到的核心模块就行介绍,希望对技术社区及广大开发者有一定帮助。

二 智能化设计平台 - GaiaSketch

Sketch作为一款优秀的设计软件,目前已经是绝大多数互联网企业设计部门的主要设计工具。与Photoshop相比,Sketch对矢量元素具有更强的处理能力,并且其本身提供了丰富的二次开发接口,具有很强的开放性。

针对标注导出及组件还原两部分日常工作量占比较高的工作,优酷技术团队基于Sketch插件架构体系,研发了自动化标注构建导出、组件代码自动生成以及标准素材库建库等能力。对于设计师来说可以通过插件建立起标准库(包括:组件库、样式库、图标库、页面库),也可以通过插件导出更为简单易用的【标注文件】;对于开发来说,可以通过插件能将Sketch设计稿中的图层导出为代码(GaiaX、React、Rax、Vue、小程序等)。

1 标准素材库

每个组件库由一个或者多个 Symbol 构成,每个 Symbol 按照一定的格式命名后,插件就能读取并可视化展示在插件中,并可将可视化后的组件直接拖拽到 Sketch 设计稿中且与原库保持关联。

每个 Symbol 的名称遵循着标准的格式命名,名称以 / 连接,比如 Foundation/Bar/TabBar ,导入到插件后,可视化展示的效果如上图所示。

2 标注导出

将Sketch源文件中的画板导出为标注文件供开发使用,导出的【标注文件】具有更好的兼容性、更易用的界面。

标注导出的产物主要包含两个部分,一部分是标注模板文件,另一部分包括设计稿相关数据信息,比如画板截图,图层数据、切图等。

3 代码导出

将Sketch设计稿中选中的图层导出为选定的语言类型的代码,比如GaiaX模板、React、Rax、Vue、小程序等,导出的代码布局方式基于盒子模型布局(Flexbox)和绝对布局(Absolute);对于节点的层级,【导出代码】会在导出的过程中进行不断的优化,使层级尽可能的少且合理。

4 开源项目

详见文末[1]。

三 动态模板引擎 - GaiaX

GaiaX是动态模板引擎项目在优酷内部的代号,它是解决跨端组件开发提效方案的关键技术。在项目前期的需求分析阶段,团队从优酷的实际场景和各团队开发中的切实诉求出发,将问题空间定位在组件这个层级,不仅很好的规避了如Weex、ReactNative等技术方案的复杂度和工程量,其次也在根本上让技术方案脱离JS Bridge的老路,保证了端侧的落地性能保障。

1 架构设计

按照分层设计理念共分为4层。基础依赖层坚持最小依赖原则,要重点说明的是,为了保证模板布局计算的高性能,我们引入了由RUST编写的StretchKit高性能布局计算引擎[https://github.com/vislyhq/stretch],其具备跨端、较小的包体积(170K)、计算性能卓越等特点;核心渲染层构成模板引擎的渲染内核,解决模板文件解析、虚拟节点树构建、布局计算、表达式构建解析等核心逻辑;模板中心及模板服务层则面向业务,与优酷业务架构进行结合实现对现有能力的复用,避免重复造轮子,并向上层业务提供标准化模板渲染及接入服务。

2 总线设计

对于动态模板引擎来说,输入结构化的模板文件,经过文件IO、数据解析、虚拟节点树构建、布局计算、表达式运算、渲染树构建到真实视图树组成了完整的总线链路。

3 性能表现

由于动态模板DSL具备严格的标准化和规范化,因此在设计研发交付一体化链路上,GaiaSketch的组件代码导出可直接生成GaiaX动态模板DSL代码,这样,开发工程师可以减少模板框架的从0到1的搭建工作,经过简单的编辑优化,便可完成一个模板文件的构建。

4 开源项目

详见文末[2]。

四 动态模板低代码IDE - GaiaStudio

动态模板引擎可以解决跨端组件渲染的一致性,通过一套统一的DSL对组件布局、样式、数据进行描述,从而实现多端开发的提效。但对于客户端开发来说,类前端的DSL本身存在一定的学习成本,另外,如何编写更加合理、简洁的模板代码,对模板在终端最终的渲染及性能表现都会产生直接的影响。

为了解决上述问题,优酷技术团队在动态模板引擎上线后,着手构建了GaiaStudio动态模板低代码IDE。开发者通过该IDE,可以对模板进行可视化搭建,引擎支持的所有布局及样式属性,都在IDE中进行了内置,开发者只需进行选择,便可用户界面中即可得到渲染反馈。

1 技术方案

考虑到开发便捷性和后续的跨平台,我们选用了Electron作为底层跨平台方案,用Sematic UI作为CSS组件库,保证在没有设计的情况下,也能够写出比较美观的用户界面。与网页前端对比,Electron有更好的性能、并且可更便捷的实现有手机端的互联互通。

2 功能简介

模板创建

模板是GaiaX技术体系的核心介质,也是跨端动态渲染的关键点。模板的构建质量决定了端侧渲染的性能和还原效果。GaiaStudio提供了非常全面的模板管理能力,支持从0-1直接构建一个新的模板,也可通过GaiaSketch导出模板代码的方式,导入到GaiaStduio简化编辑成本。

模板编辑

模板编辑是模板构建过程中工作量最大的,为了降低开发者的技术成本及对FlexBox的学习曲线,GaiaStudio提供了可视化、参数化的产品功能,即使操作者对FlexBox、CSS了解甚少,也可以快速上手完成一个模板的编辑工作。

对于一个模板,一般来说我们要进行一组完整的编辑处理,才能完成整个构建工作,包括:基础属性、布局、样式、动画、数据绑定。

模板调试

GaiaStudio的模板调试功能主要有两个功能构成,即模板代码静态分析及模板真机预览(FastPreview)。

1) 模板代码静态分析可以帮助开发者检查模板代码的语法及合理性,针对如模板命名是否合法、布局设置则、模板嵌套层级等问题实时反馈给开发者,帮助开发者更合理的完成模板搭建。

2) 模板预览FastPreview,GaiaStudio提供了亚秒级的模板真机预览能力,让开发者可以实时在真机端查看自己搭建的模板的正确性和还原效果,让Native开发也可以具备类似H5、小程序的开发体验。

3 下载地址

GaiaStudio目前对社区提供通用版本安装包,源码暂时未开源,具体的下载地址在GaiaX开源项目中可获取[3]。

五 跨平台动效解决方案 - 画眉

在客户端开发的日常工作中,存在着大量动效场景需求,如 ToastView 显示与消失、Dialog弹出、按钮的显隐等。当动效设计需求交付给研发后,往往要达到最终的效果,需要经过多轮的走查和调优,归纳起来造成这种结果的原因主要有:1)同一动画,不同的开发人员实现的效果有差别 2)同一动画,iOS 端和 Android 端实现的效果有差别 3)对于曲线动效,设计师无法提供准确参数,实现效果随机性强 4)部分开发人员对系统自带曲线函数不熟悉,会导致降级应用线性或减速曲线,影响动态效果。为了彻底解决端侧动画实现的研发效率及效果保障,技术团队与设计中心共同推出了跨平台动效解决方案-画眉(Motion-curve)。在GaiaX动态模板引擎中,曲线动效的实现也依赖画眉提供基础服务。

1 架构设计

2 技术方案

iOS端技术方案

SDK 接口层采用 Category 方案,通过 AOP 思想来简化调用复杂度。

CALayer + MotionCurveX 为 CALayer 的所有可动画属性,按照动效曲线能力提供支持,且在动画完成后,无需再次设置目标值。画眉SDK将常用的 7 种动效曲线,进行底层算法实现,使用者只需指定曲线枚举,即可实现标准化的动效。

Android端技术方案

为了降低java调用C的性能损耗,Android端采用差值器Interpolator来实现曲线动效。

3 实现效果

4 开源项目

详见文末[4]。

六 总结

动态模板研发体系在优酷落地运行后,对设计规范化、设计与研发的对接及视觉还原提效、端侧研发的交付提效来说,都取得了不错的成果。目前优酷技术团队正在对技术方案进行整体开源,希望通过这篇文章的介绍能让大家对该研发体系有一个初步的了解,也希望大家关注优酷技术团队相关的开源项目,一起共建让社区受益。

优酷动态模板研发体系开源项目列表

参考链接:

[1]GaiaSketch开源项目地址:https://github.com/alibaba/GaiaSketch。

[2]优酷动态模板引擎开源项目地址:https://github.com/alibaba/GaiaX

[3]GaiaX开源项目:https://github.com/alibaba/GaiaX

[4]优酷画眉曲线动效开源项目地址:https://github.com/alibaba/gaia-motion-curve

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

比心云平台基于阿里云容器服务 ACK 的弹性架构实践

简介:本文主要探讨比心云平台如何利用阿里云容器服务 ACK,来构建应用弹性架构,进一步优化计算成本。 作者:韩韬|比心技术 前言 应用容器化改造后,不可避免地会面临这样一个问题:Kubernetes 集…

程序员莫名收到谷歌转账170万元,直言:一个月没敢花

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life)近日,Google 公司发生一起乌龙事件, 意外地给一位博客和安全工程师转账近25万美元(约合人民币174万元),当事人表示等待将近一个月…

利器解读:Linux 内核调测中最最让开发者头疼的 bug 有解了|龙蜥技术

简介:通过在Anolis 5.10 内核中增强 kfence 的功能,实现了一个线上的、精准的、可定制的内存调试解决方案。 编者按:一直持续存在内核内存调测领域两大行业难题: "内存被改" 和 "内存泄漏"何解?本文整理自龙…

无需修改代码,用 fcapp.run 运行你的 REST 应用

简介:解锁客户不修改代码部署存量REST、网页应用场景,解决客户函数调用返回404问题,支持标准的网关产品与开源组件集成函数计算。 作者 | 阿里云 Serverless 技术研发 落语 背景 阿里云函数计算产品在较早的时候支持了HTTP触发器能力&…

在 Linux 中锁定和解锁用户的 3 种方法

在多用户操作的服务器中锁定(禁用)用户可能有多种原因,比如某个用户的登录密码被泄露,或者某个用户离职,但是该用户下还有部分文档未完成转移,而因为归档的目的暂时不删除该用户,而只是锁定等等…

中小企业掀起“减碳潮”,“上云”提高产品绿色竞争力

中小企业节能减碳需求正进入爆发期。4月22日世界地球日,近2000家中小企业已接入阿里云碳排放优化核算平台“能耗宝”,通过光伏装机和算法优化全年节省4.3亿度煤电,相当于减少44万吨碳排放。其中,浙江、广东及江苏的中小企业走在减…

函数计算 HTTP 触发器支持异步,解放双手搭建 Web 服务

简介:函数计算 HTTP 触发器支持异步调用,为用户搭建 WEB 服务使用函数计算作为全托管平台打通了最后一公里,以后 HTTP 触发器的使用者,也可以感受到异步调用”开箱即用“的便捷体验。 作者| 阿里云Serverless技术专家 澈尔 当前…

如何做好“防御性编码”?

简介:类似于“防御性驾驶”对驾驶安全的重要性,防御性编码目的概括起来就一条:将代码质量问题消灭于萌芽。要做到“防御性编码”,就要求我们充分认识到代码质量的严肃性,也就是“一旦你觉得这个地方可能出问题&#xf…

消息队列Kafka「检索组件」上线

简介:本文对消息队列 Kafka「检索组件」进行详细介绍,首先通过对消息队列使用过程中的痛点问题进行介绍,然后针对痛点问题提出相应的解决办法,并对关键技术技术进行解读,旨在帮助大家对消息队列 Kafka「检索组件」的特…

从这些云原生企业身上,我看到了数字化创新者该有的样子

简介:未来的数字世界是什么样子?手握云原生地图的企业,又将如何颠覆数字化?带着这些疑问,我们采访了教育、金融、新零售、互娱、传媒等领域的多位大咖,他们是数字创新的引领者,也是用云原生技术…

云采销:赋能企业商机转化及营销全流程数字化

简介:介绍云采销-企采商产品的在企业业务中的应用场景和产品功能。 云采销:为企业提供“采购协同工具市场资源数据增值服务”的综合性解决方案。 其中“企采商营销管理工作台”为企业提供了B2B营销全域管理系统,包括商机挖掘、线上推广、销…

Hadoop 王者 Cloudera 新转型,定位为混合数据公司

作者 | 宋慧 出品 | CSDN 云计算 随着 AI 等技术兴起,对于数据的应用分析受到了越来越多的重视,数据赛道热度也持续火热。大数据时代为企业提供 Hadoop 服务的 Cloudera,也推出了新一代数据平台 CDP,并逐渐替代以往的大数据平台 …

大数据在线离线一体化解决方案最佳实践

简介: 本文重点介绍大数据产品集通用解决方案,即大数据在线计算离线计算一体化解决方案,并通过真实案例模拟来说明此通用解决方案在具体项目中是如何落地的。 概述 本方案重点要落地的业务是中央网信办网络安全应急指挥中心相关业务&#x…

基于MaxCompute的大数据安全方案

简介:随着法律的完善,数据安全,信息安全,网络安全,升级成国家安全,所以数据安全不管对用户,还是对公司也都会变的越来越重要。做为大数据云数仓解决方案的领导者,阿里云MaxCompute在…

数据仓库的分层架构与演进

简介:分层架构很容易在各种书籍和文档中去理解,但是把建模方法和分层架构放在一起就会出现很多困惑了。接下来,我会从数据研发与建模的角度,演进一下分层架构的设计原因与层次的意义。 分层架构很容易在各种书籍和文档中去理解&a…

数据治理之参考数据与主数据管理

简介:最近凑巧参与了一次某行业的业务共创会议,期间讨论到了主数据系统,还有我们该如何参与主数据系统建设的话题。说实话,我一直以为我不会有机会参与到主数据与参考数据系统的话题中去,所以,又去把DAMA的…

如何在云端重塑内容生产?来看这场虚拟人主持的发布会

简介:「智能媒体生产」产品全新升级 3月30日,阿里云视频云在线上举行了一场由虚拟人助力主持的「智能媒体生产」产品升级发布会,活动围绕产品能力的展现、视频生产流程的革新、高效生产背后的技术先进性,阐释了企业如何在云端重塑…

阿里开源自研工业级稀疏模型高性能训练框架 PAI-HybridBackend

简介:近年来,随着稀疏模型对算力日益增长的需求, CPU集群必须不断扩大集群规模来满足训练的时效需求,这同时也带来了不断上升的资源成本以及实验的调试成本。为了解决这一问题,阿里云机器学习PAI平台开源了稀疏模型高性能同步训练…

Serverless 遇到 FinOps,云成本问题有解了!

Key Takeaways:1. 尽管 Serverless 的迅猛发展吸引了广泛深入的关注,Serverless 函数总成本的事先估计仍缺乏有效的理论指导。本文基于 FunctionGraph 在 Serverless 领域的 FinOps 探索和实践,提出业界首个 Serverless 函数总成本估计模型。…

Apsara Stack 技术百科 | 联结良性生态,筑千行百业的数字基石

简介:作为现今IT领域最重要的课题:基础设施云化,离不开与伙伴的携手合作,如何让云上解决方案能充分释放价值的同时形成一个相互依存的自循环生态系统,混合云君来跟你聊聊~ 生态系统这个词在维基百科上的定义是&#xf…