鸿蒙ArkUI即将取代Java UI?

article/2025/11/9 23:00:17

关注前端开发的同学,一定听过近些年,DSL 描述式的 UI 构建写法,大有取代传统命令式布局的趋势。
传统上,写一套 UI 代码,需要根据数据的逻辑,手动的在业务代码里,去改变界面 UI 元素的状态,造成业务代码和 UI 代码搅在一起,黑话=“耦合性极高”。结果就是,把人人都炼成了一身诸哥的本事,事必躬亲,鞠躬尽瘁…
好的。话说在网页开发的远古时代(2013 年以前),想写一个炫酷的网页,往往需要直接操作 HTML 元素,比如控制网页上一个价格数字根据选择不同优惠券的变化,需要直接操作这个价格文字元素。

类似这样的代码:

if(chooseShuang12) {

document.getElementById( “oldPrice”). value*= 2.5//原价提升2.5倍

document.getElementById( “price”). value*= 0.5//现价显示为0.5倍

}
这种写法对互联网老板来说不能说有问题,只能说不利于程序员偷懒。

时间来到 2013 年,Facebook 里有一个大神年入百万刀,终于 bear 不了这种年复一年的低端手写操作 UI 元素“low”代码,于是他搞成这样的写法:

< div>

{this.price}

</ div>

{} 花括号里是一个关于价格的变量,div 是价格 UI 元素的容器,只要 price 发生变化,div 就自动更新,不再需要去设置它的值。这样前端程序员就不用再费脑子去更新 UI 了。
至于如何去更新的,啥时候更新,他写了一套算法,叫内存差分算法,大致是把页面元素结构都事先拷贝到内存中。

如果变量发生了变化,比较一下前后的差异,只更新发生变化的那部分,因为有了内存缓存和算法比较,更新效率远远超出了原有的直接设置的方法。

然后的事,你就知道了,这一套东西叫 React,强势垄断了前端开发的前沿领域,不会 React,可能面试都通不过。

仅仅一年后的 2014,有一个在谷歌纽约分部实习的中国留学生,叫尤雨溪,同样写 UI 也写烦了,然后想写个框架,正好吸收了 React 的先进理念并改进、优化了一下语法:

< div>

{{ price }}

</ div>在这里插入图片描述

尤雨溪的 Vue 框架确实比 React 可能更接地气,更轻巧,React 有的,基本上 Vue 都有,而且更好用好学。

支持国人吸收好东西创新,并且让国人开发者的学习和普及成本大幅降低,这是功德无量的事。

看到这里,你是不是看到了 ArkUI 中的 JS UI 是怎么来的了?没错,ArkUI 的 JS UI 范式,就是 Vue 的写法。2015 年,Facebook 看 React 这么火爆,直接成立了专门的组来深度开发,于是看重了手机端原生跨平台的市场,推出了 React Native。

直接用 React 的语法,可以编译出 iOS 和 Android 的原生 App,性能远比 H5 的网页要好多了,抢了不少开发者,生态搞的有声有色。

苹果、谷歌的大佬们看的很不是滋味,这不是釜底抽薪么?
前端开发领域此刻暗流涌动,新一轮的 iOS 和 Android 端 UI 开发框架军备竞赛悄然发力。这次是主角们登场了。

憋足 2 年,谷歌率先发力,强势推出 Flutter 开发框架。

基于 Chrome 浏览器渲染网页的 Skia 2D 引擎,号称开发出来的 App,几乎无需更改任何代码就可以跨平台。

iOS 和 Android 端表现没有任何差异,而且比 React Native 性能更好,生态更繁荣,这个确认他们做到了,而且更新迭代以天为单位,诚意非常足。

然后唯一的缺陷就是,搭载一个谷歌内部无人问津的编程语言 Dart,这个 Dart 语法非常啰嗦,写起 UI 来嵌套很严重,但是基于生态和性能优势,开发者也就一直忍了,毕竟没有完美。
Flutter 确实发展太快了,几乎占据了新原生 App 开发市场的半壁江山,对纯 iOS 和 Android 原生开发者简直是雪上加霜。
2019 年,苹果再也忍不住了,在开发者大会上重磅推出 SwiftUI 框架,从名字就知道,苹果命名是非常精准的,就是写 UI 用的。

发布会上的 keynote 对比,把原先的 iOS 上的 UIKit 简直虐成渣,台下听众纷纷欢呼,好像苹果重新发明了开发框架一样。
在这里插入图片描述
iOS 开发者看到这样的东西,简直是着了魔,代码简化后少了 90% 而且更易懂,加上实时预览器,启动模拟器调试的时间也少了 90%。惊呼这玩意简直就是未来。
鸿蒙的开发体验中,对 JavaUI 是不友好的,啥年代还用小米加步枪。

一直没有深入 Java 相关的开发者,就在要丧失信心之际。2021 年 5 月,ArkUI 组就带来了这震惊业界的消息,鸿蒙即将支持 DSL 开发,而且语法致敬了 SwiftUI、Flutter,React,10 月 HDC 正式随 SDK 7 推出了技术预览版, 编辑器和预览器一应俱全,非常有诚意。

经过一段时间的实际项目和课程实践,我总结了相比较鸿蒙既有框架的 5 个优势:

减少了编译步骤,保证了最大的UI性能。实际体验,比 JS UI 提升 20%。
使用 DSL 代码,比 Java UI 节省代码 90% 以上。200 行的代码,如今只需要 20 行。
使用扩展的 TS 语法,强类型,相比 JS UI 减少了可能的运行时错误,更安全。
配套更好用的实时预览器,大大减少了启动模拟器的次数。
更使用的 Preview 修饰符,无需运行,即可单独调试一个组件的 UI 所有状态成为可能。
相比 Flutter:

ArkUI 大大减少了 Dart 嵌套语法地狱的问题,写法上更简洁明快。
预览器和 Preview 修饰符是调试 UI 不可或缺的工具,效率提升 100 倍的利器。
相比 SwiftUI:

状态管理更完善,有非常清晰的状态管理和存储修饰符配套。
SwiftUI 预览器缺少组件树功能,ArkUI 的组件定位功能十分好用。
当然,相比较上述 2 大框架,ArkUI 尚处于技术预览阶段,自带组件数量不足、缺失和 Bug。

以及最要紧的生态库尚未建立,需要时间去完善,根据官网规划,相信到 2022 年中段,这方面会有长足的进步,期待更好的 ArkUI!


http://chatgpt.dhexx.cn/article/5ADnok4S.shtml

相关文章

JAVA知识体系

文章目录 项目项目中你遇到了那些挑战表数据项目中出现了什么jvm的问题线上出现过什么事故项目中&#xff0c;那些地方使用到了juc的工具如果让你做技术选型&#xff0c;你怎么做结算时&#xff0c;幂等性如何保证有分布式事务吗&#xff0c;怎么做的&#xff1f;项目后期的规划…

计算机毕业设计之java+javaweb的高校学生健康档案管理系统

项目介绍 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时…

使用Java采集Google搜索结果

使用 Java Web 抓取谷歌搜索结果 微信搜索关注《Java学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 介绍 Java被列为最古老和最受欢迎的编程语言之一。它的受欢迎程度从它在超过 10 亿台安卓设备上运行这一事实就可以看出。 它也是最强大的多线程语言之一&am…

计算机毕业设计之java+springboot基于vue的学生成绩管理系统

项目介绍 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时…

(Java毕业设计)学生成绩管理系统(基于java+springboot)

您好&#xff01;我是岛上程序猿&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 开发环境 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#…

学生成绩管理系统(Java)

目录 ​编辑 需求分析&#xff1a; 登录界面(LoginPanel) 主界面(MainApp) 重写 1.班级重写(cs.practics.bean.BjBean.java) 2.课程重写(cs.practics.bean.CourseBean.java) 3.成绩重写(cs.practics.bean.MarkBean.java) 4.学生重写(cs.practics.bean.StudentBean.java…

Linux两台服务器之间直接传输文件和文件件

Linux两台服务器之间直接传输文件和文件夹 今天遇到一个需求&#xff0c;因公司有四台服务器&#xff0c;在老服务器上有一个音频文件夹大约为5个G大小&#xff0c;现在要拷贝到另外一台服务器上。 如果把文件夹打包下载到本地&#xff0c;再上传到目标服务器上&#xff0c;感…

FTP连接树莓派(Linux)进行文件传输

1. 在Linux上安装和启动FTP服务 在使用FTP功能之前&#xff0c;树莓派需要安装FTP Server&#xff0c;请输入以下命令安装vsftpd sudo apt-get install vsftpd 使用以下命令启动FTP服务 sudo service vsftpd start 2. 在主机上下载FlashFXP 然后按照如下方式配置&#xff1…

Linux学习(2)——传输文件

承接上一篇&#xff0c;这一篇文章也是基于《Linux从入门到精通》 何明编著 中国水利水电出版社 这本书写的&#xff0c;在写这篇文章的时候也查阅了一些相关资料&#xff0c;也自己动手实践了一下&#xff0c;不得不说&#xff0c;这本书讲得实在是通俗易懂&#xff0c;只要愿…

【Linux】基于TCP实现的大型文件(超过2G)传输项目——总结

文章目录 【1】实现的功能【2】项目框架【3】源代码【4】运行截图 【1】实现的功能 文件的上传、下载&#xff08;包括超过2G的大文件&#xff09;、断点续传、秒传、删除等等。 【2】项目框架 整个项目是在Linux环境下用C语言开发的&#xff0c;基于TCP协议&#xff0c;采用…

两台linux之间传输文件的方法

scp传输 当两台Linux主机之间要互传文件时可使用SCP命令来实现 scp传输速度较慢,但使用ssh通道保证了传输的安全性 复制文件 将本地文件拷贝到远程 scp 文件名 –用户名计算机IP或者计算机名称:远程路径 从远程将文件拷回本地 scp –用户名计算机IP或者计算机名称:文件名 …

Linux实现两台机器文件互传(SCP命令)

文章目录 SCP命令的注意事项下载文件和目录上传文件和目录 SCP命令的注意事项 scp命令的主要作用是实现Linux与Linux系统之间的文件传输 SCP传输要求&#xff1a; 两台计算机都的操作系统都必须是Linux操作系统SCP命令是基于SSH协议&#xff0c;所以两台服务器的sshd服务必须…

Linux这么在两个服务器直接传文件?

文章目录 概念1.当从一个远程服务器传输文件到另一个服务器上(你想传给别人文件)2.在本地服务器&#xff0c;从另一个服务器中获取文件(你想从别人获取文件)总结 概念 scp是secure copy的简写&#xff0c; 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。scp 是加密…

快速实现两台Linux系统之间的传输文件

文章目录 前言一、ssh协议介绍1、什么是ssh协议&#xff1f;2、ssh协议使用介绍3、scp指令使用介绍 二、实验步骤1、安装虚拟机&#xff0c;分别安装linux2、开启ssh协议3、查看ip地址4、文件传输 总结 前言 最近开始用linux做实验啦&#xff0c;实现了用ssh协议的两个liunx系统…

两台Linux系统之间传输文件的几种方法

scp传输 当两台LINUX主机之间要互传文件时可使用SCP命令来实现 scp传输速度较慢,但使用ssh通道保证了传输的安全性 复制文件 将本地文件拷贝到远程 scp 文件名 –用户名计算机IP或者计算机名称:远程路径 从远程将文件拷回本地 scp –用户名计算机IP或者计算机名称:文件名 …

Linux之两个Linux服务器之间互传文件

1.当从一个Linxu服务器传输文件到另一个服务器上 现在有128和129两个文件夹&#xff0c;128服务其中有m文件夹以及其中对应的文件 128服务器 129服务器&#xff08;没有m文件夹及其中文件&#xff09; 把aaa.java文件传输到129的opt目录下 //scp 文件名称 root服务器ip&…

Linux(传输层二继续讲TCP)

文章目录 0. 前言1. 流量控制2. 滑动窗口2-1 基础2-2 重传 3. 拥塞控制4. 延迟应答5. 捎带应答6. 面向字节流7. 粘包问题8. TCP异常情况9. TCP小结10. 基于TCP应用层协议11. TCP/UDP对比 0. 前言 上一章我们主讲了TCP,本章我们继续 链接&#xff1a;https://blog.csdn.net/Din…

Linux(传输层二)

文章目录 0. 前言1. TCP协议1-1 TCP协议段格式1. TCP如何解包&#xff1f;2. TCP协议如何交付&#xff08;应用层- - 客户&#xff09;&#xff1f;3. 如何理解报文本身&#xff1f;4. 如何理解报文字段&#xff1f; 1-2 确认应答(ACK)机制1-3 超时重传机制1-4 连接管理机制1. …

两台linux服务器之间传输文件的几种方法

打开powershell, 开始连接服务器 ssh root192.168.7.204 然后输入密码后就进来了&#xff0c;进入之后找到你要传输文件的位置 接下来我要将这个包传到另一个环境中去&#xff0c;有以下几种方法 scp 示例&#xff1a; 将本地服务器的文件传向另一个服务器 wget 【用法】 wget是…

操作:FTP服务器的搭建

实验目的&#xff1a; 掌握FTP服务器的配置方法、掌握FTP配置基于虚拟用户的服务器搭建方法 实验要求&#xff1a; 以学号和姓名为虚拟用户的FTP服务器搭建实现利用不同虚拟用户登录FTP服务器实现不同用户的权限控制 实验步骤&#xff1a; 一、 搭建一台FTP服务器&#xf…