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

鸿蒙笔记--tsets

      这一节主要了解一下鸿蒙中ts与ets,在鸿蒙(HarmonyOS)的开发中,ArkTS作为一套面向全场景智慧生态的TypeScript开发框架,提供了ts与ets两种文件后缀的开发方式,它们在特性、使用场景及功能上有所不同。

ts文件
特性:ts文件即普通的TypeScript文件,它遵循标准的TypeScript语法,不包含鸿蒙特有的扩展。这些文件可以用于实现业务逻辑、数据处理等功能,而不局限于UI相关的代码。


使用场景:ts文件可以在任何支持TypeScript的环境中使用,不仅仅是鸿蒙应用。它们可以与现有的TypeScript库和工具链无缝集成。对于不直接涉及UI的部分,比如后端服务调用、数据处理、算法实现等,标准的TypeScript更加合适。这些逻辑通常不需要依赖鸿蒙特有的API或特性,因此可以使用更通用的TypeScript来编写。


兼容性:ts文件最终会被编译成JavaScript,以便在鸿蒙设备上执行。标准TypeScript语言(.ts文件)将随着TS版本升级,保持兼容。

ets文件
特性:ets文件是Enhanced TypeScript的缩写,是为鸿蒙应用开发而设计的一种TypeScript扩展。它包含了一些专有的语法糖和API,以更好地支持鸿蒙的声明式UI框架ArkUI。ets提供了更简洁、直观的语法来定义UI组件及其状态,这些特性可能包括自定义属性、生命周期方法等,都是为了简化开发者的工作流程。


使用场景:ets文件紧密集成了ArkUI,允许开发者使用声明式的编程风格来构建用户界面。这通常意味着ets文件会包含大量的UI描述代码。ArkUI提供了一系列的UI组件和布局容器,可以直接在ets文件中使用,并且有专门的语法来定义组件的状态和行为。因此,当你需要创建用户界面时,ets是首选。使用ets可以轻松地构建复杂的布局,并且能够很好地管理状态和生命周期。ets支持响应式编程模式,这使得处理UI的状态变化变得更加简单。


兼容性:ets文件由鸿蒙提供的工具链处理,比如DevEco Studio,它可以将ets代码编译成可以在鸿蒙设备上运行的二进制代码。编译过程中,ets的一些增强特性会被转换为标准的JavaScript或其他中间格式,以便于执行。从API version 10 Release起,ArkTS在保持TypeScript基本语法风格的基础上,进一步通过规范强化静态检查和分析,使得在程序运行之前的开发期能检测更多错误,提升代码健壮性,并实现更好的运行性能。

两者间的调用与关系

       ts文件不支持调用ets文件中定义的方法,但ets可以调用ts文件中定义的方法。ets调用ts文件中定义的方法时,可以使用ES6中的import引入及export导出的语法,将ts文件中的方法进行export导出,在ets文件中import引入该方法进行调用。
       在鸿蒙项目中,推荐使用ets文件进行UI相关的开发,而ts文件则更适用于编写业务逻辑等非UI相关的代码。这样的分工可以充分利用ets在UI开发上的优势,同时保持ts在跨平台逻辑代码编写上的通用性。综上所述,ts与ets在鸿蒙ArkTS框架中各有其独特的特性和使用场景。开发者应根据项目的具体需求和目标来选择合适的文件后缀进行开发。

栗子:

Pair.ts

export type Pair<T, U> = {
  first: T;
  second: U;
};

ContextHolder.ets

export default class ContextHolder{
  private static context: object

  static setContext(context: object) {
    this.context = context
  }

  static getContext(): object {
    if (!ContextHolder.context) {
      throw Error("context is not init")
    }
    return ContextHolder.context
  }
}


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

相关文章:

  • NXP Zigbee JN5169 开发环境软件 文档和支持资源打包下载
  • 桥接IC lt7911d linux 驱动
  • Spring Boot 配置文件启动加载顺序
  • 「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现
  • 数字后端零基础入门系列 | Innovus零基础LAB学习Day8
  • torchvision.io.write_video 报错替换
  • 探索 Move 编程语言:智能合约开发的新纪元
  • CSRF初级靶场
  • 文件操作:使用ByteArrayInputStream
  • A010-基于SpringBoot的宠物健康咨询系统的设计与实现
  • 【LeetCode】【算法】739. 每日温度
  • Harmony项目基础
  • 基于 RNN 的语言模型
  • windows 文件监控 c++ 11及以上版本可用
  • 接口测试(十一)jmeter——断言
  • 力扣最热一百题——验证二叉搜索树
  • 计算机存储单元bit。不同编程语言类型差异。
  • Python面向对象:类和对象的基本操作
  • 在gitlab,把新分支替换成master分支
  • LeetCode 3165.不包含相邻元素的子序列的最大和:单点修改的线段树(动态规划)
  • easyui +vue v-slot 注意事项
  • Grafana+Prometheus监控篇-Nginx
  • C#中,Thread和Task的区别
  • 人工智能基础-opencv-图像处理篇
  • 第二届新生程序设计竞赛热身赛(C语言)
  • File和InputStream,OutputStream