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

2.仓颉(鸿蒙NEXT声明式UI语法DSL)
仓颉是鸿蒙NEXT中用于描述UI的一种新语法,它描绘在ArkTS代码中。
- 核心技术:声明式UI的领域特定语言(DSL)。
- 优点:
- 更自然、更接近语言的描述:设计理念是让UI的描述更具有洞察力,更容易理解。例如,通过自然语言的关键字来描述UI元素的布局和行为。
- 高度声明式:开发者只需描述“什么”,而分散注意力“如何”实现。UI状态的变化会自动更新UI。
- 与 ArkTS 深度集成:仓颉语法被编译成 ArkTS 代码,与 ArkTS 的数据绑定、状态管理等能力无缝结合。
- 声明式UI的普遍优点:
- 代码简洁:UI代码比传统的命令式UI构建方式更简洁。
- 易于维护:UI结构清晰,易于阅读和修改。
- 状态驱动:改变状态时UI自动更新,减少手动UI操作的复杂性。
- 潜在的性能优化:鸿蒙平台会针对声明式UI进行编译优化。
- 缺点:
- 全新的语法体系:对于习惯了命令式UI(如Android/iOS的语法API、React Native的JSX)的开发者,需要适应新的语法和思维模式。
- 抽象层次优先:对于底层的 UI 渲染细节,开发者需要通过 ArkTS 或平台提供的 API 来控制,仓颉本身更侧重于描述 UI 结构。
- 生态和工具链仍在发展:虽然是官方语法,但社区本身的广泛应用和第三方库的支持仍在建设中。
- 调试可能需要适应:UI状态管理和渲染的调试方式可能与命令式UI不同。
- 使用场景:
- HarmonyOS NEXT应用界面的构建:负责定义应用程序的视觉布局、交互元素和动画。
- 快速UI原型设计:能够快速搭建出UI原型。
- 构建复杂的布局和交互的 UI:声明式的方式更利于管理。
两种语言/语法的战斗使用
在鸿蒙 NEXT 开发中,ArkTS 是主要语言,而仓颉是 ArkTS 中用于构建 UI 的一部分。
- ArkTS 负责:
- 应用逻辑(数据处理、网络请求、算法等)。
- 状态管理。
- 调用系统API(通用能力、硬件能力等)。
- 与仓颉生成的UI代码进行数据绑定。
- 处理事件响应。
- 仓颉 (凹陷在 ArkTS 中) 负责:
- 定义UI的结构、布局(例如使用
Row、、Column等Stack组件)。 - 声明UI元素的属性(如颜色、大小、文本)。
- 描述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)
}
}
}
}
在此示例中,@Component和build()是 ArkTS 的特性,而Row()、Column()、其链式属性设置、、等,撕仓颉所语法描述的声明式 UI 构建方式。Text()和是ArkTS 的状态标记,它们的变化会自动触发函数的重新执行,从而更新 UI。Button().source().width().fontSize()this.messagethis.counterbuild()
总结
- ArkTS:是鸿蒙NEXT开发的核心语言,提供强类型、面向对象、多元化能力,是构建整个应用逻辑和UI交互的基础。
- 颉:是ArkTS中用于描述UI结构和布局的声明式语法DSL,旨在让UI构建更加美观、简洁,并与ArkTS的状态管理仓无缝配合。
对于开发者来说,ArkTS 是必须掌握的基础,而仓颉构建鸿蒙 NEXT 应用界面的具体方法。熟悉 TypeScript 的开发者能够非常快速地掌握 ArkTS。学习仓颉需要理解声明式 UI 的思维方式。两者共同构成了鸿蒙 NEXT 开发的基础能力。
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

1768

被折叠的 条评论
为什么被折叠?



