鸿蒙NEXT开发声明式UI是咋回事?
大家好,我是 V 哥,ArkTS 是 HarmonyOS 优选的主力应用开发语言,它在 TypeScript 的基础上进行了扩展,提供了声明式 UI 描述、自定义组件和动态扩展 UI 元素的能力。这些能力与 ArkUI 开发框架中的系统组件及其相关的事件方法、属性方法等共同构成了 UI 开发的主体。ArkTS 还提供了多维度的状态管理机制,允许数据在组件内使用,也可以在不同组件层级间传递,实现数据和 UI 的联动。此外,ArkTS 还提供了渲染控制的能力,包括条件渲染、循环渲染和数据懒加载,以适应不同的应用开发需求。
在声明式 UI 描述中,ArkTS 允许开发者以声明方式组合和扩展组件来描述应用程序的 UI。这包括基本的属性配置、事件处理和子组件的配置方法。例如,可以通过链式调用的方式配置系统组件的样式和其他属性,如 Text('hello').fontSize(20).fontColor(Color.Red)
。同时,也可以设置组件的事件响应逻辑,如 Button('Click me').onClick(() => { this.myText = 'ArkUI'; })
。此外,如果组件支持子组件配置,可以在闭包中添加子组件的 UI 描述,如 Column() { Text('Hello').fontSize(100) }
。
ArkTS 的声明式 UI 开发范式提供了一种高效、直观的方式来构建应用程序的用户界面。通过声明式语法,开发者可以更加专注于应用的逻辑和结构,而不是具体的实现细节,从而提高开发效率和代码的可维护性。随着 HarmonyOS 的不断发展,ArkTS 也将持续演进,提供更多的特性和能力,以满足开发者在应用开发和运行中的需求。
在HarmonyOS中,ArkTS语言提供了声明式UI的描述方式,允许开发者以声明的方式来构建和操作用户界面。以下是一些关键点和代码示例,以及对它们的分析:
1. 基本语法和组件创建
ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力。在创建组件时,可以有无参数两种方式:
- 无参数组件:如果组件的接口定义没有包含必选构造参数,则组件后面的“()”不需要配置任何内容。例如,Divider组件不包含构造参数:
Column() {
Text('item 1')
Divider()
Text('item 2')
}
- 有参数组件:如果组件的接口定义包含构造参数,则在组件后面的“()”配置相应参数。例如,Image组件的必选参数src:
Image('https://weige/my.jpg')
或者Text组件的非必选参数content:
Text('weige')
2. 配置属性
属性方法以“.”链式调用的方式配置系统组件的样式和其他属性。例如,配置Text组件的字体大小:
Text('weige').fontSize(15)
也可以配置组件的多个属性:
Image('weige.jpg').alt('error.jpg').width(100).height(100)
3. 配置事件
事件方法以“.”链式调用的方式配置系统组件支持的事件。例如,使用lambda表达式配置组件的事件方法:
Button('Click me').onClick(() => {
this.myText = 'ArkUI';
})
4. 配置子组件
如果组件支持子组件配置,则需在尾随闭包"{…}"中为组件添加子组件的UI描述。例如,Column组件配置子组件的示例:
Column() {
Text('Hello').fontSize(100)
Divider()
Text(this.myText).fontSize(100).fontColor(Color.Red)
}
5. 状态管理
ArkTS提供了多维度的状态管理机制。状态变量变化会触发UI刷新。例如:
@Entry
@Component
struct Index {
@State message: string = 'Hello World'
build() {
Column() {
Text('Hello').fontSize(30)
Text(this.message).fontSize(30)
Button() {
Text('Click Me').fontSize(30)
}.onClick(() => {
this.message='ArkUI'
}).width(200).height(50)
}
}
}
6. 渲染控制
ArkTS提供了渲染控制的能力,包括条件渲染、循环渲染和数据懒加载。这些能力允许开发者根据应用的不同状态,渲染对应状态下的UI内容。
通过这些基本语法和示例,开发者可以构建出功能丰富的HarmonyOS应用界面。ArkTS的声明式UI描述提供了一种高效、直观的方式来构建应用程序的用户界面。
鸿蒙NEXT开发声明式UI是咋回事?的更多相关文章
- 如何快速体验鸿蒙全新声明式UI框架ArkUI?
HDC2021将于10月22日在东莞松山湖正式开幕,大会将设立Codelab体验专区,超多好玩.有趣的Demo等你体验.想快速入门HarmonyOS?学习HarmonyOS新特性?以下几个Codela ...
- Mac最新Flutter环境搭建运行和对比理解声明式UI
前言 这段时间一直都在学习和写关于SwiftUI的东西,前面也总结了四篇文章来大体上说了下Demo中功能实现的一些细节,后面准备开始了解学习一下Flutter,争取在年前能再用Flutter写一份项目 ...
- 乘风破浪,遇见Android Jetpack之Compose声明式UI开发工具包,逐渐大一统的原生UI绘制体系
什么是Android Jetpack https://developer.android.com/jetpack Android Jetpack是一个由多个库组成的套件,可帮助开发者遵循最佳做法.减少 ...
- 客开监控(BE/UI/BP)插件停用与启用
1.单据界面右键属性,获取当前客开监控页面URL连接:http://172.16.168.15/U9/erp/display.aspx?lnk=UFSoft.UBF.Cust.CustManager& ...
- SpringCloud 源码系列(6)—— 声明式服务调用 Feign
SpringCloud 源码系列(1)-- 注册中心 Eureka(上) SpringCloud 源码系列(2)-- 注册中心 Eureka(中) SpringCloud 源码系列(3)-- 注册中心 ...
- Android全新UI编程 - Jetpack Compose 超详细教程
1. 简介 Jetpack Compose是在2019Google i/O大会上发布的新的库.Compose库是用响应式编程的方式对View进行构建,可以用更少更直观的代码,更强大的功能,能提高开发速 ...
- 转:对UI自动化测试的一些感悟
不断发掘自动化测试对各个团队的附加价值,这样才能得到来自四面八方的支持,没有将自动化加入项目过程的自动化都达不到预期的效果. UI自动化框架 把UI自动化框架设计成一个拼图性质的架构.把每个特性都设计 ...
- 关于Kendo UI 开发教程
Kendo UI 开发教程 jQuery UI 是一套 JavaScript 函式库,提供抽象化.可自订主题的 GUI 控制项与动画效果.基于 jQuery JavaScript 函式库,可用来建构互 ...
- 线程中更新ui方法汇总
一.为何写作此文 你是不是经常看到很多书籍中说:不能在子线程中操作ui,不然会报错.你是不是也遇到了如下的疑惑(见下面的代码): @Override protected void onCreate ...
- Android Kotlin Jetpack Compose UI框架 完全解析
前言 Q1的时候公司列了个培训计划,部分人作为讲师要上报培训课题.那时候刚从好几个Android项目里抽离出来,正好看到Jetpack发布了新玩意儿--Compose,我被它的快速实时打包给吸引住了, ...
随机推荐
- 【Layui】08 时间线 Timeline
文档地址: https://www.layui.com/demo/timeline.html 常规时间线: <ul class="layui-timeline"> &l ...
- stm32g070 usart 中断问题: 开启接收中断 RXNEIE 需要注意ISR的错误类型,否则会进入中断。
usart 中断问题: 开启接收中断 RXNEIE 需要注意ISR的错误类型,否则会进入中断. 调试时发现,如果ISR的ORE和FE置位,而此时要是使能RX中断(RXNEIE置位)就会进入中断复位程序 ...
- 什么?!90%的ThreadLocal都在滥用或错用!
最近在看一个系统代码时,发现系统里面在使用到了 ThreadLocal,乍一看,好像很高级的样子.我再仔细一看,这个场景并不会存在线程安全问题,完全只是在一个方法中传参使用的啊!(震惊) 难道是我水平 ...
- Conda 使用
简介 Conda 和 Anaconda.Miniconda 的关系 Conda 是一个包管理器及环境管理器. Anaconda 和 Miniconda 都是一种 Python 和 R 发行版,其包括了 ...
- 工作 6 年,@Transactional 注解用的一塌糊涂
接手新项目一言难尽,别的不说单单就一个 @Transactional 注解用的一塌糊涂,五花八门的用法,很大部分还失效无法回滚. 有意识的在涉及事务相关方法上加@Transactional注解,是个好 ...
- 【图文安装教程】在docker中安装ES
在docker中安装ES怎么安装?本文就教大家怎么安装 1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联.这里先创建一个网络: docker ...
- windows docker(25.0.3) 运行 1.4.1 nacos 容器
Docker Desktop 设定图标 -> Docker Engine 设定国内镜像源 添加配置: { "builder": { "gc": { &qu ...
- Blender - 动画demo体后感
Blender 一个非常不错的免费的3D.2D软件 超级不错 我初步的按照网上的动画教程,做了一个很简单的 不断跳动的独眼球 为什么独眼?一开始我是画了两个眼睛,结果最后总是出了点问题,没有办法cop ...
- SpringMVC:SpringMVC处理Ajax请求
目录 @RequestBody @RequestBody获取json格式的请求参数 @ResponseBody @ResponseBody响应浏览器json数据 @RestController注解 @ ...
- 旺旺发消息代码,hook旺旺发消息,旺旺发消息call
工作需要写的,不是反汇编旺旺,是千牛的,基于千牛前端架构开发利用千牛发消息的一个组件,可以拿来做千牛客服机器人,可以拿来做千牛自动发货.非协议破解需要挂机,非模拟发送消息,非模拟发送消息,非模拟发送消 ...