第五天 初步了解ArkTS和ArkUI
初步了解ArkTS和ArkUI,可以从以下几个方面进行概述:
一、ArkTS简介
-
定义与关系:
- ArkTS是HarmonyOS(鸿蒙系统)优选的主力应用开发语言。
- 它基于TypeScript(TS)进行扩展,兼容TS的所有特性,并增加了声明式UI、状态管理等能力,是TS的超集。
-
核心特性:
- 声明式UI:ArkTS通过声明式的方式描述UI结构,使开发者能够更简洁、更自然地开发跨端应用。
- 状态管理:提供了多维度的状态管理机制,支持在组件内、组件间以及全局范围内传递和更新状态。
- 渲染控制:包括条件渲染、循环渲染和数据懒加载等能力,根据应用状态或数据源动态地渲染UI内容。
-
开发范式:
- ArkTS主要采用声明式开发范式,这种范式更接近自然语义的编程方式,有助于提高开发效率和应用性能。
二、ArkUI简介
-
定义与功能:
- ArkUI是HarmonyOS应用的UI开发框架,提供了完整的UI开发基础设施。
- 它包括简洁的UI语法、丰富的UI功能(如组件、布局、动画以及交互事件)以及实时界面预览工具等。
-
组件与布局:
- 组件:UI构建与显示的最小单位,ArkUI内置了丰富的多态组件,如Image、Text、Button等,并支持用户自定义组件。
- 布局:ArkUI提供了多种布局方式,包括弹性布局、列表布局、宫格布局、栅格布局和原子布局等,以满足不同分辨率和设备的适配需求。
-
动画与交互:
- 动画:ArkUI支持属性动画、转场动画和自定义动画能力,为UI界面增添动态效果。
- 交互事件:提供了多种交互能力,默认适配触摸手势、遥控器按键输入、键鼠输入等,并提供了相应的事件回调以便开发者添加交互逻辑。
-
开发范式:
- ArkUI针对不同的应用场景和技术背景的开发者提供了两种开发范式:
- 声明式开发范式:基于ArkTS语言,更适合构建复杂和动态的UI界面。
- 类Web开发范式:采用经典的HML、CSS、JavaScript三段式开发方式,更符合Web前端开发者的使用习惯。
- ArkUI针对不同的应用场景和技术背景的开发者提供了两种开发范式:
综上所述,ArkTS和ArkUI共同构成了HarmonyOS应用开发的强大工具链。ArkTS作为应用开发语言,提供了声明式UI描述、状态管理和渲染控制等核心特性;而ArkUI作为UI开发框架,则提供了丰富的组件、布局、动画和交互事件等功能。两者相辅相成,共同助力开发者高效、简洁地开发跨端应用。
示例:简单的Hello World应用
1. 使用ArkTS进行声明式开发
首先,我们创建一个ArkTS文件(例如App.arkts
),这个文件将包含我们的应用逻辑和UI描述。
// App.arkts
import { Component, defineComponent } from '@arkui/core';@Component
struct HelloWorld {@State message: string = 'Hello, World!';build() {Column() {Text(this.message).fontSize(24).fontWeight('bold').textAlign('center').margin({ top: '20vp' });}.backgroundColor('#FFFFFF').justifyContent('center').alignItems('center').height('100vh');}
}export default defineComponent(HelloWorld);
在这个示例中,我们定义了一个名为HelloWorld
的组件。它包含一个状态message
,初始值为'Hello, World!'
。在build
方法中,我们使用Column
布局容器和Text
组件来显示这个消息。Column
容器设置了背景颜色、居中对齐和占满视口高度的样式。
2. 配置入口文件(可选)
在某些情况下,你可能需要配置一个入口文件来指定你的应用从哪个组件开始渲染。在HarmonyOS中,这通常是通过一个配置文件来完成的(例如index.json
或config.json
),但在这里我们假设DevEco Studio已经为你处理了这些配置,并且App.arkts
是我们的入口组件。
3. 运行应用
在DevEco Studio中,你可以直接运行这个应用。它将启动一个模拟器或连接到真实设备,并在屏幕上显示“Hello, World!”消息。
注意事项
- 这个示例代码是基于概念性的,实际的ArkTS和ArkUI API可能会有所不同。
- 在真实的开发环境中,你需要确保已经正确安装了DevEco Studio和HarmonyOS SDK。
- 你可能还需要配置一些额外的项目设置,如依赖项、签名证书等。
- 由于ArkTS是TypeScript的超集,它兼容TypeScript的所有语法和特性,因此你可以使用TypeScript的所有高级功能来编写你的应用。
类Web开发范式示例(可选)
如果你更喜欢使用类Web的开发范式,你可以使用HML(Harmony Markup Language)、CSS和JavaScript来构建你的应用。以下是一个简单的示例:
<!-- index.hml -->
<div class="container"><text class="message">{{message}}</text>
</div>
/* index.css */
.container {display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #FFFFFF;
}.message {font-size: 24px;font-weight: bold;text-align: center;margin-top: 20vp;
}
// index.js
export default {data: {message: 'Hello, World!'}
}
在这个类Web开发范式的示例中,我们使用了HML来描述UI结构,CSS来设置样式,JavaScript来管理数据。然而,请注意,在HarmonyOS的实际开发中,你可能需要使用特定的框架或库(如ArkUI的类Web部分)来支持这种开发方式,并且API可能会有所不同。此外,随着HarmonyOS的发展,推荐的开发范式可能会发生变化,因此建议查阅最新的官方文档来获取最准确的信息。
相关文章:
第五天 初步了解ArkTS和ArkUI
初步了解ArkTS和ArkUI,可以从以下几个方面进行概述: 一、ArkTS简介 定义与关系: ArkTS是HarmonyOS(鸿蒙系统)优选的主力应用开发语言。它基于TypeScript(TS)进行扩展,兼容TS的所有特…...
java中的锁面试题
1、多线程中 synchronized 锁升级的原理是什么? synchronized 是JVM层面的锁,是 Java 关键字,通过 monitor 对象来完成,synchronized 的实现涉及到锁的升级,具体为无锁、偏向锁、自旋锁、重量级锁 synchronized 锁升级…...
ES6 变量解构赋值总结
1. 数组的解构赋值 1.1 基本用法 // 基本数组解构 const [a, b, c] [1, 2, 3]; console.log(a); // 1 console.log(b); // 2 console.log(c); // 3// 跳过某些值 const [x, , y] [1, 2, 3]; console.log(x); // 1 console.log(y); // 3// 解构剩余元素 const [first, ...re…...

知识蒸馏教程 Knowledge Distillation Tutorial
来自于:Knowledge Distillation Tutorial 将大模型蒸馏为小模型,可以节省计算资源,加快推理过程,更高效的运行。 使用CIFAR-10数据集 import torch import torch.nn as nn import torch.optim as optim import torchvision.tran…...

DeepSeek各版本说明与优缺点分析
DeepSeek各版本说明与优缺点分析 DeepSeek是最近人工智能领域备受瞩目的一个语言模型系列,其在不同版本的发布过程中,逐步加强了对多种任务的处理能力。本文将详细介绍DeepSeek的各版本,从版本的发布时间、特点、优势以及不足之处࿰…...

java进阶专栏的学习指南
学习指南 java类和对象java内部类和常用类javaIO流 java类和对象 类和对象 java内部类和常用类 java内部类精讲Object类包装类的认识String类、BigDecimal类初探Date类、Calendar类、SimpleDateFormat类的认识java Random类、File类、System类初识 javaIO流 java IO流【…...

kamailio-osp模块
该文档详细讲解了如何在Kamailio中配置和使用OSP模块(Open Settlement Protocol Module),以实现基于ETSI标准的安全多边对等互联(Secure Multi-Lateral Peering)。以下是核心内容的总结: 1. 模块功能 OSP模…...

【TensorFlow】T1:实现mnist手写数字识别
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 1、设置GPU import tensorflow as tf gpus tf.config.list_physical_devices("GPU")if gpus:gpu0 gpus[0]tf.config.experimental.set_memory_g…...
Rapidjson 实战
Rapidjson 是一款 C 的 json 库. 支持处理 json 格式的文档. 其设计风格是头文件库, 包含头文件即可使用, 小巧轻便并且性能强悍. 本文结合样例来介绍 Rapidjson 一些常见的用法. 环境要求 有如何的几种方法可以将 Rapidjson 集成到您的项目中. Vcpkg安装: 使用 vcpkg instal…...

【React】受控组件和非受控组件
目录 受控组件非受控组件基于ref获取DOM元素1、在标签中使用2、在组件中使用 受控组件 表单元素的状态(值)由 React 组件的 state 完全控制。组件的 state 保存了表单元素的值,并且每次用户输入时,React 通过事件处理程序来更新 …...

Ollama+deepseek+Docker+Open WebUI实现与AI聊天
1、下载并安装Ollama 官方网址:Ollama 安装好后,在命令行输入, ollama --version 返回以下信息,则表明安装成功, 2、 下载AI大模型 这里以deepseek-r1:1.5b模型为例, 在命令行中,执行&…...
DEEPSEKK GPT等AI体的出现如何重构工厂数字化架构:从设备控制到ERP MES系统的全面优化
随着深度学习(DeepSeek)、GPT等先进AI技术的出现,工厂的数字化架构正在经历前所未有的变革。AI的强大处理能力、预测能力和自动化决策支持,将大幅度提升生产效率、设备管理、资源调度以及产品质量管理。本文将探讨AI体(…...

阿莱(arri)mxf文件变0字节的恢复方法
阿莱(arri)是专业级的影视产品软硬件供应商,很多影视作品都是使用阿莱(arri)的设备拍摄出来的。总体上来讲阿莱(arri)的文件格式有mov和mxf两种,这次恢复的是阿莱(arri)的mxf,机型是arri mini,素材保存在一个8t的硬盘上,使用的是e…...
初识 Node.js
在当今快速发展的互联网技术领域,Node.js 已经成为了一个非常流行且强大的平台。无论是构建高性能的网络应用、实时协作工具还是微服务架构,Node.js 都展示了其独特的优势。本文将带您走进 Node.js 的世界,了解它的基本概念、核心特性以及如何…...

debug-vscode调试方法
debug - vscode gdb调试指南 文章目录 debug - vscode gdb调试指南前言一、调试代码二、命令查看main反汇编查看寄存器打印某个变量打印寄存器,如pc打印当前函数栈信息(当前执行位置)打印程序栈局部变量x命令的语法如下所示:打印某…...

Cypher进阶(函数、索引)
文章目录 Cypher进阶Aggregationcount()函数统计函数collect()函数 unwindforeachmergeunionload csvcall 函数断言函数all()any()~~exists()~~is not nullnone()single() 标量函数coalesce()startNode()/endNode()id()length()size() 列表函数nodes()keys()range()reduce() 数…...
XML Schema 数值数据类型
XML Schema 数值数据类型 引言 XML Schema 是一种用于描述 XML 文档结构的语言。它定义了 XML 文档中数据的有效性和结构。在 XML Schema 中,数值数据类型是非常重要的一部分,它定义了 XML 文档中可以包含的数值类型。本文将详细介绍 XML Schema 中常用的数值数据类型,以及…...
Window获取界面空闲时间
GetLastInputInfo是一种Windows API函数,用于获取上次输入操作的时间。 该函数通过LASTINPUTINFO结构返回最后一次输入事件的时间。 原型如下 BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO plii);那么可以利用GetLastInputInfo来得到界面没有操作的时长 uint…...

Java进阶(vue基础)
目录 1.vue简单入门 ?1.1.创建一个vue程序 1.2.使用Component模板(组件) 1.3.引入AXOIS ?1.4.vue的Methods(方法) 和?compoted(计算) 1.5.插槽slot 1.6.创建自定义事件? 2.Vue脚手架安装? 3.Element-UI的…...

Mac电脑上好用的压缩软件
在Mac电脑上,有许多优秀的压缩软件可供选择,这些软件不仅支持多种压缩格式,还提供了便捷的操作体验和强大的功能。以下是几款被广泛推荐的压缩软件: BetterZip 功能特点:BetterZip 是一款功能强大的压缩和解压缩工具&a…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...