【ArkTS入门】ArkTS开发初探:语言特点和开发特点

什么是ArkTS?

ArkTS是一个为鸿蒙组件而生的框架,语法亲人好用。基于TypeScript,ArkTS拓展了声明式UI、状态管理等的能力,从本质上来讲,是TypeScript的扩展,主要服务于前端。

ArkTS的开发可以满足“一次开发,多端部署”的需求,真正应用于华为全生态链。而且ArkTS支持低代码开发,让“人人都是开发者”的理念得以实现。

什么是声明式UI?

声明式UI是一种以声明方式定义用户界面的编程模型。它的核心思想是通过编写声明性的代码来描述用户界面的状态和外观,而不是直接操作DOM(文档对象模型)或执行命令式操作。

常见的声明式UI开发框架有:React、Vue.js、SwiftUI、Flutter等。声明式UI与命令式UI最大的区别在于注重的部分不同,前者更注重描述和表达界面的最终呈现,代码更加简洁;而后者注重控制和界面的细节,故而更加复杂。

声明式开发范式UI框架:SwiftUI

SwiftUI,这是苹果于2019年世界开发者大会中提出的新产品。其可以用于watchOS,tvOS,macOS等苹果旗下系统中的应用,统一了苹果的UI框架。想要体验实时预览和完整的Xcode 11功能,需要macOS 10.15 beta以上。

声明式开发范式UI框架:ArkUI

ArkUI是一套构建分布式应用界面的声明式UI开发框架。它使用极简的UI信息语法、丰富的UI组件、以及实时界面预览工具,帮助您提升HarmonyOS应用界面开发效率30%。

ArkTS开发流程

在这里插入图片描述

  • .ets、.ts是文件的格式,也提示了开发的语言特性。毫无疑问,这是TypeScript的扩展。
  • webpack是一个现在的javaScript应用的静态模块化打包工具。Rollup 是一个用于 JavaScript 的模块打包工具,ets-loader负责解析ets页面,根据组件的tag标签创建对应的JsView对象,生成jsView树。
  • bundle.js是webpack的最终输出产物,浏览器通过阅读bundle.js的内容来解析代码。可以将bundle.js理解为一个立即执行函数(IIFE),函数的输入是一个依赖拓扑图(一个js对象),浏览器通过分析依赖的先后顺序以 eval(code) 的形式运行代码。
  • ArkUI是OpenHarmony的UI开发框架。
  • ArkCompiler是主要用于开发OpenHarmony应用的组件化、可配置的多语言编译和运行平台,目前支持JS、TS、Java。

ArkTS开发范式

@Entry /*用作页面默认入口组件,加载时首先创建*/
@Component/*用作页面的类组件,页面开始加载时扫描文件*/
struct Index {@State message: string = 'Hello World'/*@State State:状态,一般指的是装饰器装饰的数据。用户通过触发组件的事件方法,改变状态数据。状态数据的改变,引起UI的重新渲染。。*/build() {/*bulid函数里的语言统称为UI描述语言,@Entry装饰的自定义组件,其build()函数下的根节点唯一且必要,且必须为容器组件;@Component装饰的自定义组件,其build()函数下的根节点唯一且必要,可以为非容器组件*///六个不允许:不允许声明本地变量;//不允许直接使用console.info,但允许在方法或者函数里使用;//不允许创建本地的作用域;//不允许switch语法;//不允许调用除了被@Builder装饰以外的方法,允许系统组件的参数是TS方法的返回值;//不允许使用表达式Column() {Text('Hello').fontSize(30)Text(this.message).fontSize(30)Button(){Text('Click Me').fontSize(30)}.onClick(()=>{this.message='ArkUI'}).width(200).height(50)}}
}

构建简单的ArkTS应用

请添加图片描述
上图是ArkTS工程的目录结构。

entry:HarmonyOS工程模块,编译构建生成一个HAP包。

HAP:HarmonyOS Ability Package,一个HAP文件包含应用的所有内容,由代码、资源、三方库及应用配置文件组成,其文件后缀名为.hap。

  • src/main/ets:存放ArkTS源码。
  • src/main/ets/MainAbility:应用/服务的入口。
  • src/main/ets/pages:应用/服务包含的页面。
  • src/mian/resources:存放应用/服务所用到的资源文件。
  • src/main/config.json:模块配置文件,主要包含HAP包的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。
  • build-profile.json5:当前的模块信息、编译信息配置项,包括了buildOption、targets配置等。

属性方法简要介绍

ArkTS支持许多种属性方法:

  1. 常量传递:
Text("Hello World").fontSize(20)

这个比较好理解,和三件套语言的逻辑相似。

  1. 变量传递
import { Link, Prop } from 'arkts';class MyClass {@Link('https://example.com')myLink: string;@Prop(123)myNumber: number;@Prop(true)myBoolean: boolean;@Prop(['option1', 'option2', 'option3'])myEnumArray: string[];
}const myObject = new MyClass();console.log(myObject.myLink); // 输出:https://example.com
console.log(myObject.myNumber); // 输出:123
console.log(myObject.myBoolean); // 输出:true
console.log(myObject.myEnumArray); // 输出:['option1', 'option2', 'option3']

声明变量后,继续调用变量。

  1. 链式调用
Text("Hello World").fontSize(20).width(100)

链式调用允许我们连续地设置变量属性。

  1. 内置枚举类型

补充:ArkTS支持传入初始值后自动识别数据类型。

枚举类型不同于其他数据类型。枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型 [1]。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。

许多的枚举类型内置在了ArkTS中,目前主要基于数字和字符串。比如Color属性:

Text("Hello World").fontColor(Color.Red).fontSize(20)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/307539.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字节高级Java面试真题

今年IT寒冬,大厂都裁员或者准备裁员,作为开猿节流主要目标之一,我们更应该时刻保持竞争力。为了抱团取暖,林老师开通了《知识星球》,并邀请我阿里、快手、腾讯等的朋友加入,分享八股文、项目经验、管理经验…

如何使用Spoofy检测目标域名是否存在欺骗攻击风险

关于Spoofy Spoofy是一款功能强大的域名安全检测工具,在该工具的帮助下,广大研究人员可以轻松检测单个目标域名或域名列表中的域名是否存在遭受欺诈攻击的风险。 该工具基于纯Python开发,可以根据SPF和DMARC记录来检测和判断目标域名是否可…

逻辑卷学习

磁盘分区的缺点 1.无法扩容 2.必须使用的空间 3.没有备份: 一、逻辑卷的定义 LVM 是 Logical Volume Manager 的简称,译为中文就是逻辑卷管理。它是 Linux 下对硬盘分区的一种管理机制。LVM 适合于管理大存储设备,并允许用户动态调整文件系统的大小…

vivado set_max_delay案例分析

案例分析 在一些设计中,某些信号在特定模式下具有恒定值。例如,在功能模式下,测试信号不切换,因此与VDD或VSS相连这取决于它们的活动水平。这也适用于在设计完成后不切换的信号已通电。同样,今天的设计有多种功能模式…

CSS 缩减顶部

<template><!-- mouseenter"startAnimation" 表示在鼠标进入元素时触发 startAnimation 方法。mouseleave"stopAnimation" 表示在鼠标离开元素时触发 stopAnimation 方法。 --><!-- 容器元素 --><div class"container" mou…

4.14 构建onnx结构模型-Min

前言 构建onnx方式通常有两种&#xff1a; 1、通过代码转换成onnx结构&#xff0c;比如pytorch —> onnx 2、通过onnx 自定义结点&#xff0c;图&#xff0c;生成onnx结构 本文主要是简单学习和使用两种不同onnx结构&#xff0c; 下面以 Min 结点进行分析 方式 方法一&…

共享单车之租赁需求预估

文章目录 第1关&#xff1a;数据探索与可视化第2关&#xff1a;特征工程第3关&#xff1a;租赁需求预估 第1关&#xff1a;数据探索与可视化 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 读取数据 数据探索与可视化 读取数据 数据保存在./step1/bike_train…

C#/Net调用阿里云的短信服务

在C#代码里调用阿里云的短信服务&#xff0c;用于推送消息 以下介绍具体的步骤主要分为配置和代码调用 服务管理和配置 在控制台首页进入短信服务 使用流程 跟随快速学习和测试 1.申请签名 签名必须为企业名字或者对应网站、应用的名称&#xff0c;其他名称则无法通过校验 …

【经典算法】有趣的算法之---蚁群算法梳理

every blog every motto: You can do more than you think. 0. 前言 蚁群算法记录 1. 简介 蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为求解复杂问题提供了一个新的可能性…

MySQL数据库备份和恢复

目录 一、备份方法 二、备份策略 三、MySQL日志管理 四、日志的查询 五、MySQL 完全备份 1、物理冷备份与恢复&#xff1a; 2&#xff0e;mysqldump 备份与恢复 六、MySQL 完全恢复 七、MySQL增量备份 八、MySQL增量恢复 1&#xff0e;一般恢复: 一、备份方法 物理备…

【mysql】—— 表的内连和外连

在MySQL中&#xff0c;内连&#xff08;INNER JOIN&#xff09;和外连&#xff08;OUTER JOIN&#xff09;是用于联接多个表的操作。接下来&#xff0c;我分别给大家介绍下二者。 目录 &#xff08;一&#xff09;内连接 1、什么叫内连接 2、语法格式 3、案例&#xff1a;显…

2023年度总结:技术旅程的杨帆远航⛵

文章目录 职业规划与心灵成长 ❤️‍&#x1f525;我的最大收获与成长 &#x1f4aa;新年Flag &#x1f6a9;我的技术发展规划 ⌛对技术行业的深度思考 &#x1f914;祝愿 &#x1f307; 2023 年对我来说是一个充实而令人难以忘怀的一年。这一年&#xff0c;我在CSDN上发表了 1…