首页
/ DivKit 31.0.0版本发布:跨平台UI框架的重大更新

DivKit 31.0.0版本发布:跨平台UI框架的重大更新

2025-06-20 19:21:43作者:翟萌耘Ralph

DivKit是一个由Yandex开源的跨平台UI框架,它允许开发者使用声明式的JSON格式来构建复杂的用户界面。通过统一的JSON描述,DivKit可以在Android、iOS和Web平台上渲染出完全一致的UI效果,大大提高了开发效率和跨平台一致性。最新发布的31.0.0版本带来了多项重要更新和改进,本文将详细介绍这些变化。

Android客户端重大变更

31.0.0版本对Android客户端进行了多项架构优化和API清理:

  1. 配置API重构:移除了DivKitConfiguration.Builder.histogramConfiguration(HistogramConfiguration)方法,改用Provider模式提供直方图配置,这提高了配置的灵活性和延迟初始化能力。

  2. 变量控制器升级:废弃了GlobalVariableController类,统一使用DivVariableController作为变量管理的标准接口,简化了API设计。

  3. 上下文管理优化:重构了Div2Context的构造函数,现在更明确地要求使用ContextThemeWrapper而不是Activity,这提高了上下文管理的安全性和一致性。

  4. 工具提示系统增强:改进了工具提示(tooltip)的显示控制逻辑,现在可以更精确地控制工具提示的显示条件和行为。

  5. 性能改进:移除了DivAutoLogger等过时的性能监控工具,整合了更现代的监控方案。

  6. 文本渲染改进:修复了文本范围重叠时的显示问题,并改进了行高计算逻辑,使文本布局更加精确。

iOS客户端重要更新

iOS端在这个版本中进行了深度的API清理和架构优化:

  1. 工具提示默认行为变更:工具提示的默认宽度现在与Android一致,采用match_parent而非之前的wrap_content,确保了跨平台一致性。

  2. 动作处理系统重构:移除了DivActionLogger协议,统一使用DivReporter作为报告机制,简化了事件跟踪架构。

  3. 变量管理简化:废弃了DivVariableUpdater协议,整合了更简洁的变量更新机制。

  4. API可见性调整:将多个内部使用的类标记为@_spi(Internal),明确了公共API边界,防止误用内部实现细节。

  5. 新功能支持:增加了对文本范围基线偏移(baseline_offset)的支持,提供了更精细的文本样式控制能力。

Web客户端突破性变化

Web端在这个版本中进行了多项架构改进和功能增强:

  1. 全局命名空间变更:将全局API从Ya.Divkit迁移到Ya.DivKit(注意大小写变化),这是为了统一命名规范。

  2. 数值处理升级:全面采用BigInt支持,要求现代浏览器环境,提供了更精确的大整数处理能力。

  3. 交互元素标准化:具有动作的元素现在默认渲染为button标签,改善了可访问性和交互一致性。

  4. 构建系统现代化:从传统构建工具迁移到Vite/Rollup,提高了构建效率和模块化程度。

  5. 工具提示行为统一:调整了工具提示的显示逻辑,使其行为与其他平台保持一致。

  6. 新动作类型支持:增加了对set_stateset_stored_value等新动作类型的支持,扩展了交互能力。

跨平台一致性改进

31.0.0版本特别注重各平台间行为的一致性:

  1. 双击动作处理:统一了各平台对doubletap_actions的处理逻辑,现在Android和Web的行为完全一致。

  2. 非交互元素行为:调整了Web端非交互元素的点击处理,使其更接近原生平台的行为模式。

  3. 工具提示模态性:默认使工具提示具有模态行为,提高了用户体验的一致性。

开发者建议

对于正在使用DivKit的开发者,升级到31.0.0版本时需要注意:

  1. 仔细检查所有废弃API的使用情况,按照文档指引进行迁移。

  2. 特别注意Web端全局命名空间的大小写变化,以及构建输出的结构调整。

  3. 测试工具提示和交互元素在新版本中的表现,确保符合预期。

  4. 利用新的变量管理API和动作类型,可以构建更复杂的交互逻辑。

DivKit 31.0.0版本通过深度的架构清理和功能增强,进一步提高了框架的稳定性、一致性和易用性,为构建高质量的跨平台应用提供了更强大的基础。

登录后查看全文
热门项目推荐

项目优选

收起
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
118
1.88 K
kernelkernel
deepin linux kernel
C
22
6
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
341
1.24 K
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
192
271
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
912
546
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
377
388
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
143
188
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Jupyter Notebook
68
58
harmony-utilsharmony-utils
harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授权、通知、线程间通信、弹框、吐司、生物认证、用户首选项、拍照、相册、扫码、文件、日志,异常捕获、字符、字符串、数字、集合、日期、随机、base64、加密、解密、JSON等一系列的功能和操作,能够满足各种不同的开发需求。
ArkTS
81
2