ArkTS初学(一)

news2025/1/12 1:46:20

想必大家都听说过华为的方舟框架,没错,这就是所说的ArkTS。在HarmonyOS2的时候大家会使用java开发HarmonyOS应用,使用的是Layout来进行布局(用的还是xml文件),之后又出现了js的Component(记不清名字了)的一个功能方便了开发。我们现在就来学习HarmonyOS3推出的ArkTS

我写这个博客的时候ArkTS只支持iPhone,所以我们只能用手机为例子来学习

创建项目

创建ArkTS项目
在这里插入图片描述

注意: 项目公开按键在最下面
补充: 图上说明的项目公开按键是快速布局生成代码的
俩个SDK版本要一致
选择机器类型

ArkTS

ArkTS文档

基本概念

基本概念

struct:自定义组件可以基于struct实现,不能有继承关系,对于struct的实例化,可以省略new

装饰器:装饰器给被装饰的对象赋予某一种能力,其不仅可以装饰类或结构体,还可以装饰类的属性。多个装饰器可以叠加到目标元素上,定义在同一行中或者分开多行,推荐分开多行定义。

  • @Component:装饰struct,结构体在装饰后具有基于组件的能力,需要实现build方法来创建UI

  • @Entry: 装饰struct,组件被装饰后作为页面的入口,页面加载时将被渲染显示。

  • @Preview:装饰struct, 用@Preview装饰的自定义组件可以在DevEco Studio的预览器上进行实时预览,加载页面时,将创建并显示@Preview装饰的自定义组件

  • build函数: 自定义组件必须定义build函数,并且禁止自定义构造函数。build函数满足Builder构造器接口定义,用于定义组件的声明式UI描述。

这些都是官方文档,不容易理解,也很分散。你们可以这么理解装饰器就是规定,build相当于C,Java中的main()方法这样后我们再来看这个代码

@Entry
@Component
struct Index {
  build() {}
}

子组件配置

对于支持子组件配置的组件,例如容器组件,在"{ … }"里为组件添加子组件的UI描述。ColumnRowStackGridList等组件都是容器组件。

@Entry
@Component
struct Index {
  build() {
    //Row()//横向,只要你width写成100%你的字就会在横屏的中间
    Column(){//纵向,只要你height写成100%你的字就会在竖屏的中间
    }
  }
}

可以查看官方文档-状态管理-基本概念
@State很好理解

import router from '@system.router'
import featureAbility from '@ohos.ability.featureAbility';
@Entry
@Component
struct Index {
  build() {
    Row(){
      @State hello:string = "HelloWorld"
      Text(this.hello).fontSize(30).fontColor("#ff0")//Text():文本组件,里面的值不能为空; fontSize():改变字体大小组件;fontColor():改变字体颜色的组件(主要是真机背景是黑色的,默认字体也是黑色的)
    }
  }
}

路由跳转

我们可以学个跟前端vue编程式路由导航,react编程式路由导航都很像的router
先是要在config.json中配置
config.json的位置
添加路径

import router from '@system.router' //调用router库

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

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold).fontColor("#fff").onClick(()=>{
          //onClick():点击事件
          //router.push(object)
          router.push({ //push()方法,那就会有replace()方法
            uri:"pages/Test01", //uri路径
            params:{ //传递的参数
              data1: "OK"
            }
          })

        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

@Observed

现在的我还不会引入,所以我们来学最后一个装饰器@Observed

@Entry
@Observed
class UserClass{
  @State message:string = "this is UserClass"
}

错误的写法:
错误的写法
当然自然不能像@Component那样
在这里插入图片描述
这里的build只是在类中的普通函数,不信?

import router from '@system.router'

@Entry
@Component
struct Test01{
  @State testData01: string = "物品"
  @State UserClass: UserClass = new UserClass()
  build(){
    Row(){
      Text(this.testData01).fontColor("#0ff").fontSize(50)
      Text(`count:${this.count}`).onClick(()=>{
        this.count += 1
      }).fontSize(30).fontColor('#fff')
    }.backgroundColor("#f00").width('100%')
  }
}

@Observed class UserClass{
  static message: string = "this is UserClass"
  constructor(){

  }
}

关于APP的文件名

查看config.json文件(上述有说明位置(前往路由跳转查看位置))
我们直接ctrl+f输入文字label(因为HarmonyOS的默认文件名就是label),果不其然
label的地方
我们不去该$string:MainAbility_label这个名字相比在开发过harmonyos-java的小伙伴并不陌生,我们ctrl+在这段文字上点击会有一下选择,我们选择zh_CN(中文的意思)
选择zh_CN

  • base: 公共的,基础的
  • zh_CN: 中文相关配置,适用于语言是中文
  • en_US: 英文相关配置,适用于语言是英文,所以你要改英文就改这个
    在这里插入图片描述
    发现和键值对很像,所以我们这里只要改value的值就可以了(我这里已经改过)

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】ArrayList的具体使用(杨辉三角、扑克牌游戏)

目录 1、了解集合的框架 2、了解ArrayList类 2.1、认识ArrayList类当中的属性 2.1、认识ArrayList类库当中的方法 2.1.1、了解构造方法 2.2、ArrayList类当中的Add(新增元素)方法 2.3、了解ensureCapacityInternal(判断是否需要扩容&…

【Rust】18. Rust 的面向对象特性

18.1 面向对象语言的特征 18.1.1 对象:数据 行为 18.1.2 封装隐藏了实现细节 在 Rust 中,在代码中不同的部分考虑使用 pub 可以封装其实现细节 18.1.3 继承,作为类型系统与代码共享 在 Rust 中,不存在继承的机制,而…

【C++11】初始化列表、decltype操作符、nullptr

目录 一、初始化列表 1.1 花括号初始化 1.2 initializer_list 二、decltype 三、nullptr 一、初始化列表 1.1 花括号初始化 在C98中,标准允许使用花括号{ }对数组或结构体元素进行统一的列表初始值设定。 而在C11推出后,使用初始化列表时&#x…

java的方法使用

1.方法概述1.1什么是方法方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集注意:方法必须先创建才可以使用,该过程称为方法定义方法创建后并不是直接运行的,需要手动使用后才执行,该过程…

深入理解mysql性能优化以及解决慢查询问题

MySql系列整体栏目 内容链接地址【一】深入理解mysql索引本质https://blog.csdn.net/zhenghuishengq/article/details/121027025【二】深入理解mysql索引优化以及explain关键字https://blog.csdn.net/zhenghuishengq/article/details/124552080【三】深入理解mysql的索引分类&a…

GPT1、GPT2、GPT3原理

一 背景 GPT1:Generative Pre-Training。是一种生成式的预训练模型,由OpenAi团队发表自论文《Improving Language Understanding by Generative Pre-Training》。 h0=UWe+Wp 二 模型整体结构(宏观) 图1 GPT整体结构 左侧为模型的整体结构,由12个Transformer中的Decoder模块…

App的分类与简析

引言随着智能手机的普及,移动端应用几乎成为每个互联网产品的标配。在快速迭代的互联网战场中高效开发、低成本上线产品,是每个应用开发团队追求的目标。此时,选择合适的应用类型和开发模式便至关重要。移动应用可以粗分为三种:原…

Hystrix线程池隔离与接口限流

前面了解了Hystrix的请求缓存、fallback降级、circuit breaker断路器快速熔断,下面来看下Hystrix的线程池隔离与接口限流。 Hystrix通过判断线程池或者信号量是否已满,超出容量的请求,直接Reject走降级,从而达到限流的作用。限流是限制对后端服务的访问量,比如对MySQL、Re…

CentOS7 LVM 逻辑卷2种读写策略(磁盘IO性能优化)—— 筑梦之路

LVM 逻辑卷的读写策略有两种: linear:线性方式,一块块盘来读写,写完一块盘再写第二块盘、第 N 块盘,性能低striped:条带方式,多块盘一起并行读写,性能高查看 LVM 逻辑卷的读写策略的…

元宇宙,会成为下一代互联网的主场吗?

导语 | 2022 年元宇宙风靡全网,作为过去一年科技界的“当红扛把子”,引多家科技巨头“竞折腰”。近日,《福布斯》双周刊网站在报道中指出,2030 年全球元宇宙的市场规模有望高达 5 万亿美元,2023 年可能是确定其发展方向…

机器学习0 — 总体架构,chatgpt时代必须掌握的

1 从chatgpt看目前AI重要性 随着chatgpt的一声巨响,拉响了强人工智能的序幕。chatgpt相对于目前的各种机器人,简直就是弓箭和导弹的区别。沉寂了两三年后,AI如今又一次站在了人类工业的最高舞台。个人认为AI已经成为所有人,特别是…

vitest第二章(入门)

Vitest 是一个由 Vite 提供支持的极速单元测试框架 tips vite>3 node>14 安装 1.使用npm init -y 生成 package json 2.安装依赖 挑选一种即可 npm install -D vitestyarn add -D vitestpnpm add -D vitest3.新建一个文件calc.ts 开始第一个单元测试吧,…

【数据结构和算法】使用数组的结构实现链表(单向或双向)

上文我们通过结构体的结构实现了队列、以及循环队列的实现,我们或许在其他老师的教学中,只学到了用结构体的形式来实现链表、队列、栈等数据结构,本文我想告诉你的是,我们可以使用数组的结构实现链表、单调栈、单调队列 目录 前言…

2022最火科技~AIGC

2022年最火的信息科技~AIGC 人工智能内容生成 趣讲大白话:输入几个词,立刻生成机器创造的内容 ************** 从人工智能决策 走向 人工智能生成 人工智能决策:自动驾驶、抖音推荐算法 人工智能生成内容:即AI Generated Conten…

【算法练习】两个链表的第一个公共节点

描述输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)数据范围: 0n≤1…

下一代编解码技术Ali266在视频超高清领域的应用展望

超高清与各领域的需求融合和创新正在发生。 2022年是一个体育大年,众多世界级体育赛事通过视频直播、转播等形式给观众带来畅爽的观看体验。 2022年北京冬奥会,实现了奥运会历史上首次赛事全程4K制作播出,并在开幕式上提供了8K超高清公共信号…

安全多方计算之五:零知识证明(从入门到入土。。)

零知识证明1. 简介2. 零知识证明的例子2.1 向红绿色盲证明红球、绿球2.2 数独的零知识证明2.3 三染色问题的零知识证明2.4 Quisquater-Guillou 零知识协议3. ElGamal加密的零知识证明3.1 ElGamal加密的已知明文证明3.2 ElGamal加密的二选一零知识证明3.3 ElGamal加密的1-out-of…

MATLAB - 查找数据峰值

语法如下: pks findpeaks(data) [pks,locs] findpeaks(data) [pks,locs,w,p] findpeaks(data) [___] findpeaks(data,x) [___] findpeaks(data,Fs) [___] findpeaks(___,Name,Value) findpeaks(___)where,pks是峰值返回值,locs是数据索…

特斯拉 FSD 背后的技术(1)—从 BEV 到占用网络

在今年 tesla 的 AI Day 给我这个业余自动驾驶爱好者给留下了深刻印象,在看过之后,通过收集资料对其中阐述的技术进行简单的了解,在这里拿出来跟大家分享一下,有点长,所以划分了一下 3 个部分。从 BEV 到占用网络激进无…

chrome查看网页性能

1 Performance 1.1 打开开发者工具(cmdshiftc) 1.2 打开Performance面板,点击录制按钮(开始录制) 1.3 刷新页面,再次点击录制按钮(结束录制) 录制按钮高亮,表示录制中…