首页 > 其他分享 >鸿蒙NEXT开发声明式UI是咋回事?

鸿蒙NEXT开发声明式UI是咋回事?

时间:2024-10-15 11:02:16浏览次数:8  
标签:ArkTS 鸿蒙 Text 配置 NEXT UI 组件 fontSize

大家好,我是 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描述提供了一种高效、直观的方式来构建应用程序的用户界面。

标签:ArkTS,鸿蒙,Text,配置,NEXT,UI,组件,fontSize
From: https://www.cnblogs.com/wgjava/p/18466990

相关文章

  • 【Next.js 项目实战系列】02-创建 Issue
    原文链接CSDN的排版/样式可能有问题,去我的博客查看原文系列吧,觉得有用的话,给我的库点个star,关注一下吧 上一篇【Next.js项目实战系列】01-创建项目创建Issue配置MySQL与Prisma​在数据库中可以找到相关内容,这里不再赘述添加model​本节代码链接#schema.pri......
  • electron-builder 在打包universal的时候报错 both x64 and arm64 builds and not cov
    ⨯Detectedfile"Contents/Resources/src/files/adbtool/mac/adb"that'sthesameinbothx64andarm64buildsandnotcoveredbythex64ArchFilesrule:"undefined"failedTask=buildstackTrace=Error:Detectedfile"Contents/Re......
  • 鸿蒙Next第三次充电
    1、Navigation 的样式是一个带有返回箭头的标题栏加子控件组成的。2、页面跳转可以分为页面内跳转和页面间跳转,页面内跳转是指所跳转的页面在同一个 Ability 内部,它们之间的跳转可以使用 Router 或者 Navigator 的方式;页面间跳转是指所跳转的页面属与不同的 Ability ,这......
  • 可视化流程图的UI设计展示参考
              ......
  • 解决 Maven 插件报错:The plugin org.codehaus.mojo:flatten-maven-plugin:1.5.0 requi
    检查Maven版本:首先,确认当前使用的Maven版本是否与插件要求的版本一致。可以通过在命令行中输入 mvn-v 来查看当前Maven的版本信息。升级或降级Maven版本:如果当前Maven版本过低,需要升级到插件要求的版本;如果过高,可能需要降级。升级或降级Maven可以参考Maven的官......
  • Stanford CS149 -- Assignment 2: Building A Task Execution Library from the Groun
    作业描述及代码参见:CS149-asst2PartAStep1只需要实现一个简单的任务系统,在run()的开始生成工作线程,并在run()返回之前从主线程合并这些线程。任务的分配方式采用动态分配,即每个线程每次取一个任务完成,能者多劳。每个线程的核心实现为:while(true){inttaskID=done+......
  • ui入门
    一、QWidget类     QWidget是Qt中所有用户界面对象的基类,即可视化组件和窗口的基类都是此类,因此QWidget类内部包含了大量的与UI相关的基础特性。最最基础的属性:width:constint宽度,单位像素,不计算边框。属性在文档中通常包含Accessfunctions表示此......
  • FoxyProxy火狐代理插件及BurpSuite代理链设置
    https://www.yisu.com/ask/69767109.htmlBurpsuite小云12972023-09-1204:04:38栏目:编程语言开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止!点击查看>> FoxyProxy是一款功能强大的火狐代理插件,可以帮助用户在浏览器中轻松地切换和管理不同的代理服......
  • 洛谷P1373:小 a 和 uim 之大逃离
    洛谷P1373:小a和uim之大逃离题意略思路DP:记dp[i][j][c][0/1]表示走到\(i\)行\(j\)列时,两人容量之差为\(c\)的方案数,\(0\)表示\(\rm小a\)走的最后一步,\(1\)表示\(\rmuim\)走的最后一步。容易得出转移方程:dp[i][j][l][0]+=dp[i-1][j][l-a[i][j]+k][1];dp[......
  • Elementui树形列表控件tree-box
    效果图(在vue2项目开发中,实现了树形列表查看及筛选等交互,用清晰的层级结构展示信息) 开发步骤及代码,来喽!!无脑copy1、组件基本框架  DeviceTree 是基于 Vue.js 和 ElementUI 构建的树形组件。通过 el-tree 组件显示树状结构。组件的外部可通过传递 props 来控制......