1.基础

声明式UI:​​
​​核心:​​ 你​​声明​​你想要UI是什么样子(在build()方法里描述),而不是一步步命令式地创建和操作View对象(findViewById, setText, setOnClickListener)。
模块化:​​ 虽然一个页面通常在一个文件,但复杂的UI可以通过​​自定义组件​​(也是struct)拆分成多个可复用的部分,这些组件可以放在不同的文件中。

装饰器(@xxx):​​

​​关键特性:​​ ArkTS大量使用装饰器来增强类、结构体、属性、方法的行为。
​​常见装饰器:​​
@Entry: 标记入口组件。
@State: 标记组件内部的状态变量,变化时驱动UI更新。
@Prop: 用于父子组件间单向数据传递(父->子)。
@Link: 用于父子组件间双向数据绑定。
@Observed& @ObjectLink: 用于观察复杂对象(类)内部属性的变化。
@Builder: 定义可复用的UI片段(Builder方法)。
​​注意:​​ 理解不同装饰器的用途和作用域是掌握ArkTS状态管理和组件通信的关键。

​​组合优于继承:​​ 通过嵌套组件来构建复杂UI,而不是继承复杂的基类。
​​链式调用:​​ 组件的属性设置和事件绑定通常采用链式调用语法(如Button(“Click”).onClick(…).width(100)),使代码更简洁。

反正一句话,很像vue.js,但更好用

// 安卓:XML布局 + ViewModel  
// 鸿蒙:ArkTS声明式UI  
@Entry  
struct HelloPage {  @State message: string = "Hello Harmony"  build() {  Column() {  Text(this.message)  // 类似Jetpack Compose  Button("Click").onClick(() => this.message = "Clicked!")  }  }  
}

这就是红码里面完整的一个页面所有的东西。需要一个文件就可以了。在安卓里面它其实是需要一个布局文件,还需要一个逻辑控制文件。

​​@Entry

它标记这个结构体(struct)是应用的​​入口页面​​。相当于Android中的MainActivity或在AndroidManifest.xml中标记为LAUNCHER的Activity。
作用:​​ 告诉鸿蒙系统,当用户启动应用时,应该首先加载并显示这个页面。
​​注意:​​ 一个应用可以有多个@Entry装饰的页面,但通常有一个主入口,鸿蒙应用可以有多个入口,只要加上这个就是一个入口,想到于安卓的暴露的页面,别人也能通过这个页面拉起你的app(需要再module.json5里面配置才可)

struct HelloPage

这就是一个结构体,这个结构体就代表了一个页面

@State message: string = “Hello Harmony”

一个私有的状态变量,Text(this.message) 这里面通过这样的方式绑定到了text的组件上,可以通过改变变量的值来刷新ui,类似vue.js

​​build() { … }

用来定义布局结构,有且只有一个

UI描述 (Column() { … })

Button(“Click”):​​ 这是一个​​按钮组件​​。显示文本“Click”。
​​.onClick(() => this.message = “Clicked!”):​​ 这是给Button组件添加的​​事件处理函数​​(使用​​链式调用​​语法)这里面this.message = "Clicked!"改变了变量的值,会导致界面同时刷新成改变后的值

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

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

相关文章

弹性扩展新范式:分布式LLM计算的FastMCP解决方案

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。如果你想系统学习AI大模型应用开发,挑战AI高薪岗位,可在文章底部联系。在现代大语言模型(LLM)应用架构中…

springboot项目不同平台项目通过http接口AES加密传输

前言: 在公司协作开发的过程中,自己的项目是公共调用平台,也可以说是中转平台,供公司其他团队的项目进行接口调用。因为是不同团队项目之间的相互调用,所以不能通过openFeign远程调用。只能通过http远程调用&#xff…

推荐5个网页模板资源网

1. 企业模板官方网站: http://www.qimoban.com介绍:企业模板(qimoban.com )是一个专注于提供丰富多样的企业模板的优质平台,致力于为企业和个人打造高效、专业、个性化的模板获取渠道。该平台提供海量的企业模板资源,涵盖企业官网…

Redis持久化机制(RDB AOF)

1. RDB RDB 持久化是把当前进程数据生成快照保存到硬盘的过程,触发 RDB 持久化过程分为手动触发和 自动触发,存储的是二进制数据。 1.1 手动触发 使用 save 和 bgsave 命令触发: save:Redis服务主进程阻塞式执行持久化操作&…

【css】让浏览器支持小于12px的文字

【css】让浏览器支持小于12px的文字.demo {display: inline-block;/** 使用Webkit引擎的变换属性(主要针对旧版Safari/Chrome) **/-webkit-transform: scale(0.8); }注意:display: inline-block; 一定要加上!1.transform: scale(…

机器学习-基础入门:从概念到核心方法论

在人工智能飞速发展的今天,机器学习作为其核心技术,正深刻改变着我们的生活与工作。从 AlphaGo 战胜围棋世界冠军,到日常的智能推荐、人脸识别,机器学习的应用无处不在。本文将从基础概念出发,带你系统了解机器学习的核…

《Leetcode》-面试题-hot100-动态规划

题目列表 70. 爬楼梯 简单难度 leetcode链接 118. 杨辉三角 简单难度 leetcode链接 198. 打家劫舍 中等难度 leetcode链接 279.完全平方数 中等难度 leetcode链接 322.零钱兑换 中等难度 leetcode链接 139.单词拆分 中等难度 leetcode链接 300.最长递增子序列 中等难度 l…

数巅中标中建科技AI知识库项目,开启建筑业数智化新篇章

AI正以前所未有的迅猛态势渗透进建筑业的每一处脉络。在这场数智化转型浪潮中,AI技术如何与建筑业基因深度融合?如何充分释放数据价值?近日,数巅成功中标中建科技集团有限公司“企业AI知识库研发”项目,这一“大语言模…

想要PDF翻译保留格式?用对工具是关键

嘿,朋友!最近有没有被PDF翻译的事儿搞得焦头烂额呀?尤其是碰到韩文PDF文件的时候,是不是更头疼了?别担心,我最近也遇到了类似的问题,试了不少软件,发现有五款软件在处理韩文PDF翻译时…

【MySQL✨】服务器安装 MySQL 及配置相关操作

1. 安装 MySQL 在安装 MySQL 时,如果使用官方 RPM 源,会遇到 GPG 密钥验证失败的错误,可以按照以下步骤解决: 解决 GPG 密钥验证失败的问题下载 MySQL 官方 GPG 密钥 使用以下命令下载并安装 MySQL 的官方 GPG 密钥: w…

大数据量返回方案(非分页)

一、普通方式返回100万条数据RestController RequestMapping("/bad") public class BadController {Autowiredprivate UserRepository userRepository;/*** 危险&#xff01;一次性加载 100 万条到内存*/GetMapping("/all-users")public List<User> …

基于Casbin的微服务细粒度权限控制方案对比与实践

基于Casbin的微服务细粒度权限控制方案对比与实践 随着微服务架构在互联网和企业级应用中的广泛应用&#xff0c;服务间的安全边界愈发重要。传统的集中式权限控制方式已难以满足微服务的高并发、动态扩展和多语言支持等需求。本文将从主流的三种微服务权限控制方案入手&#x…

5G毫米波现状概述(截止2025 年7月)

5G毫米波现状概述(截止2025 年7月&#xff09; 原创 modem协议笔记 2025年07月25日 06:01 广东 听全文 当你在体育馆看球赛时&#xff0c;想发段实时视频到朋友圈却总卡成PPT&#xff1b;当郊区的父母抱怨“光纤拉不到家&#xff0c;网速比蜗牛慢”—这些场景背后&#xff…

thymeleaf 日期格式化显示

在Thymeleaf中处理日期格式化显示主要有以下几种方式&#xff1a; 1. 使用#dates.format()方法进行基础格式化&#xff1a; <p th:text"${#dates.format(dateObj, yyyy-MM-dd HH:mm:ss)}"></p>这种方法支持自定义格式模式&#xff0c;如yyyy表示年份、MM…

【经验分享】如何在Vscode的Jupyter Notebook中设置默认显示行号

【经验分享】如何在Vscode的Jupyter Notebook中设置默认显示行号 打开设置&#xff0c;搜索&#xff1a;Notebook: Line Number&#xff0c;然后把这个设置为on

蓝桥杯STL stack

STL stack 概述栈&#xff08;stack&#xff09;是一种遵循**后进先出&#xff08;LIFO&#xff09;**原则的线性数据结构&#xff0c;仅允许在栈顶进行插入和删除操作。STL&#xff08;Standard Template Library&#xff09;中的 stack 是一个容器适配器&#xff0c;基于其他…

从0到1:飞算JavaAI如何用AI魔法重构MCP服务全生命周期?

摘要 本文详细介绍了如何利用飞算JavaAI技术实现MCP&#xff08;Model Context Protocol&#xff09;服务的创建及通过的全过程。首先阐述了飞算JavaAI的基本概念、特点和优势&#xff0c;接着对MCP服务的需求进行分析&#xff0c;然后按照软件开发流程&#xff0c;从系统设计、…

Webpack Loader 完全指南:从原理到配置的深度解析

掌握 Webpack Loader 的核心机制&#xff0c;解锁前端工程化进阶技能前言&#xff1a;为什么需要理解 Loader&#xff1f; 在现代前端工程化体系中&#xff0c;Webpack 已成为构建工具的事实标准。然而面对非标准 JavaScript 文件或自定义语法时&#xff0c;你是否遇到过 Modul…

读书笔记:《我看见的世界》

《我看见的世界.李飞飞自传》李飞飞 著&#xff0c;赵灿 译个人理解&#xff1a; 是本自传&#xff0c;也是AI的发展史 坚持&#xff0c;总会转机&#xff0c;“一不小心”也许就成了算法、大规模数据、原始算力人工智能似乎一夜之间从一个小众的学术领域爆发成为推动全球变革的…

使用纯NumPy实现回归任务:深入理解机器学习本质

在深度学习框架普及的今天&#xff0c;回归基础用NumPy从头实现机器学习模型具有特殊意义。本文将完整演示如何用纯NumPy实现二次函数回归任务&#xff0c;揭示机器学习底层原理。整个过程不使用任何深度学习框架&#xff0c;每一行代码都透明可见。1. 环境配置与数据生成 impo…