前言

每年都有创新和技术进入市场,让设计师的生活变得轻松。声明式 UI 已成为近年来最引人注目的趋势之一,因为它:

  • 降低开发成本。
  • 帮助开发/提高开发人员的效率和技能。
  • 它可以更轻松地专注于具有相似代码的不同平台和设备。

众所周知,谷歌构建其 UI 框架需要时间。在此之前,他们终于发布了适用于原生 Android 应用程序的 Jetpack Compose。

声明式 UI 是一种工业趋势

命令式 UI 是很长一段时间的设置。这并不意外,它很健壮,但对于复杂的反应式应用程序却失败了。声明式 UI 展示了令人难以置信的社区采用和执行改进。

考虑到这一点,不同的框架很快就开始采用这种方法,而 Jetpack Compose 已经成为人们关注的焦点。与 Apple 在 2019 年 9 月交付 SwiftUI 不同。

Jetpack Compose 与传统 UI 创建的不同之处

从 Java Swing 和 Win32 开始,大多数 UI 都是以命令式风格编写的。

它也适用于 Android 和 iOS UI 开发。开发人员过去常常通过描述组件如何响应更改来开发 UI。当状态发生变化时,我们可以稍后使用 setter 更新它们。

ReactFlutterSwiftUIJetpack Compose采用了另一种策略。您需要确定 UI 应该引入什么,而不是元素应该如何开发。部分如何传递给框架,整个方法称为声明性 UI。

Jetpack Compose 相对于传统 UI 创建的优势

从长远来看,许多专业问题一直在堆积。Jetpack Compose 是解决此问题的最佳方案,因为:

  • Jetpack Compose 是对 Android UI 的完全重新设计。它从一开始就致力于支持开发质量和速度。

  • Jetpack Compose 中的 UI 是用 Kotlin 编写的,有些部分是用 Java 或 XML 开发的。无论我们创建应用程序的哪个部分,我们都可以利用 Kotlin。

  • Jetpack Compose与 XML 有相似之处,反之亦然。

  • 它适合单向数据流(其中状态向下流动而事件向上流动)作为可组合和接受的状态。

  • 声明式 UI 创建不可变的 UI 对象,无需编写代码和同步。这种方法可以通过最小化错误和降低开发成本来平衡整个类。

  • Jetpack Compose支持 Material Design组件、主题和动画。它允许开发人员快速创建漂亮的用户界面。

  • 一个未捆绑的工具包,因此它不像 View Support 库那样依赖于平台版本。

  • Jetpack Compose采用 MVVM (模型-视图-视图模型)架构从头开始设计。MVVM 架构强制执行清晰的关注点分离,并使代码更易于维护。

  • Jetpack Compose旨在提高开发人员的工作效率。许多适用于 Android 的软件模块从开发人员的工作量中重构出来。

  • 它解决了 UI 作为不同的可变元素的各种问题。

  • 它利用智能重组并实现单独的布局传递。这消除了 XML 问题,例如视图扩展。

  • Jetpack Compose 研究了用户界面的工作原理,并针对常见场景进行了优化。他们正在使用数据结构和算法来使组合看起来更具动态性。

Jetpack Compose 的缺点

  • 目前,在学习阶段:该方法是独一无二的,因为开发人员很少使用它。此外,它需要更多的时间来适应创新。

  • 更少的工具支持:他们中的大多数人都需要时间来进行创新。它在开发市场中是新的,因此目前可用的工具较少。

  • 受限制的社区采用:目前,Jetpack Compose 正在成为一种趋势。绝大多数小组将偏爱带有 XML 的传统 UI。由于 Kotlin 并没有立即成名,Jetpack Compose 需要数年时间才能被广泛采用。

  • 缺乏文档:很多问题都可能由某人解决。有很多资产可以单独解决。使用 Jetpack Compose 找到您想要的一切是不安全的。发布后,将会有更多的文档出现。

最后!!

声明式 UI 是一种全球趋势。Web 和 Mobile 都在采用这种方法。谷歌澄清说,Jetpack Compose 是首要任务之一。

替代标准 XML 的创新需要很长时间。许多开发人员仍会犹豫是否要切换到这种方法。其原因是独一无二的,但尚未限制采用。

GitHub 加速计划 / compose / compose
33.28 K
5.15 K
下载
compose - Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,通过Compose文件格式简化应用部署过程。
最近提交(Master分支:3 个月前 )
5e3a0953 full diff: https://github.com/docker/cli/compare/v27.4.0-rc.1...8d1bacae3e49ed1d096eede8eef4ae851d7f2eae Signed-off-by: Sebastiaan van Stijn <github@gone.nl> 7 天前
a2a3eb72 - full diff: https://github.com/docker/cli/compare/cb3048fbebb1...v27.4.0-rc.1 Signed-off-by: Sebastiaan van Stijn <github@gone.nl> 7 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐