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

鸿蒙开发01

一、环境准备

1.1 开发工具下载

HarmonyOS官网 → 一探究竟 → DevEco Studio 下载
地址:https://developer.huawei.com/consumer/cn/
在这里插入图片描述
mac版DevEco Studio安装:官网下载对应的安装包,安装。
window版DevEco Studio安装,下载地址:添加链接描述,安装、环境配置时,建议 自定义目录,注意:路径中不要有 中文、特殊字符。

二 ArkTS介绍(一下内容引自华为官网)

ArkTS是简洁且高效的应用开发语言。
ArkTS 在继承 TypeScript 核心语法特性的基础上,构建规范化的类型系统,通过编译期静态检查与分析机制,提升代码健壮性,并实现更好的运行性能,让你能够以更简洁、更自然的方式开发高性能应用。
在这里插入图片描述
ArkTS 在保持 TypeScript(简称 TS)基本语法风格的基础上,进一步通过规范强化静态检查和分析,使得在程序运行之前的开发期能检测更多错误,并提升运行时性能。
针对 JavaScript(简称JS)/TS 并发能力支持有限的问题,ArkTS 对并发编程 API 和能力进行了增强。
ArkTS 支持与 JS/TS 高效互操作,兼容 JS/TS 生态。

2.1 ArkTS 设计理念

为更好地支持 HarmonyOS 应用的开发和运行,从 Harmony OS NEXT Developer Preview 0 版本开始,ArkTS 在 TS 的基础上,进一步通过规范强化静态检查和分析,这样做有两个好处:1.许多错误在编译时可以被检测出来,不用等到运行时,这大大降低了代码运行错误的风险,有利于程序的健壮性;2.减少运行时的类型检查,从而降低了运行时负载,有助于提升执行性能。
ArkTS 保留了 TS 大部分的语法特性,这可以帮助你更容易上手 ArkTS。同时,对于已有的标准 TS 代码,你仅需对少部分代码进行 ArkTS 语法适配,大部分代码可以直接复用。
ArkTS 支持与标准 JS/TS 的高效互操作,兼容 JS/TS 生态。HarmonyOS 也提供了标准 JS/TS 的执行环境支持,在“更注重已有生态直接复用”的场景下,你可以选择使用标准 JS/TS 进行代码复用或开发,更方便兼容现有生态。

2.2 ArkTS 相比 TS 特性差异

ArkTS 通过规范约束了 TS 中过于灵活而影响开发正确性或者给运行时带来不必要额外开销的特性,下面通过代码片段说明部分约束特性。
在这里插入图片描述

  1. 不支持在运行时更改对象布局
    在这里插入图片描述
    以上 TS 代码片段展示了如何在运行时通过添加和删除某些属性来更改对象的布局。运行时支持此类特性需要大量的性能开销,ArkTS 不支持在运行时更改对象的布局。
    在 ArkTS 中,可以使用可选属性和给该属性赋值 undefined 的方式来替代。

  2. 对象字面量须标注类型
    在这里插入图片描述
    以上 TS 代码片段展示了没有类型的场景。如果编译器不知道变量 point 的确切类型,由于对象布局不能确定,编译器无法深度地优化这段代码,造成性能瓶颈。没有类型也会造成属性的类型缺少限制,例如 point.x 的类型在此时为 number,它也可以被赋值成其他类型,造成额外的运行时检查和开销。
    在 ArkTS 中,需要为对象字面量标注类型。
    在这里插入图片描述

  3. 不支持structural typing
    在这里插入图片描述
    以上 TS 代码片段展示了 structural typing 特性。在 ArkTS 已经采用了 nominal typing 类型系统的前提下,如果额外支持 structural typing 给语言实现和开发者均会带来不必要的复杂度。在示例中,foo 虽然声明参数类型是 C,但也可以传递类型 D 的变量,这种灵活性可能不符合开发者的意图,容易带来程序行为的正确性问题。另外,由于类型 D 和类型 C 布局不同,那么 foo 中对 c.s 这个属性访问就不能被优化成根据固定偏移量访问的方式,从而给运行时性能造成瓶颈。

相关文章:

  • 三周年创作纪念日
  • WinForm真入门(15)——NumericUpDown控件详解
  • 《灵活的接口设计:如何支持多种后端数据存取实现》
  • Java 在人工智能领域的突围:从企业级架构到边缘计算的技术革新
  • 软考高级系统架构设计师-第11章 系统架构设计
  • c# AI编程助手 — Fitten Code
  • 分布式微服务系统架构第106集:jt808,补充类加载器
  • 车载软件架构 ---单个ECU的AUTOSAR开发流程
  • 如何通过技术手段降低开发成本
  • c语言jni实战,双系统
  • springboot和springcloud的区别
  • 【Linux】Linux下的gcc/g++编译器与动静态库
  • #3 物联网 的标准
  • 巴法云平台-TCP设备云-微信小程序实时接收显示数据-原理
  • 生态环境影响评价技术体系构建与图件智能化实现‌‌—以内蒙古风电场建设项目为例
  • MySQL ROUND(number, decimals)
  • 访问不到服务器上启动的llamafactory-cli webui
  • 使用命令打开电脑的[服务]窗口
  • 微任务(Microtasks)与宏任务(Macrotasks)详解
  • 几何建模基础-拓扑命名实现及优化
  • 谁为金子疯狂:有人贷款十万博两千,有人不敢再贸然囤货
  • 41岁知名学者陈昊因病骤然离世,北大再发讣告缅怀
  • 乍嘉苏改扩建项目迎来新进展!预应力管桩首件施工顺利完成
  • 我们的免疫系统,是世界上最好的“医生”
  • 大家聊中国式现代化|权衡:在推进中国式现代化中当好龙头
  • 庆祝中国印尼建交75周年招待会暨万隆会议70周年纪念活动在京举行