鸿蒙开发:什么是ArkTs?

简介: 本小结主要简单介绍了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架构

image.png

声明式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的相关架构以及相关优势。


目录
打赏
0
61
60
5
184
分享
相关文章
|
2天前
|
鸿蒙开发:远场通信服务rcp会话问题
总体来说,问题倒不是很大,解决起来也不是很麻烦,所以啊,老铁们,在实际的开发中,对于一些官方文档,还是建议多看,这样可以提前避免后续的不必要麻烦。
鸿蒙开发:远场通信服务rcp会话问题
鸿蒙开发:ArkTs数据类型
最后一点是,ArkTS不支持any和unknown类型,需要显式指定具体类型,否则会报异常,具体原因是,这是ArkTS的特性之一,那就是使用静态类型;如果程序采用静态类型,即所有类型在编译时都是已知的,那么开发者就能够容易理解代码中使用了哪些数据结构。同时,由于所有类型在程序实际运行前都是已知的,编译器可以提前验证代码的正确性,从而可以减少运行时的类型检查,有助于提升性能。
鸿蒙开发:ArkTs数据类型
鸿蒙开发,远场通信服务rcp拦截器问题
关于rcp的拦截器问题,最重要的就是会话复用的时候,如果Request对象中有需要的参数,就直接用Request中的,而不是使用session中的。
鸿蒙开发,远场通信服务rcp拦截器问题
鸿蒙开发:权限授权封装
关于权限,算上本章内容已经阐述了四个章节了,从相关的概念到,权限管理的授权方式,再到申请权限,直至最后的权限工具类封装,基本上涵盖了七七八八,希望可以帮助到大家。
鸿蒙开发:权限授权封装
鸿蒙开发:ArkTs字符串string
字符串类型是开发中非常重要的一个数据类型,除了上述的方法概述之外,还有String对象,正则等其他的用处,我们放到以后得篇章中讲述。
54 19
鸿蒙相机开发实战:从设备适配到性能调优 —— 我的 ArkTS 录像功能落地手记(API 15)
本文分享鸿蒙相机开发经验,从环境准备到核心逻辑实现,涵盖权限声明、模块导入、Surface关联与分辨率匹配,再到录制控制及设备适配法则。通过实战案例解析,如旋转补偿、动态帧率调节和编解码优化,帮助开发者掌握功能实现、设备适配与体验设计三大要点,减少开发坑点。适合鸿蒙新手及希望深化硬件交互能力的工程师参考收藏。
20 2
鸿蒙开发:申请授权权限
还是那句话,在申请权限的时候,应当严格遵循最小权限原则,结合动态申请和清晰的用户引导,避免给用户带来不好体验,同样,遵循,在使用到权限的时候再去申请,切记,过前进行申请。
uniapp 极速上手鸿蒙开发
uniapp 自版本 `4.28.2024092502` 起支持鸿蒙应用开发,现版本 `4.36.2024112817` 同时支持鸿蒙应用和元服务开发。本文介绍使用 HBuilderX 4.24+ 和 DevEco Studio 进行环境配置、项目创建及运行的详细步骤,涵盖从 AGC 平台新建项目、配置证书到最终运行项目的全流程,帮助开发者快速上手鸿蒙开发。注意:HBuilderX 4.31+ 构建的鸿蒙运行包不支持 x86_64 平台,需使用真机调试。
122 85
uniapp 极速上手鸿蒙开发
|
8天前
|
鸿蒙开发:自定义一个搜索模版
这样的一个模版,可以简单的分为,三个部分,分别是上边的搜索框,中间的历史搜索和下边的热门搜索,搜索框,我们直接可以使用系统的组件Search,历史搜索,由于是内容不一的搜索的内容,这里使用弹性布局Flex,下边的热门搜索,条目规格一致,这里我们直接使用Grid网格组件。
50 23
鸿蒙开发:自定义一个搜索模版
鸿蒙开发:ArkTs语言注释
关于注释,有一点需要注意,那就是,注释,不会被编译器或解释器执行,而本小节的重点并不是简单的教大家注释如何去写,而是在实际的项目中,我们能够真正的把注释投入到实际的开发中。
51 18
鸿蒙开发:ArkTs语言注释

热门文章

最新文章

  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    41
  • 2
    uniapp 极速上手鸿蒙开发
    16
  • 3
    【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    30
  • 4
    EMAS 性能分析全面适配HarmonyOS NEXT,开启原生应用性能优化新纪元
    35
  • 5
    鸿蒙开发:了解@Builder装饰器
    18
  • 6
    鸿蒙开发:wrapBuilder传递参数
    8
  • 7
    鸿蒙web加载本地网页资源异常
    17
  • 8
    【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
    13
  • 9
    鸿蒙H5离线包技术分享
    5
  • 10
    【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    12