鸿蒙Harmony实战—通过登录Demo了解ArkTS

ops/2024/10/18 3:25:51/

ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。

ArkTS在TS的基础上主要扩展了如下能力:

  • 基本语法:ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力,再配合ArkUI开发框架中的系统组件及其相关的事件方法、属性方法等共同构成了UI开发的主体。
  • 状态管理:ArkTS提供了多维度的状态管理机制。在UI开发框架中,与UI相关联的数据可以在组件内使用,也可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,还可以在应用全局范围内传递或跨设备传递。另外,从数据的传递形式来看,可分为只读的单向传递和可变更的双向传递。开发者可以灵活的利用这些能力来实现数据和UI的联动
  • 渲染控制:ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态,渲染对应状态下的UI内容。循环渲染可从数据源中迭代获取数据,并在每次迭代过程中创建相应的组件。数据懒加载从数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。

以上就是官方对于ArkTS的介绍,对于初学者来说并不算友好,所以我们通过一个登录Demo来了解一下ArkTS。

一、创建工程

打开DevEco Studio,点击Create Project,或通过DevEco Studio的菜单File > New > Create Project

下拉工程模版,在最后选择Login Ability

创建完成后的源码目录:

启动工程

二、工程分析

1.UIAbility管理应用的生命周期方法

根据官方文档UIAbility组件生命周期中的描述,下面是一个应用的生命周期

和对应的生命周期时序图:

所以,登录demo中的EntryAbility.tsonWindowStageCreate方法中通过windowStage.loadContent方法加载了登录页面作为启动页面:

windowStage.loadContent("pages/LoginPage")

 

2.页面分析

pages和view文件夹

通过目录可以发现,ArkTS将页面分为两类分别放在pagesview文件夹中:

两者的区别:

  • pages文件夹存放的是一个个独立的页面文件,每个文件有@Entry注解来告诉系统这是一个独立页面的入口,也有@Component注解说明是一个页面文件
  • view文件夹存放的是一个个可以被复用的页面文件,每个文件只有@Component注解

简单类比@Entry和@Component的文件就是iOS中的ViewController和Android中的Activity,@Component注解的文件就是iOS中的View和Android中的Fragment+View

@Entry页面

@Entry装饰的组件的生命周期:

进入LoginPages.ets主页面:

  • 通过@Entry和@Component的页面才是独立页面
  • 页面使用struct作为定义关键字,不是class
  • 通过import关键字引入页面和自定义组件
  • 页面的内容必须通过build方法构建,与Flutter的写法类似
  • 如果不是自定义组件,只是构建一个小模块,比如标题内容的方法Title(),前面要使用@Builder注解进行说明

@Component组件

进入LoginComponent.ets子组件:

与@Entry不一样的地方:

  • 通过@Component的页面是一个独立页面的子组件,无法独立展示
  • 它的生命周期受到父组件的管理

三、状态管理和渲染控制

与Flutter与SwifitUI类似,ArkTS也是通过State来进行状态管理和渲染控制,在上面的登录demo中的LoginComponent.ets中:

  • 通过@State定义了userName和password两个状态对象
  • 通过监听TextInput的onChange方法修改状态对象的值
  • userName和password的值变更后,会自动触发Button的enable的渲染状态的变更


最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?但是又不知道从哪里下手,而且学习时频繁踩坑,最终浪费大量时间。所以本人整理了一些比较合适的鸿蒙(HarmonyOS NEXT)学习路径和一些资料的整理供小伙伴学习

点击领取→纯血鸿蒙Next全套最新学习资料(安全链接,放心点击

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

一、鸿蒙(HarmonyOS NEXT)最新学习路线

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)…等技术知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

二、HarmonyOS Next 最新全套视频教程

三、《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

四、大厂面试必问面试题

五、鸿蒙南向开发技术

六、鸿蒙APP开发必备

七、鸿蒙生态应用开发白皮书V2.0PDF


完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结
总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

                        


http://www.ppmy.cn/ops/52320.html

相关文章

三.iOS核心动画 - 关于图层几何(frame,bounds,transform,position)

引言 关于UIView的布局有一个经常被问到的问题,frame和bounds有什么区别,同样CALayer也有frame和bounds这两个属性,还有一个与UIView的center对应的position属性,本篇博客我们就来详细的探讨一下图层中的frame和bounds到底有什么…

配置CentOS 7通过MSTSC连接远程桌面

正文共:777 字 14 图,预估阅读时间:1 分钟 前面我们介绍了如何通过VNC连接Ubuntu的远程桌面(Ubuntu 18.04开启远程桌面连接),也介绍了如何使用微软的MSTSC来连接Ubuntu的远程桌面(如何通过MSTSC…

ipfs核心是什么?

IPFS(InterPlanetary File System)的核心是一个分布式的文件系统,旨在将所有计算设备连接在同一个文件系统中。IPFS的核心技术和概念包括以下几个方面: 1. 内容寻址(Content Addressing) IPFS使用内容寻址…

代数扩张次数关系定理

【单扩域同构引理】 对于单扩张 K / F \mathbb{K/F} K/F有同构 F [ a ] ≅ F [ x ] / ⟨ f ( x ) ⟩ \mathbb{F}\lbrack a\rbrack\mathbb{\cong F}\lbrack x\rbrack/\left\langle f(x) \right\rangle F[a]≅F[x]/⟨f(x)⟩,其中 a ∈ K a \in \mathbb{K} a∈K为本原元…

适配器模式(大话设计模式)C/C++版本

适配器模式 C #include <iostream> using namespace std; // 球员 class Player { protected:string name;public:Player(string name) : name(name) {}virtual void Attack() 0;virtual void Defense() 0;virtual ~Player() {} }; // 前锋 class Forwards : public P…

《A DECODER-ONLY FOUNDATION MODEL FOR TIME-SERIES FORECASTING》阅读总结

介绍了一个名为TimeFM的新型时间序列预测基础模型&#xff0c;该模型受启发于自然语言处理领域的大语言模型&#xff0c;通过再大规模真实世界和合成时间序列数据集上的预训练&#xff0c;能够在多种不同的公共数据集上实现接近最先进监督模型的零样本预测性能。 该模型使用真…

数据结构:二叉树详解 c++信息学奥赛基础知识讲解

目录 一、二叉树的定义 二、二叉树的形态 三、二叉树的性质 四、二叉树的存储 五、二叉树的创建与遍历&#xff08;递归&#xff09; 六、二叉树实现 创建二叉树 展示二叉树 1、计算数的高度 2、计算数的叶子数量 3、计算数的宽度 4、层次遍历 5、前序遍历 递归写…

linux常用API接口

linux常用API接口 文章目录 linux常用API接口1.应用层内存映射mmap取消内存映射munmap终端打印可用方式1.puts 函数2.文件操作函数 fprintf3.字符输出函数 putchar4.fwrite 函数 2.内核层 1.应用层 内存映射mmap mmap 是一个用于内存映射的系统调用&#xff0c;它可以将一个文…