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

从零开始开发纯血鸿蒙应用之探析仓颉语言与ArkTS的差异

探析仓颉语言与ArkTS的差异

  • 〇、前言
  • 一、IDE 的支持程度不同
  • 二、内置组件的使用方式不同
  • 三、页面路由实现方式的不同
  • 四、总结

〇、前言

截止到本文发布的日期为止,鸿蒙官方所推荐的开发原生鸿蒙应用的语言,有两种,分别是扩展自 Typescript 的 ArkTS,以及华为公司自主研发的仓颉语言。那么,这两种语言在具体开发中,有什么不一样的地方呢?下面一一介绍。

一、IDE 的支持程度不同

鸿蒙版仓颉语言,目前只有 DevEco Studio 支持,但却并没有像 ArkTS 那样出厂就支持,需要通过加装插件的形式去赋予 IDE 解析仓颉代码的能力:
在这里插入图片描述
仓颉插件下载地址

二、内置组件的使用方式不同

使用 ArkTS 开发鸿蒙应用时,如果是使用内置组件,那么是完全不用写导包语句的,直接在 build 函数中使用即可;而到了仓颉语言这边,这些内置组件的使用,也必须通过导包语句引入,否则编译器就会标红报错:
在这里插入图片描述
只有显式写上 import ohos.component.Text,IDE 才不会报语法错误:
在这里插入图片描述
所以,就只是使用内置组件、而不使用自定义组件的情况而言,ArkTS 脚本会比仓颉脚本的行数少很多,因为 ArkTS 脚本文件头没有大量的导包语句。在这里,有必要提供一个建议:在仓颉脚本用导包语句导入内置组件时,都使用 internal 进行修饰,internal 关键字在仓颉语言中,具有如下作用:

在仓颉编程语言中,internal 是一个访问修饰符,用于控制声明的可见性。具体来说,internal 修饰的声明在其当前包及子包(包括子包的子包)内可见。这意味着,使用 internal 修饰的元素可以在同一包内或该包的任何子包中被访问,但不能跨模块访问。

在这里插入图片描述
在如图的两个构建应用UI的仓颉脚本中,共同地使用到了 Column 等内置组件,但是 second_page.cj 文件中,并没有出现 Column 的导包语句,IDE 也没有提示语法错误,这正是因为 index.cj 文件中在导入 Column 组件时,使用 internal 修饰了导包语句,对比之下,因为没有使用 internal 修饰的 Text 组件,就需要在两个文件中都显示写明导包语句。

总结地说,用好 internal 修饰符,可以让仓颉脚本减少重复的导包语句。

其实,就在上面那张图中,如果仔细看文件头,就会发现 package 开头的一行代码,这也是仓颉脚本与 ArkTS 脚本的区别。

使用仓颉脚本去构建鸿蒙UI,类似于 Jetpack Compose 构建安卓 UI,特别时代码脚本的头部:
在这里插入图片描述

三、页面路由实现方式的不同

同样适用内置的 router 模块进行页面路由时,ArkTS 构建的页面,必须在 resources 目录下的 main_page.json 文件中,注册对应的页面 url,而用仓颉代码构建的页面,则无需如此操作。我猜测,仓颉脚本中 package 语句,在一定程度上具有页面 url 声明定义的功能。

四、总结

仓颉语言与ArkTS之前,除了上面这些大方面上的差异,还存在很多细节上的差异,有兴趣的,可以自行探索。

http://www.dtcms.com/a/267100.html

相关文章:

  • Vuex身份认证
  • 《C++初阶之类和对象》【经典案例:日期类】
  • Java创建型模式---单例模式
  • WSL命令
  • C#每日学习日记
  • 3dmax烘焙插件3dmax法线贴图烘焙教程glb和gltf元宇宙灯光效果图烘焙烘焙光影贴图支持VR渲染器
  • AWS WebRTC:通过shell分析viewer端日志文件
  • 深入解析享元模式:通过共享技术高效支持大量细粒度对象
  • 【力扣 简单 C】70. 爬楼梯
  • 【鸿蒙】鸿蒙操作系统发展综述
  • 递归与循环
  • 深入理解Reactor调试模式:Hooks.onOperatorDebug() vs ReactorDebugAgent.init()
  • 软件工程经济与伦理
  • 流水线(Jenkins)打包拉取依赖的时候提示无法拉取,需要登录私仓的解决办法
  • HTML知识复习2
  • HuggingFists: 无代码处理复杂PDF
  • 一个简单的网页设计
  • Vue Router 中,params参数的名称必须与路由配置中的动态路径参数名完全一致
  • Go语言基础之接口
  • CppCon 2018 学习:Sane and Safe C++ Class Types
  • FLAN-T5:规模化指令微调的语言模型
  • NumPy 函数库在数学建模中的基本使用方法
  • 电脑休眠控制工具,灵活设置防休眠
  • 通过 Windows 共享文件夹 + 手机访问(SMB协议)如何实现
  • Python(28)Python循环语句指南:从语法糖到CPython字节码的底层探秘
  • Everything 1.5.0.1393a高效实用的系统文件搜索工具(2025年7月4日更新)
  • 构建未来交互体验:AG-UI 如何赋能智能体与前端通信?
  • [论文阅读] 软件工程 | 可持续性标志在问答平台中的应用
  • AI语音训练——GPT-SoVITS(GSV)
  • Vue 笔记:动态绑定内联样式 :style 的关键语法注意事项