对比js、ts、flutter,ArkTS的优点
arkts 的语法特点
arkTs 的UI范式
一、简介
浅析ArkTS的起源和演进
Mozilla创造了JS,Microsoft创建了TS,Huawei进一步推出了ArkTS。TS是JavaScript(简称JS)的超集,ArkTS则是TS的超集。
在TypeScript(简称TS)的基础上,扩展了声明式UI、状态管理等相应的能力
ArkTS的优点
- 对比js/ts:
- 写一个应用需要了解三种语言(JS/TS、HTML和CSS)。这对Web开发者相对友好,但对非Web开发者来说,负担较重。
- TS的类型检查仅在编译时检查
- 在渲染方面,主流Web引擎由于本身复杂度以及历史原因,性能、资源占用方面与常见OS原生框架都有一定的差距,尤其在移动平台上。
- 对比 Flutter
- 语言生态:Dart和主流语言生态相比还是有非常大的差距。
- 开发范式: Flutter暴露了很多细粒度的Widget接口,整体开发的简洁度,开发门槛,尤其是和Apple推出的SwiftUI相比,存在一定的差距。
- ArkTs优点:
- 语言生态 :JS/TS有比较完善的开发者生态,语言也比较中立友好。通过基于JS扩展的类Web开发范式,来支持主流的前端开发方式
- 开发效率:基于TS扩展的声明式UI开发范式,提供了更简洁更自然的开发体验
- 性能体验:在运行时方面,通过渲染引擎的增强,语言编译器和运行时的优化增强,进一步提升相关的性能体验。结合语言运行时的类型优化,以及渲染运行时的扁平化流水线技术等,进一步提升性能体验。
- 跨设备/跨平台能力:可部署到不同设备上(包括百KB级内存的轻量设备)。另外,通过平台适配层的设计,构建了跨OS平台的基础设施。
至于为啥不跟安卓一样用java,可能是因为听说谷歌因为用java被告了所以怕了吧……
二、ArkTs语法特点
语法特性
1. 强制使用静态类型
静态类型是ArkTS最重要的特性之一。如果使用静态类型,那么程序中变量的类型就是确定的。同时,由于所有类型在程序实际运行前都是已知的,编译器可以验证代码的正确性,从而减少运行时的类型检查,有助于性能提升。
2.禁止在运行时改变对象布局
为实现最大性能,ArkTS要求在程序执行期间不能更改对象布局。
3.限制运算符语义
为获得更好的性能并鼓励开发者编写更清晰的代码,ArkTS限制了一些运算符的语义。比如,一元加法运算符只能作用于数字,不能用于其他类型的变量。
4.不支持Structural typing
在UI开发框架中,ArkTS主要扩展了如下能力:
基本语法:
ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力,再配合ArkUI开发框架中的系统组件及其相关的事件方法、属性方法等共同构成了UI开发的主体。
状态管理:
ArkTS提供了多维度的状态管理机制。在UI开发框架中,与UI相关联的数据可以在组件内使用,也可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,还可以在应用全局范围内传递或跨设备传递。另外,从数据的传递形式来看,可分为只读的单向传递和可变更的双向传递。开发者可以灵活地利用这些能力来实现数据和UI的联动。
渲染控制:
ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态,渲染对应状态下的UI内容。循环渲染可从数据源中迭代获取数据,并在每次迭代过程中创建相应的组件。数据懒加载从数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。