鸿蒙开发【ArkTS基础教程】


鸿蒙开发【ArkTS基础教程】

本文章涉及知识点
ArkTS语言基础

  • 基本语法:了解ArkTS的基本语法,包括变量声明、函数定义、条件语句、循环语句等。
  • 类和对象:掌握ArkTS中类和对象的基本概念,以及类的继承、多态等特性。
  • 状态管理:学习如何在ArkTS中进行状态管理,确保应用在不同状态之间正确切换。
  • 数据类型与运算符:熟悉ArkTS的基本数据类型(如数字、字符串、布尔值等)和运算符(如算术运算符、比较运算符等)。
    ArkUI框架简介
  • 组件:ArkUI提供了丰富的UI组件,如图片显示组件(Image)、文本显示组件(Text)、文本输入框(TextInput)、按钮组件(Button)等。开发者可以通过组合这些组件来构建用户界面。
  • 布局:了解ArkUI的布局机制,包括Row容器(从左往右排列)和Column容器(从上往下排列)等布局方式,以及如何使用间距(Space)等属性来调整组件之间的位置关系。
  • 状态管理:学习如何在ArkTS中进行状态管理,确保应用在不同状态之间正确切换。
  • 画与交互:学习如何在ArkUI中实现动画效果,以及如何处理用户的交互事件(如点击、滑动等)。

在这里插入图片描述

一、ArkTS

鸿蒙开发者学堂
HarmonyOS=>一探究竟=>DevEco Studio下载
地址
DevEco Studio

1、ArkTS语言的介绍

ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript(简称TS)基本语法风格的基础上,进一步通过规范强化静态检查和分析,使得在程序运行之前的开发期能检测更多错误,提升代码健壮性,并实现更好的运行性能。同时,提供了声明式UI范式、状态管理支持等相应的能力,让开发者可以以更简洁、更自然的方式开发高性能应用。

在这里插入图片描述

2、ArkTS语言开发环境搭建

2.1、下载DevEco Studio

DevEco Studio
在这里插入图片描述

2.2、新建项目

在这里插入图片描述
点击next
在这里插入图片描述
点击finish,这样我们就建立了一个鸿蒙工程项目
在这里插入图片描述
这样我们就可以进行开发了
在这里插入图片描述
在common下新建一个ArkTs文件

在这里插入图片描述

2.3、项目预览

在这里插入图片描述
模拟器的话需要提交一个申请
在这里插入图片描述
也可以使用预览器进行预览
在这里插入图片描述

3、ArkTS语言与TS的主要区别

  1. ArkTS不支持在运行时更改对象布局,但TS是支持的
  2. 对象字面量必须标注类型
//ArkTS
interface  p_type{
  x:number,
  y:number
}

const p:p_type={
  x:0,
  y:1
}


//TS
const p={
  x:0,
  y:0
}
  1. 不支持structural typing,不支持鸭子类型
//ts支持以下写法,但ArkTS不支持

interface  Dog{
  name:string,
  age:number
}

function  getName(obj:Dog){
  return obj.name
}
const dog={name:'taidi',age:4,gender:'F'}

getName(dog)

通过以上几个小demo,我们可以看出ArkTS对代码检测更严格,从来性能比较好,具体了解大家可以参考官方文档

4、ArkTS变量与数据类型

4.1、ArkTS数据类型
4.1.1、 Number
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Column(){
      Button('数字类型').onClick(()=>{
        let n1:number=10
        let n2:number=10.65
        let n3=n1+n2
        console.log('n3',n3)

        //进制表示
      //   二进制、八进制、十六进制
        let b2:number=0b1111//二进制进制 15
        let b8:number=0o12//八进制 10
        let b16:number=0x17//十六进制 23
        console.log('123',b2,b8,b16)
      })
    }
  }
}

控制台输出
在这里插入图片描述

4.1.2、 Boolean
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Column(){
      Button('布尔类型').onClick(()=>{
        let bFlag1:boolean=true
        let bFlag2:boolean=false
        console.log('boolean',bFlag1,bFlag2,)
      })
    }
  }
}

在这里插入图片描述

4.1.3、String
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Column(){
      Button('字符串类型').onClick(()=>{
      //   字符串类型,字符串的数据
        let s1:string='hello,this is string'
        let s2:string="hello,this is string"
        let n:number=100
        let s3:string=`hello,this price is ${n} \t s1`
        console.log('string',s1,s2,s3)
      })
    }
  }
}

在这里插入图片描述

4.1.4、Array

数组类型


import { media } from '@kit.MediaKit';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Column(){
      Button('数组类型').onClick(()=>{
        // 数组定义
        let arr:string[]=['1','2','3','4']
        let arr1:number[]=new Array(10)

        // 下标
        console.log('arr',arr[3])

       // 支持动态扩容
        arr1[100]=100
        console.log('arr1',arr1.length)
      })
    }
  }
}


4.1.5、Enum

枚举类型:是一种特殊的数据类型,约定变量只能在一组数据范围内选择值。

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Column(){
      Button('枚举类型').onClick(()=>{
      //   使用枚举 枚举类型及其取值
        let you:Man=Man.GoodMan
        console.log('enun',you==0)
        console.log('enun',you===0)
      })
    }
  }
}

// 定义枚举
enum Man{
  GoodMan,
  BadMan,
  SexMan
}

在这里插入图片描述

4.1.6、Object
4.1.7、 Union

联合类型:是一种灵活的数据类型,它修饰的变量可以存储不同类型的数据。
语法:let 变量:类型1|类型2|类型3=值
基于联合类型,变量可存不同类型数据

import { media } from '@kit.MediaKit';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Column(){
      Button('联合类型').onClick(()=>{
        let avPlayer:media.AVPlayer | null=null
        let score:string|number|null='A'
        score=80
        score=null
        // avPlayer?.play()
      })
    }
  }
}


  • Aliases

5、ArkTS运算符

5.1、赋值运算符

=,使用方式如x=y。
复合赋值运算符将赋值与运算特组合在一起,其中x op=y等于x=x op y
复合赋值运算符列举如下:+=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、|=、^=

5.2、比较运算符
运算符说明
==如果两个操作数相等,则返回true。
! =如果两个操作数不相等,则返回true。
>如果左操作数大于右操作教,则返回true。
>=如果左操作效大于或等于右操作数,则返回true,
<如果左操作数小于右操作数,则返回true。
<=如果左操作数小于或等于右操作数,则返回true。
5.3、算术运算符

一元运算符为-、+、–、++。
二元运算特列举如下:

运算符说明
+加法
-减法
*乘法
/除法
%除法后余数
5.4、位运算符
运算符说明
a&b按位与:如果两个操作数的对应位都为1,则将这个位设置为1,否则设置为0。
a l b按位或:如果两个操作数的相应位中至少有一个为1,则将这个位设置为1,否则设置为0,
a^b按位异或:如果两个操作数的对应位不同,则将这个位设置为1,否则设置为0。
~a按位非:反转操作数的位。
a<<b左移:将a的二进制表示向左移b位
a>>b算术右移:将a的二进制表示向右移b位,带符号扩展
a>>> b逻辑右移:将a的二进制表示向右移b位,左边补0
5.4、逻辑运算符
运算符说明
a && b逻辑与
allb按位或:如果两个操作数的相应位中至少有一个为1,则将这个位设置为1,否则设置为0,
! a逻辑非

汇总练习

@Entry
@Component
struct SignPage {
  @State message: string = 'Hello World';

  build() {
    Column(){
      Button('运算符').onClick(()=>{
        // 赋值运算符 =,+=,-=,*=。、=,%=
        let a=10
        let b=20
        a+=b //a=a+b
        console.log('+=',a,b)// 30 20
        // 算术运算符 +,-,*,/,%,++,--

        // 关系运算符 >,<,==,>=,>=,!=
        // 逻辑运算符 &&, || ,!
        //给定年份,判断是否是闰年(能被4,但不能被100或者能被400整除的年是闰年)
        let year=2000
        if((year % 4==0 && year % 100!=0)|| year %400==0 ){
          console.log('闰年',`${year}是闰年`)
        }else{
          console.log('不是闰年',`${year}是平年`)
        }
        // 位运算符
        // 三元运算符
      })
    }
    .height('100%')
    .width('100%')
  }
}

6、ArkTS分支和循环

6.1、if语句

下面是通过if语句实现判断成绩的小案例

@Entry
@Component
struct SignPage {
  @State message: string = 'Hello World';

  build() {
    Column(){
      Button('if else').onClick(()=>{
        let score=90//成绩
        if(score>=90){
          console.log('成绩优秀')
        }else if(score>=80 && score<90){
          console.log('成绩良好')
        }else if(score>=70  && score<80){
          console.log('成绩中等')
        }else if(score>=60  && score<70){
          console.log('成绩及格')
        }else{
          console.log('成绩不及格')
        }
      })
    }
    .height('100%')
    .width('100%')
  }
}
6.2、switch语句

@Entry
@Component
struct SignPage {
  @State message: string = 'Hello World';

  build() {
    Column() {
      Button('switch').onClick(() => {
        let arr: string[] = [
          "1.用户管理",
          "2.角色管理",
          "2.机构管理",
        ]

        let menu = 1
        let MenuStr: String
        switch (menu) {
          case 1:
            MenuStr = arr[0]
            break
          case 2:

            MenuStr = arr[1]
            break
          case 3:
            MenuStr = arr[2]
            break
          default:
            MenuStr = '没有菜单'

        }
        console.log('当前菜单',MenuStr)
      })
    }
    .height('100%')
    .width('100%')
  }
}
6.3、条件表达式
6.4、For 语句
@Entry
@Component
struct SignPage {
  @State message: string = 'Hello World';

  build() {
    Column() {
      Button('循环结构1').onClick(() => {
        let arr: string[] = [
          "1.用户管理",
          "2.角色管理",
          "2.机构管理",
        ]
        for (let i = 0; i <= arr.length; i++) {
          console.log('菜单', arr[i])
        }
      })
    }
    .height('100%')
    .width('100%')
  }
}

6.5、For-of语句
@Entry
@Component
struct SignPage {
  @State message: string = 'Hello World';

  build() {
    Column() {
      Button('循环结构2').onClick(() => {
        let arr: string[] = [
          "1.用户管理",
          "2.角色管理",
          "2.机构管理",
        ]
        for(let item of arr){
          console.log('item',item)
        }
      })
    }
    .height('100%')
    .width('100%')
  }
}
6.6、while语句

@Entry
@Component
struct SignPage {
  @State message: string = 'Hello World';

  build() {
    Column() {
      Button('循环结构3').onClick(() => {
        let arr: string[] = [
          "1.用户管理",
          "2.角色管理",
          "2.机构管理",
        ]
        let index=0
        while (true){
      
          if(index>arr.length){
            break
          }
          console.log(arr[index])
          index++
        }
      })
    }
    .height('100%')
    .width('100%')
  }
}
6.7、do-while语句

@Entry
@Component
struct SignPage {
  @State message: string = 'Hello World';

  build() {
    Column() {
      Button('循环结构5').onClick(() => {
        let arr: string[] = [
          "1.用户管理",
          "2.角色管理",
          "2.机构管理",
        ]
        let index=0
        do{
          console.log('item',arr[index])
          index++
        }
        while(index<arr.length){

        }
      })
    }
    .height('100%')
    .width('100%')
  }
}
6.8、Break/Continue语句

break 结束,Continue结束当前循环,开始下次循环

持续更新中

✒️总结

如果这篇【文章】有帮助到你💖,希望可以给我点个赞👍,创作不易,如果有对前端端或者对python感兴趣的朋友,请多多关注💖💖💖,咱们一起探讨和努力!!!
👨‍🔧 个人主页 : 前端初见

### 关于鸿蒙操作系统 ArkTS 开发教程和资源 #### 安装 DevEco Studio 和 创建首个 ArkTS 应用程序 为了开始使用 ArkTS 进行开发,需要先安装集成开发环境 (IDE),即 DevEco Studio。这是一款专为鸿蒙应用设计的强大工具集,支持从编码到调试的一站式服务[^1]。 ```bash # 下载并安装最新版本的DevEco Studio wget https://download.devecostudio.com/ ``` 创建第一个 ArkTS 应用涉及几个重要步骤: - 打开 DevEco Studio 并新建项目; - 选择合适的模板来启动应用程序构建过程; - 编写简单的 UI 声明语句作为起点; #### 使用 ArkUI 实现声明式的用户界面编程模型 通过采用基于 TypeScript 的扩展——ArkTS,能够更高效地编写具有动态特性的图形化界面。利用这种语言特性,可以轻松实现条件渲染与循环渲染等功能,从而让页面布局更加灵活多变[^3]。 例如,在代码片段中展示如何依据特定条件显示不同内容或遍历列表项生成一系列相似控件实例: ```typescript if (someCondition) { Column({ children: [ Text('This is shown when condition met') ]}) } else { Column({ children: [ Text('Alternative content appears here') ]}) } // 循环渲染例子 for(let item of items){ new Text(item.name); } ``` #### 掌握核心概念和技术细节加速上手速度 对于初学者而言,理解一些基本的概念有助于更快地上手实际操作。其中包括但不限于装饰器的应用、UI 描述的方式、自定义组件的设计思路、系统自带组件的功能介绍及其属性配置手段等[^4]。 以下是有关这些方面的具体说明: - **装饰器**:用于修饰类成员(如方法或字段),赋予它们额外的意义。常见的有 `@Entry` 表示入口函数, `@Component` 标记自定义组件; - **UI描述**:以直观易懂的形式表达视图层次关系,通常是在某个生命周期钩子内完成; - **自定义组件**:允许开发者封装常用逻辑形成独立模块供重复利用; - **系统组件**:提供了一系列预置好的基础构件供快速搭建原型; - **属性/事件绑定**:借助链式调用来简化样式设定及交互行为关联工作;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端初见

打赏一下,解锁更多有趣内容

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值