這一節我們對于“基于eTS的方舟開發架構ArkUI的鴻蒙開發”做一個SWOT分析,即,優點、缺點、機會和威脅。
2.2.1 優點
1>. 極簡高效的UI資訊文法
ArkUI采用極簡的聲明式UI描述界面文法,您隻需用幾行簡單直覺的聲明式代碼,即可完成界面功能, 提升HarmonyOS應用界面開發效率30%。UI開發更接近自然語義的程式設計方式,讓開發者直覺地描述UI界面 , 允許開發者以優雅的鍊式調用文法調用的方式配置UI結構及其屬性、事件等。
@Entry
@Component
struct Index {
private title:string = 'HarmonyOS 3.0什麼時候釋出'
build() {
Column() {
Text(this.title)
.fontSize(30)
.fontWeight(FontWeight.Bold)
.fontColor($r("app.color.title"))
.onClick(() => {
console.log("我被點選了")
})
}.width('100%').height('100%').margin({top:100})
}
}
2>. 更加快速的建立和銷毀元件
元件可以基于struct對象實作,元件不能有繼承關系。struct可以比class更加快速的建立和銷毀。如下代碼所示:
@Component
struct MyComponent {
build() {
}
}
3>. 實時界面預覽工具
ArkUI支援實時界面預覽特性可幫助您快速的所見即所得的開發和調測界面,無需連接配接真機裝置就可以顯示您的應用界面在任何HarmonyOS裝置上的UI效果,支援多裝置同時預覽對比,支援橫豎屏切換、深色模式/淺色模式效果切換。
4>. 高效跨端開發
ArkUI提供跨裝置資料綁定功能和多元狀态管理機制(元件内/元件間/全局/分布式資料驅動UI變更),幫助開發者節省70%代碼完成跨端界面應用開發。
5>. 原生性能體驗
ArkUI内置了許多核心的UI控件和動效,如圖檔、清單、網格、屬性動畫、轉場動畫等,加持自研語言運作時深度優化,這些都可以在HarmonyOS裝置上達到移動原生應用一樣的性能體驗。
6>. 青出于藍而勝于藍
上一節我們講解了“Javascript -> Typescript -> eTS”的進化過程,eTS雖然是從Javascript二次擴充而來,完全相容Javascript,但是,避免了“JavaScript語言本身的局限性,難以勝任和維護大型項目開發”的弊端,同時,eTS 聲明式開發範式無需JS Framework進行頁面DOM管理,渲染更新鍊路更為精簡,占用記憶體更少。
2.2.2 缺點
1>. UI元件暫時不夠豐富
目前華為官方僅提供了35個基礎元件和容器元件,全部處于Beta版階段,而且僅支援手機和平闆裝置,對于智慧屏和智能穿戴裝置暫不支援。其中布局類容器元件Flex、Row、Column、GirdContainer、Gird、Stack、Scroll、List和Tabs已能滿足正常布局的需要,但是基礎元件還很不夠,如,文本輸入框元件TextInput,雖然提供了膠囊形風格的元件外觀,但這個外觀是強制的,如果想呈現無邊框輸入框的效果,還不支援,後續我會介紹我的解決辦法。另外單選框Radio和複選框Checkbox這種常用表單元件還未提供。這在做實際工程項目時造成不便。希望在API 7 release版時會有所改善。
在《第9章 為ArkUI量身打造的多态元件庫HUI》中,會講解我為eTS ArkUI量身打造的一套元件庫,逐個介紹這些元件的用法并開源。這套元件庫覆寫“文本元件、媒體元件、高階元件、表單元件、資料元件、導航元件、代碼元件、操作回報、圖表元件和高頻場景”共計十個分類約200個元件,截止今天,已完成了約60個元件。開源社群也有很多元件,不過比較零散,品質良莠不齊,不成體系,大家有興趣也可以看看。
這裡示範以下我寫的使用者名元件的調用代碼,以及該元件在不同裝置的表現,支援橫豎屏自動适配,支援深色模式/淺色模式自動适配:
import {Username} from '../common/ui/form'
@Entry
@Component
struct Test {
@State params: any = {}
build() {
Column({space:10}) {
Username({params:$params,name: 'username1'})
Username({params:$params,name: 'username1',noBorder:true})
Username({params:$params,name: 'username1',noBorder:true,formHorizontal:true})
Username({params:$params,name: 'username1',formHorizontal:true})
Username({params:$params,name: 'username1',alignRight:true})
}
.width('100%').height('100%')
.backgroundColor($r("app.color.appBg"))
.alignItems(HorizontalAlign.Start)
.padding({ top: $r("app.float.spaceTop"), bottom: $r("app.float.spaceBottom"), left: $r("app.float.spaceLeft"), right: $r("app.float.spaceRight") })
}
}
2>. 暫時無法真機調試
目前HarmonyOS 3.0處于Beta版,暫時無法本地真機調試。遠端真機無支援API 7的裝置。遠端模拟器隻有一個P40 Pro的裝置,無平闆電腦裝置可測試,同時,遠端模拟器配置較低,運作一些稍耗性能的App,可能會異常。
随着時間推移,這些暫時的問題都能完美解決。
2.2.3 機會
eTS ArkUI作為華為新推出的鴻蒙App開發語言,大家站在了同一起跑線。現在開始學習eTS ArkUI實戰技巧,就能成為全球第一批eTS鴻蒙開發者!
2.2.4 威脅
Flutter是谷歌的移動UI架構,可以快速在iOS和Android上建構高品質的原生使用者界面。它也是建構未來的Fuchsia OS應用的主要方式。 Fuchsia OS 是一款面向多平台的作業系統, 是安卓系統的更新版,部分繼承了安卓系統的UI設計和界面邏輯。 它的載體不僅是智能手機,還有平闆電腦、筆記本電腦甚至是可穿戴裝置。
不過,Fuchsia OS的定位是面向多平台的作業系統,主要是打通移動裝置和PC,而HarmonyOS的定位是物聯網,是按照“1+8+N”來規劃的。從這點上說,鴻蒙對于Fuchsia具有降維打擊的效果。
綜上,eTS的缺點是暫時的,威脅是不緻命的,而它的優點和機會,卻是顯而易見的!