2020年UI發展趨勢:以聲明式UI統治一切
在2020年,似乎UI開發的主要參與者同意我們(開發人員)如何設計應用或Web應用的UI(用戶界面)。在本文中,我將向您展示2020年具有不同框架和環境的當前UI開發趨勢,并對其進行總結。稍后,我將研究Java / GWT / J2CL中的UI開發趨勢。
UI中的設計趨勢
1. SwiftUI
SwiftUI對Apple世界中的整個UI開發進行了革新。在所有Apple平臺上都是本機,具有所有這些出色的設計工具,為UI開發樹立了很高的標準。還可以從命令式UIKit / AppKit / WatchKit轉到聲明式設計,以使UI開發更加輕松直接。那么,您今天如何實現UI?您可以通過文字描述用戶界面。如果您需要狀態,則可以使用@State標記變量,然后使用它向其中寫入內容,例如$ name。要讀取內容,我們只需要使用(name)。這就是我們所說的"兩種方式綁定"。因此,每次我們將某些內容寫入TextField時,變量名稱都會更新,并且使用該變量的Text也會自動更新。
> SwiftUI with Two Ways Binding "name"
2. Android Jetpack Compose
通過將Android Jetpack Compose添加到Android的UI開發區域,Android UI開發遵循SwiftUI的方式。由于Kotlin優于Java,Jetpack Compose僅使用Kotlin(無Java實現)?我不同意我們只能在Kotlin中進行此類UI開發,但是Google似乎希望在Android開發中將Kotlin推向Java之上,并且不會為Java開發人員實現相同的功能。
> Android Jetpack Compose UI Development with Kotlin (Source: https://bit.ly/3gJUiPJ)
如果我們看一下Jetpack Compose中的代碼結構,它看起來確實類似于SwiftUI。您有不同的語法,但總體而言,其結構和實現方式非常相似。使用@Model批注也可以簡單地實現數據綁定的兩種方式。
3. Flutter
Flutter的概述很不錯,可以告訴我們命令式和聲明式UI開發之間的區別是什么。
> Flutter Declarative UI and Structure (Source: https://bit.ly/3ndrt0E)
Flutter使用Dart作為編程語言,并且它具有用于開發UI的良好結構。同樣,該結構與之前的其他兩個框架非常相似。正如在本Flutter示例中所看到的,與SwiftUI相比,Flutter僅以"兩種數據綁定"方式不那么容易使用。
下一站:Web應用程序
看到以下三個框架:SwiftUI,Android Jetpack Compose和Flutter之后,我們可以總結以下幾點:
- 聲明式而非命令式:UI開發正在從命令式變為聲明式。如何執行(命令性)并不重要,但目標狀態是什么(聲明性)并不重要。
- DSL(特定于域的語言)用于UI和基于文本的語言,而不是基于GUI設計器的語言:UI開發從拖放環境轉移到UI的文本描述。似乎我們使用編程語言和DSL而不是XML來描述我們的UI。
- 兩種方式的數據綁定:通常有兩種方式的數據綁定,因此數據字段中的更新將同步到綁定到該字段的所有UI組件,反之亦然。