2.2 基于eTS的ArkUI有什么优势 原创 精华
这一节我们对于“基于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的缺点是暂时的,威胁是不致命的,而它的优点和机会,却是显而易见的!
看好ETS的未来
看好