鸿蒙开发语言仓颉和ArkTS优缺点?使用场景?

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

需要说明的是,仓颉不是鸿蒙的“开发语言”,而是HarmonyOS NEXT(纯血鸿蒙)面向开发者的一种“声明式UI语法”(声明式UI的DSL,Domain Specific Language),设计目标是提供一种更自然、更接近人类语言的描述方式来构建UI。而ArkTS则属于HarmonyOS NEXT的默认官方开发语言,它是TypeScript (TS)的超集,继承了TS的所有功能,并在其基础上增加了针对鸿蒙多个场景的扩展。

所以,更准确的对比应该是:

  • ArkTS : 鸿蒙NEXT 的编程语言
  • 仓颉: 鸿蒙 NEXT 的声明式UI描述方式/语法

在实际开发中,ArkTS 是核心编程语言,而仓颉是 ArkTS 中用于构建 UI 的部分。你可以将仓颉理解为 ArkTS 在 UI 描述方面的“方言”或“框架”。


1. ArkTS(鸿蒙NEXT默认开发语言)

ArkTS 是 TypeScript 的超集,这意味着它具备 TypeScript 的所有优点,并且在此基础上为鸿蒙平台做了优化。

  • 核心技术:TypeScript (TS) + 鸿蒙平台特性。
  • 优点
    1. TypeScript 的强大优势
      • 静态类型检查:在编译时捕获大量潜在的类型错误,显着提高代码质量和稳定性,减少运行时错误。
      • 面向对象编程(OOP):支持类、接口、继承、多态等,使得代码格式化、易于维护和扩展。
      • 默认: 支持 ES 模块,方便代码组织和复用。
      • 丰富的生态:继承了JavaScript的庞大生态,可以利用大量的JS库。
      • 良好的开发工具支持:IDE(如VS Code、DevEco Studio)提供强大的智能提示、代码补全、重构等功能。
    2. 鸿蒙多种特性
      • 原子化服务:ArkTS提供了直接调用和开发多种应用的能力,使得应用可以在不同的设备间无缝流转和良好。
      • 跨端能力:作为TS的超集,它在设计上就考虑了跨设备、跨端的能力。
    3. 声明式UI的支持:ArkTS与声明式UI框架(包括仓颉)深度集成,是构建UI的载体。
    4. 性能:TS本身是编译型(编译为JS),在运行时性能通常接近于解释型语言。鸿蒙在ArkTS的运行和编译上做了深度优化。
    5. 学习曲线平缓:对于熟悉 JavaScript/TypeScript 的开发者来说,学习 ArkTS 非常容易。
  • 缺点
    1. 作为 TS 超集,仍继承了 TS 的一些特性
      • 学习曲线:对没有JS/TS背景的开发者一定的学习基础。
      • 编译过程:需要编译步骤,不是完全的解释型执行。
    2. 鸿蒙有API的学习:虽然语言本身很熟悉,但需要学习鸿蒙的API、框架和多种特性。
    3. 生态相对兴起:尽管继承了JS生态,但鸿蒙平台特有的库和工具链仍将快速发展中。
  • 使用范围
    • HarmonyOS NEXT应用开发:包括全场景设备(手机、平板、手表、智慧屏、车机等)的融合应用。
    • 多元化应用开发:构建能够跨设备良好的复杂应用。
    • 需要高性能、高稳定性和良好代码管理的大型复杂项目

2.仓颉(鸿蒙NEXT声明式UI语法DSL)

仓颉是鸿蒙NEXT中用于描述UI的一种新语法,它描绘在ArkTS代码中。

  • 核心技术:声明式UI的领域特定语言(DSL)。
  • 优点
    1. 更自然、更接近语言的描述:设计理念是让UI的描述更具有洞察力,更容易理解。例如,通过自然语言的关键字来描述UI元素的布局和行为。
    2. 高度声明式:开发者只需描述“什么”,而分散注意力“如何”实现。UI状态的变化会自动更新UI。
    3. 与 ArkTS 深度集成:仓颉语法被编译成 ArkTS 代码,与 ArkTS 的数据绑定、状态管理等能力无缝结合。
    4. 声明式UI的普遍优点
      • 代码简洁:UI代码比传统的命令式UI构建方式更简洁。
      • 易于维护:UI结构清晰,易于阅读和修改。
      • 状态驱动:改变状态时UI自动更新,减少手动UI操作的复杂性。
    5. 潜在的性能优化:鸿蒙平台会针对声明式UI进行编译优化。
  • 缺点
    1. 全新的语法体系:对于习惯了命令式UI(如Android/iOS的语法API、React Native的JSX)的开发者,需要适应新的语法和思维模式。
    2. 抽象层次优先:对于底层的 UI 渲染细节,开发者需要通过 ArkTS 或平台提供的 API 来控制,仓颉本身更侧重于描述 UI 结构。
    3. 生态和工具链仍在发展:虽然是官方语法,但社区本身的广泛应用和第三方库的支持仍在建设中。
    4. 调试可能需要适应:UI状态管理和渲染的调试方式可能与命令式UI不同。
  • 使用场景
    • HarmonyOS NEXT应用界面的构建:负责定义应用程序的视觉布局、交互元素和动画。
    • 快速UI原型设计:能够快速搭建出UI原型。
    • 构建复杂的布局和交互的 UI:声明式的方式更利于管理。

两种语言/语法的战斗使用

在鸿蒙 NEXT 开发中,ArkTS 是主要语言,而仓颉是 ArkTS 中用于构建 UI 的一部分

  • ArkTS 负责
    • 应用逻辑(数据处理、网络请求、算法等)。
    • 状态管理。
    • 调用系统API(通用能力、硬件能力等)。
    • 与仓颉生成的UI代码进行数据绑定。
    • 处理事件响应。
  • 仓颉 (凹陷在 ArkTS 中) 负责:
    • 定义UI的结构、布局(例如使用Row、、ColumnStack组件)。
    • 声明UI元素的属性(如颜色、大小、文本)。
    • 描述UI的状态和交互(例如,当某个变量改变时,UI上的文本更新)。

效果(概念性,仓颉语法设计是自然语言风格的):

// 假设这是一个ArkTS文件 (.ets)

// 导入仓颉定义的UI组件 (仅为示意)
import { Row, Column, Text, Button, Image } from '@system.ui.arkui'; 

@Component // 这是一个ArkTS组件,内部使用仓颉语法
struct MyPage {
    // 状态变量,会驱动UI更新
    @State message: string = "Hello, ArkTS!";
    @State counter: number = 0;

    // 使用仓颉描述UI结构
    build() {
        // 仓颉的自然语言风格描述
        Row() { // Row 是一个UI布局组件
            Column() { // Column 嵌套在 Row 中
                Image() { // Image 组件
                    .source("app_icon.png") // 属性设置
                    .width(100)
                    .height(100)
                }
                Text(this.message) // Text 组件,显示状态变量
                    .fontSize(20)
                    .fontWeight(FontWeight.Bold)
                
                Button("Click Me") { // Button 组件
                    // 按钮点击事件处理,在ArkTS中实现
                    onClick: () => {
                        this.counter++;
                        this.message = `Clicked ${this.counter} times`;
                    }
                }
                .padding(10)
            }
        }
    }
}

在此示例中,@Componentbuild()是 A​​rkTS 的特性,而Row()Column()、其链式属性设置、、等,撕仓颉所语法描述的声明式 UI 构建方式。Text()和是A​​rkTS 的状态标记,它们的变化会自动触发函数的重新执行,从而更新 UI。Button().source().width().fontSize()this.messagethis.counterbuild()


总结

  • ArkTS:是鸿蒙NEXT开发的核心语言,提供强类型、面向对象、多元化能力,是构建整个应用逻辑和UI交互的基础。
  • :是ArkTS中用于描述UI结构和布局的声明式语法DSL,旨在让UI构建更加美观、简洁,并与ArkTS的状态管理仓无缝配合。

对于开发者来说,ArkTS 是必须掌握的基础,而仓颉构建鸿蒙 NEXT 应用界面的具体方法。熟悉 TypeScript 的开发者能够非常快速地掌握 ArkTS。学习仓颉需要理解声明式 UI 的思维方式。两者共同构成了鸿蒙 NEXT 开发的基础能力。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hefeng_aspnet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值