当前位置: 首页 > article >正文

鸿蒙开发:什么是ArkTs?

本文基于Api13。

一句话解读:ArkTs(方舟编程语言)是目前HarmonyOs应用开发的主力语言。

用官方的话解读,它是一种为构建高性能应用而设计的编程语言;看到以Ts结尾,想必大家应该很容易想到TypeScript,没错,ArkTS说的再直白一些,它是在继承TypeScript语法的基础上进行了优化,进行了拓展的一门语言。

TypeScript这门语言,可以说深受开发者的喜爱,因为它提供了一种更结构化的JavaScript编码方法,而ArkTS,也保持了TypeScript的大部分语法,可以说,如果你有着TypeScript语言基础,那么针对ArkTS,可以进行无缝衔接,可以非常快速的上手。

声明式开发范式

虽然说,针对不同目的和技术背景,应用开发除了当前的ArkTs语言之外,也可以使用类Web开发范式,也就是通过经典的HTML、CSS、JavaScript来开发应用,但是,作为应用开发,考虑到性能,考虑到底层交互,以及复杂度,开发效率和未来发展趋势而言,ArkTs语言,绝对是当下我们的首选方式,同样,也是官方的主推方式。

目前两种开发方式如下:

开发方式名称

语言生态

UI更新方式

适用场景

适用人群

声明式开发范式

ArkTS语言

数据驱动更新

复杂度较大、团队合作度较高的程序

移动系统应用开发人员、系统应用开发人员

类Web开发范式

JS语言

数据驱动更新

界面较为简单的程序应用和卡片

Web前端开发人员

可以确定的是,未来一定是声明式开发范式,大家可以去看下现在的Android或者iOS,虽然说常规的开发方式,依然占据主导地位,但是声明式的UI开发框架Compose,SwiftUI,以及Flutter,也在不断地发展壮大,不断地走向开发者的首选一方,说到这里,我们延伸一下声明式开发范式的优势。

优势

我们都知道,传统的命令式开发方式,如果想要给一个UI组件渲染一个数据,首先要获取到指定的组件,然后通过一定的方法把数据再设置给UI组件,达到数据渲染的功能,但是这种方式,开发者除了要关注问题的本质,还要参与到具体的实现步骤,不仅代码上冗余,而且性能也有消耗,针对这样的一个不足,在声明式开发范式中是没有的,我们看下声明式开发范式有哪些优势。

1、代码简洁性和易读性

声明式开发范式强调的是“什么”,而非“如何”,它不用操心具体的过程,使得代码更加简洁、易读,也就是说在开发中,开发者只需关注于描述页面结构和行为,而不需要陷入具体的实现细节,这有助于提高开发效率,减少错误和调试时间。

2、抽象层次高

声明式开发范式相对来说更加抽象,让开发者更专注于问题的本质,而不是具体的实现步骤,这种高层次的抽象有助于提升代码的可维护性,因为逻辑更加清晰,维护起来也相对容易。

3、性能优化潜力大

声明式开发范式通常与响应式编程和数据绑定等特性相结合,使得页面能够自动响应数据的变化,实现动态更新,而底层框架可以针对特定的优化策略进行实现,如虚拟DOM、脏检查等,从而提高渲染速度和响应性能。

4、可移植性和并行化

声明式开发范式的逻辑和结构与底层实现解耦,因此更容易实现跨平台和可移植的代码,一些声明式编程模型更容易进行并行计算,进一步提高性能。

需要说明的是,虽然说,声明式开发范式有很多的优点,但并不是强制大家去切换,在实际的开发中由于开发者的偏好,或者历史遗留或者其他因素,还是建议大家选择自己适合的开发方式。

ArkTs优势

鸿蒙开发,有一个比较好的优势,那就NEXT之后,直接就提供了声明式开发范式,所以,这一点,在我们切入的时候,就不用有任何的负担了,前边也说过,虽然鸿蒙当中提供了类Web开发范式,但是为了性能,更好的底层交互以及未来发展趋势而言,无论是官方还是作者来说,都建议大家开发鸿蒙应用,直接上手ArkTs。

1、开发效率高,开发体验好

代码表述精简高效:采用贴近自然语言的描述方式来勾勒用户界面(UI),使开发者无需深入探究框架内部的UI绘制与渲染细节,从而专注于创意与功能的实现。

数据驱动UI动态更新:这一机制使得开发者能够将更多精力投入到业务逻辑的核心处理上。一旦UI需要调整,开发者无需亲自编写复杂的UI切换代码,而仅需关注并编写触发界面更新的数据逻辑,具体的UI变化则交由框架智能处理与呈现。

开发体验卓越:由于界面设计同样以代码形式呈现,这一特性极大地丰富了开发者的编程体验,使得他们在熟悉的代码环境中能够更加流畅地进行创作与调试。

2、性能优越

声明式UI架构实现了前端与UI后端的清晰分层:UI后端以高性能的C++语言为基石,精心构建了涵盖基础组件、灵活布局、生动动效、丰富交互事件、精细组件状态管理以及高效渲染管线的全方位支持,为前端提供了坚实的基础与强大的功能。

在语言编译器与运行时的优化方面,实施了多项先进技术,包括但不限于统一字节码以提高执行效率、高效的外部函数接口(FFI)促进跨语言调用、采用提前编译(AOT)技术减少运行时开销、实现引擎极小化以降低资源占用,以及类型优化以增强代码的安全性与执行速度。这些优化措施共同确保了平台的卓越性能与高效运行。

3、生态容易快速推进

能够充分利用主流语言生态的优势,实现快速发展。其语言设计秉持中立友好的原则,便于与多种编程语言及工具集成。同时,拥有相应的标准组织作为支撑,能够遵循既定的规范与路线图,持续演进并不断提升平台的功能与性能。

ArkTs架构

声明式UI前端

这一层,主要提供了UI开发范式的基础语言规范,包含了内置的UI组件、布局和动画等,并且还提供了多样化的状态管理机制,确保应用状态的精准追踪与高效管理,为了进一步提升应用开发者的体验与效率,也提供了一系列接口支持,涵盖从组件调用到状态同步的各个方面,全方位助力开发者打造卓越的用户界面。

语言运行时

语言运行时,它具备对UI范式语法的强大解析能力,支持跨语言调用,并为TypeScript(TS)语言提供了一个高性能的运行环境。

声明式UI后端引擎

后端引擎集成了高度兼容各类开发范式的UI渲染管线,不仅涵盖了多样化的基础组件、精确高效的布局计算、流畅生动的动效处理以及丰富的交互事件响应,还配备了强大的状态管理机制和灵活的绘制功能,全方位满足UI开发的需求。

渲染引擎

提供了高效的绘制能力,将渲染管线收集的渲染指令,绘制到屏幕的能力。

平台适配层

提供了对系统平台的抽象接口,具备接入不同系统的能力,如系统渲染管线、生命周期调度等。

适配规则(了解)

强制使用静态类型:静态类型是ArkTS最重要的特性之一。如果使用静态类型,那么程序中变量的类型就是确定的。同时,由于所有类型在程序实际运行前都是已知的,编译器可以验证代码的正确性,从而减少运行时的类型检查,有助于性能提升。

禁止在运行时改变对象布局:为实现最大性能,ArkTS要求在程序执行期间不能更改对象布局。

限制运算符语义:为获得更好的性能并鼓励开发者编写更清晰的代码,ArkTS限制了一些运算符的语义。比如,一元加法运算符只能作用于数字,不能用于其他类型的变量。

不支持Structural typing:对Structural typing的支持需要在语言、编译器和运行时进行大量的考虑和仔细的实现,当前ArkTS不支持该特性。根据实际场景的需求和反馈,我们后续会重新考虑。

扩展能力(了解)

当前,在UI开发框架中,ArkTS主要扩展了如下能力:

基本语法:ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力,再配合ArkUI开发框架中的系统组件及其相关的事件方法、属性方法等共同构成了UI开发的主体。

状态管理:ArkTS提供了多维度的状态管理机制。在UI开发框架中,与UI相关联的数据可以在组件内使用,也可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,还可以在应用全局范围内传递或跨设备传递。另外,从数据的传递形式来看,可分为只读的单向传递和可变更的双向传递。开发者可以灵活地利用这些能力来实现数据和UI的联动。

渲染控制:ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态,渲染对应状态下的UI内容。循环渲染可从数据源中迭代获取数据,并在每次迭代过程中创建相应的组件。数据懒加载从数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。

小结

本小结主要简单介绍了ArkTs语言的相关知识,都是一些概念性质的内容,大家作为一个了解即可,需要知道的有:

1、ArkTs是基于TypeScript而来,并且做了拓展。

2、了解ArkTs的相关架构以及相关优势。


http://www.kler.cn/a/590417.html

相关文章:

  • 用旧的手机搭建 MQTT Broker-Node_red
  • 【Linux系列】文件压缩
  • 【前端效果】CSS实现动态渐变背景动画
  • 前端面试:babel-runtime 作用是啥?
  • 信创环境下TOP5甘特图工具对比:从功能到适配性测评
  • 蓝桥杯Python赛道备赛——Day7:动态规划(基础)
  • C++ map set pair
  • 《论分布式系统架构设计及其应用》架构师论文
  • Qt-QChart实现折线图
  • [贪心算法]-最大数(lambda 表达式的补充)
  • Java 集合框架(Collection)
  • QT:动态属性和对象树
  • Compose笔记(九)--Checkbox
  • [数据结构]排序之 快速排序详解(递归版非递归版)
  • 游戏引擎学习第162天
  • 2025年高职大数据可视化实训室建设及实训平台整体解决方案
  • Vue秘籍:如何动态修改页面 Title(浏览器页签名称)?
  • idea cpu干到100%的解决方法?
  • HarmonyOS NEXT开发实战——HUAWEI DevEco Studio 开发指南
  • 车载以太网测试-13【网络层-IGMP协议】