Tangram 2.0发布,顺带开源了一种动态化组件的方案 (pingguohe.net)

【简介】

Tangram 2.0发布,顺带开源了一种动态化组件的方案

点击查看原文 >>

@Longerian 2017-12-08 15:22 / 1个评论
赞过的人: @技术头条
要不要再学学下面的文章?
对比脚本型和编译型游戏服务器的热更新方案 (www.codedump.info)
本文对比游戏服务器中C++搭配脚本语言(Lua、Python)以及纯编译型语言(C++、Golang)来进行开发时,进行线上服务器热更新的方案。
by @技术头条 2024-03-21 23:21 查看详情
NextJS/React 加载远程组件 (innei.in)
写过文档的大佬们都知道 MDX 这个东西,对原本的 Markdown 进行了扩展,可以在 Markdown 中直接使用框架组件(React,Vue 等等)。
现在也有很多静态生成的博客使用 MDX 去编写博文,在博文中内嵌了 React 组件,在一些需要交互式的场景中,在传统的 Markdown 只能展示内容,而使用了组件就可以把死的文字变活。
MDX 的原理是在项目构建时,解析 Markdown 抽象语法树,把引入的组件进行了编译,然后嵌入到了文章内部。
而使用 MDX,就必须要引入编译时。而对于 CMS 类型的博客网站,因为内容都是动态生成的,就无法使用 MDX。
那么有没有办法去想一个歪路子去实现呢。
by @技术头条 2024-03-13 13:21 查看详情
iOS备用机自动充电方案 (www.leavesongs.com)
炫酷一下,为了能让备用机一直有电,计划将备用机插在智能插座上,然后通过iOS的Shortcuts来监控手机电量——当手机电量小于30%的时候自动开启插座;当手机电量充到80%的时候自动关闭插座。
by @技术头条 2024-01-28 23:59 查看详情
MinIO的分布式存储实践方案 (l1n.wang)
MinIO是一个开源的分布式对象存储组件,它兼容Amazon S3API,适合于存储大容量的非结构化数据,支持单个对象最大5TB。MinIO特点:部署简单,仅需要单独一个二进制文件;支持纠删码机制,能恢复部分数据块丢失的情况;读写性能高。
by @技术头条 2024-01-17 23:07 查看详情
CPU 混合推理,非常见大模型量化方案:“二三五六” 位量化 (soulteary.com)
本篇文章聊聊网上聊的比较少的具体量化操作,非常见整型位数的量化,来自让各种开源模型能够在 CPU 环境、CPU & GPU 环境混合推理的技术方案:llama.cpp 。
by @技术头条 2023-12-26 22:06 查看详情
一个 MySQL 数据库死锁的案例和解决方案 (mazhuang.org)
本文介绍了一个 MySQL 数据库死锁的案例和解决方案。
by @技术头条 2023-09-10 23:29 查看详情
廉价的家用工作站方案:ThinkPad 存储升级及数据迁移 (soulteary.com)
最近,给当台式服务器一样使用了两年的 ThinkPad 做了存储升级和数据迁移,对硬盘也做了额外的散热处理。本篇文章里,我们分享下相关的经验和思考,希望能够帮助到有同样诉求的你。
by @技术头条 2023-09-10 23:14 查看详情
廉价的全闪存雷电 NAS 折腾笔记:组网方案的选择 (soulteary.com)
如何用最少的成本,来获得最大的性能提升呢?

为了最大化获取网络性能,最少的折腾现有设备,降低成本投入,结合我只需要部分设备之间存在更高规格的带宽,我选择了相对不常见的方案:雷电组网(thunderbolt)。
by @技术头条 2023-09-10 23:13 查看详情
如何提供一个可信的AB测试解决方案 (tech.meituan.com)
本文以履约场景下的具体实践为背景,介绍如何提供一个可信赖的AB测试解决方案。一方面从实验方法的角度论述实验过程中容易被忽视的统计陷阱,给出具体的解决方案,一方面从平台建设角度论述针对业务场景和对应约束制定实验方案提供给用户,而不只是功能和方法由用户自由选择,因为实验方法差之毫厘,结果可能是失之千里。
by @技术头条 2023-08-26 21:53 查看详情
怎样快速制作「九宫格」拼图:基于 ImageMagick 和快捷指令的方案 (type.cyhsu.xyz)
「九宫格」是如今大多社交平台展示缩略图的布局,利用这种布局将大图拆成拼图发布,能产生有视觉冲击力的展示效果。不过,这种九宫格的制作往往需要第三方软件辅助,也是乱收费和侵犯隐私的重灾区。本文介绍如何通过 ImageMagick 或快捷指令,简单免费地制作九宫格拼图。
by @技术头条 2023-07-30 21:37 查看详情
技术头条

技术背景
一直以来,无线应用都在不断寻求动态化页面的解决方案,在阿里巴巴集团内,除了风风火火地 Weex 项目外,各个团队都有大大小小的解决方案。我们猫客一直持续基于 Tangram 方案来解决页面动态化的问题,然而在面对持续升级的业务需求时,原有的开发模式也慢慢变得无法胜任,本年度以来,我们 Tangram 体系在各个层面都进行了大跨度的技术升级(可参考文章天猫APP改版之首页架构&开发模式全面升级),本文再详细介绍一下页面内组件体系升级方案。

老组件体系的问题
在原有的 Tangram 体系里,主要解决了页面内布局结构的动态化能力,通过 json 数据描述可以组合出常用的页面结构。然而页面内具体的坑位样式,我们称之为业务组件,是采用常规的 native 代码开发的,除非内置了足够多的逻辑,否则组件的样式调整或者新组件的开发都要发布版本,无法满足业务节奏;当然我们也尝试过使用 Weex 开发业务组件贴到页面上,但是在体验和性能上还是有较大的缺陷。

所以总结起来,就是两点问题:

业务组件无法动态更新;
现有的动态组件方案较重,影响性能和体验;
解决之道
对于上述问题,解决思路其实是比较通用的,要动态更新界面视图,就需要用界面模板描述视图,模板与数据分离。将动态下发的模板和数据在端上绑定渲染。要提升性能,也有三大着力点——减少视图层级与个数,结构尽量扁平化;异步布局渲染流程,解放主线程计算量;回收与复用组件,减少内存开销。

新的组件体系就是在模板化描述视图,动态更新视图,减少视图层级几个方面做文章,至于组件的回收复用,则是在页面级别统一完成;而异步布局渲染流程,则是后续的优化方向。

新的组件方案称之为 VirtualView,简称 VV,也称为2.0组件,它的设计遵循以下几个思路:

以了一种虚拟化开发基础组件的技术,使用方只要按照指定协议实现一个基础组件的尺寸计算、绘制逻辑、布局逻辑,即能实现在宿主容器的 canvas 里实现直接绘制 UI 内容的,让最终渲染出来的视图结构呈现扁平化,提升组件渲染性能。同时为了解决虚拟化 View 带来的原生 View 的能力损失的问题,它支持加载和渲染原生基础组件,两者组合产生合力,既能减少开销,又能满足特殊场景下的业务需求。
内置实现了一系列基础组件,可以让使用方直接上手尝试;而搭建业务组件的方式采用 XML 模板来编写,配套 XML 模板更新 sdk,这使得业务组件动态更新成为了可能。XML 模板里还支持写数据绑定的表达式,在样式动态化、数据动态化的场景下能非常方便地实现业务需求。
XML 模板里涉及到的基础节点、属性、字符串资源等都被提前编译成二进制资源,客户端加载通过加载编译后的模板数据来创建视图。

by @技术头条 2017-12-08 17:07