ArkUI框架,更懂程序员的UI信息语法
ArkUI框架简化代码的“秘密”

在传统的开发过程中,总有个问题在困扰我:如何实现前端view与后端数据的同步更改?例如:在某个视频类app的页面,如果我想要实现视频的点击播放功能,需要怎么样进行呢?

如果我使用传统的命令式开发框架去实现,容易造成的麻烦在于,每次后端的数据发生更改,我都需要手动更新前端view。
为了解决这个问题,我便在ArkUI上实现了同样的功能,神奇的事情发生了,瞬间代码干净了很多,只用几行代码就实现了相同的功能。

于是我搜索了一下ArkUI有什么优势。发现很重要的一个原因:ArkUI使用了声明式UI开发框架,同时在UI描述上运用了可以和语言运行时深度结合的自研语言ArkTS。
声明式框架的“庐山真面目”

这里肯定会有小伙伴提出疑问:什么是声明式开发框架?在介绍之前,我们先了解一下传统的命令式开发框架思路,作为一个程序员,一旦我想要更改View,就需要先更改View对应的Data,然后再更改View的显示内容。

而声明式开发框架则不同,ArkUI的声明式框架框架更为高效,可以让data与前端view同步更新数据。

那ArkUI框架是如何实现同步更新的呢?这个原理非常简单,想象一下我现在要盖一栋大楼,我需要把项目先交给包工头,包工头再把具体的工作分配给工人,工人依据图纸建造大楼,当图纸变动的时候,工人也需要按照图纸更改建造动作。

与此相对的,在ArkUI命令式框架内部,有两个重要的角色,代理和拦截器。

代理可以将目标数据进行代理,并为目标数据绑定到拦截器上。而拦截器会监听目标数据的变化,当数据更新时,拦截器就会重写数据的set方法,同时自动更新数据对应的前端页面,整个过程不需要程序员进行手动命令更新。
原子布局能力实现页面布局一致性
声明式开发框架成功解决了传统开发过程中,代码冗长的问题。但是在了解声明式开发框架的过程中,我不经想到一个问题:有没有方法,让我开发一次代码,就可以在多个设备上适配呢?

ArkUI就提供了这一功能,于是我动手试了一下。当设备尺寸变宽时,我可以通过原子布局的均分能力去实现页面布局的一致性,也可以通过栅格布局,去解决多尺寸多设备的动态布局问题。

刚刚提到的原子布局能力包含均分能力,折行能力,拉伸能力,缩放能力,延伸能力,占比能力和隐藏能力。可以帮助我们在不同设备上保持体验的一致性。这样自适应的问题解决了。

针对设备独有的特性,比如平板适配左侧导航栏,这个有什么方法实现呢?这里我找到了媒体查询,它可以判断设备类型,设计出相匹配的布局样式,同时还可以监听屏幕尺寸动态变化,比如横竖屏切换可以通过orientation属性判断屏幕横竖状态来动态适配,另外还支持判断分屏状态、折叠屏展开状态等,这样就解决了我一次开发多端部署的难题。
同时,ArkUI框架为开发者提供了多态组件,同一控件在不同的设备上会呈现出不同的形态,所以开发者在使用多态组件时,无需考虑设备差异,只需关注功能实现即可。
常用组件
在这里我们总结了一下常用组件:

常见的容器类组件有列表,弹出框。

展示类组件有文本,进度条,事件标记和气泡指示。

导航类组件有Tab页签。


操作类组件有按钮,下拉选项,选择器,评分条,搜索框和菜单。
这样一来,我只需要选择合适的组件进行开发,就可以一次开发,多端部署。大大节省我的开发时间。
总结
根据前文不难看出,ArkUI是一套用于构建HarmonyOS应用界面的UI开发框架。
我们总结一下它主要有以下三个特性:
1. 极简的UI信息语法
2. 支持多设备开发,一次开发多端部署
3. 开箱即用的多态UI组件
从而帮助开发者提升HarmonyOS应用界面的开发效率。
关于ArkUI的介绍今天就到这里了,需想了解更多?
感兴趣的伙伴们可以点击链接https://www.bilibili.com/video/BV1s24y1C7G1/?spm_id_from=333.999.0.0&vd_source=63670bea3faf2b464bd14e17a3261b5a进行学习。
如果你喜欢这期的视频,欢迎在下方留言点赞分享,你的支持就是我们更新的最大动力,我们下期再见~

ArkUI框架,更懂程序员的UI信息语法的更多相关文章
- 能让你成为更优秀程序员的10个C语言资源
能让你成为更优秀程序员的10个C语言资源 本文由 伯乐在线 - archychu 翻译自 mycplus.欢迎加入 技术翻译小组.转载请参见文章末尾处的要求. 一些人觉得编程无聊,一些人觉得它很好玩. ...
- [转] Java程序员学C#基本语法两个小时搞定(对比学习)
Java程序员学C#基本语法两个小时搞定(对比学习) 对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. ...
- log4net--帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具
1. log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具. 2. Log4net的结构如下 ...
- 推荐一个最懂程序员的google插件
0.前言 很多人应该也和我一样,使用google浏览器时,它的主页是真不咋地,太单调了,用起来贼不爽,想整它很久了 一打开就是上面的样子,让我看起来真心真心不爽 当然:为了这个不关技术的瞎犊子事情,曾 ...
- Java程序员学C#基本语法两个小时搞定(对比学习)
对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. 1.引包 using System;java用import ...
- 黑马程序员——C语言基础语法 关键字 标识符 注释 数据及数据类型
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)C语言简单介绍 (1)C语言程序是由函数组成的任何C语言程序都是由一 ...
- 黑马程序员——JAVA基础之语法、命名规则
------- android培训.java培训.期待与您交流! ---------- 1.java语言组成:关键字,标识符,注释,常量和变量,运算符,语句,函数,数组. 2.java关键字:被Jav ...
- 跨行程序员Java进阶--基础语法
1.基础语法 Hello Wolrd 首先定义类 -- public class 类名 在类定义之后加上一对大括号 -- {} 在大括号中间添加一个主(main)方法/函数 -- public sta ...
- 更适合程序员使用的Vim配置 显示行号 语法高亮 智能缩进
在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号.语法高亮度显示.智能缩进等功能的.为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc.在启动vim时,当前用户根 ...
- dart --- 更符合程序员编程习惯的javascript替代者
dart是google在2011年推出的一门语言,提供较为丰富的lib,并支持将代码转变为javascript,其demo code 和 demo app 也是以web前端代码来展示的. 其语言特性较 ...
随机推荐
- gorm整理
目录 1. 约定 2. 结构体标签 3. 创建记录 4. 更新 5.删除 6. 查询 7.关联 8.链式操作 9.范围 10.多个立即执行方法的注意事项 11.错误处理 12.钩子 13.事务 14. ...
- 手把手带你快速上手香橙派AIpro
本文分享自华为云社区<香橙派AIpro快速上手指南>,作者:昇腾CANN. 1 前言 作为业界首款基于昇腾深度研发的AI开发板,Orange Pi AIpro无论在外观上.性能上还是技术服 ...
- Java 多线程---线程优先级
Java 实例 - 线程优先级设置 以下实例演示了如何通过setPriority() 方法来设置线程的优先级: 1 SimplePriorities.java 文件 2 public class Si ...
- Alertmanager钉钉告警
一.部署alertmanager 1.1 创建目录 mkdir -p /deploy/app/alertmanager/config chmod -R 777 /deploy/app/alertman ...
- Linux操作系统加固建议
1.1.1 口令锁定策略 1.执行备份 (1).redhat执行备份: #cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_bak (2).SUS ...
- apt-get upgrade 和apt-get dist-upgrade区别
kali linux系统或者 debian等系统 以及centos 在系统升级后经常会出现系统无法启动,或者启动之后GUI功能没有的问题: 笔记: 区别这两种用法 apt-get update ...
- github git clone下载加速 && npm install 下载加速
git clone https://pd.zwc365.com/seturl/< https 开头的项目地址> npm install --registry=https://registr ...
- Linux 常见缩写命令英文全称
linux 命令参考Linux 命令大全: https://man.linuxde.net/ awk = "Aho Weiberger and Kernighan" 三个作者的姓的 ...
- WPF异步命令以及SqlSugar异步增删改查
1.异步 /// <summary> /// 查询全部 /// </summary> /// <returns></returns> public as ...
- MySQL 汉字字段 拼音排序
原数据 排序后 SELECT c1 FROM test ORDER BY CONVERT ( c1 USING gbk )