关注前端开发的同学,一定听过近些年,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!

鸿蒙ArkUI即将取代Java UI?相关推荐

  1. 七、华为鸿蒙HarmonyOS应用开发之Java UI框架、常用Text组件和Button组件使用

    一.Java UI框架概述 应用的Ability在屏幕上将显示一个用户界面,该界面用来显示所有可被用户查看和交互的内容. 应用中所有的用户界面元素都是由Component和ComponentConta ...

  2. HarmonyOS开发详解(四)——鸿蒙Page Ability功能及UI界面开发详解

    HarmonyOS里面的界面通过Page Ability和Java UI一起来实现:讲述Page Ability就离不开Ability.在HarmonyOS里面把各种具备的能力进行抽象,叫做Abili ...

  3. python排名上升_Python在TIOBE Index排名或將取代Java成為第2名

    Java在熱門程式語言排行榜Tiobe Index的百分比持續往下,在5月的時候,不只將第1名的位置讓給了C語言,現在受歡迎程度穩定上升的Python,已經迎頭趕上Java,依趨勢來看,Python可 ...

  4. 鸿蒙os即将升级,央视爆料鸿蒙OS即将升级,荣耀智慧屏强大自研开启国货新时代...

    近日,华为自研的鸿蒙系统成为科技行业关注的焦点.2019年的华为开发者大会上,鸿蒙1.0惊艳亮相,具有轻量化.小巧.功能强大.微内核等优势,并且率先应用于荣耀智慧屏上.8月28日,央视播出对华为IoT ...

  5. android enum java包_Android @IntDef注解取代Java enum枚举提高性能详解

    Android @IntDef注解取代Java enum枚举提高性能 为提高Android性能,Android官方建议使用@IntDef注解替代Java的enum枚举.@IntDef的使用给出一个例子 ...

  6. 强势崛起的Python会在十年内取代Java吗?

    现在最火的程序设计语言是什么?当然是--Python.你知道吗?现在连小学生都开始学Python了.Python在编程语言排行榜上也一路高歌猛进,蹿升到了第四的位置,现在除了老牌的Java.C和C++ ...

  7. 什么时候可以升级HarmonyOS,华为鸿蒙OS即将迎来升级 手机版本或仍需时间

    原标题:华为鸿蒙OS即将迎来升级 手机版本或仍需时间 在2019年的华为开发者大会上,华为消费者业务CEO余承东正式对外发布了HarmonyOS.时隔一年后,华为开发者大会2020即将拉开帷幕.此次大 ...

  8. 华为鸿蒙应用市场抽成,谷歌宣布抽成30%,开发者把华为鸿蒙看做是取代安卓的唯一救星...

    都知道苹果最近因为抽成30%而被围攻,才不得已宣布暂停部分应用的抽成30%的规则,库克焦头烂额的同时,谷歌却要迎着炮火宣布将和苹果一样抽成30%,并且规定在谷歌应用商店的应用,必须使用谷歌自己的支付系 ...

  9. 鸿蒙系统即将发布,华为鸿蒙商标获转让

    6月1日消息,华为鸿蒙系统即将发布,鸿蒙商标所属权也终于尘埃落定. 早在2010年"鸿蒙"商标就已经被注册,华为2019年申请的"鸿蒙"相关商标出现了商标驳回或 ...

最新文章

  1. STM32CubeMX简介、下载及安装(NB-IoT专栏—基础篇3)
  2. 全长转录组测序在植物中的应用研究进展 赵陆滟,曹绍玉,龙云树,张应华,许俊强
  3. 跟我学,轻松安装开源ERP软件Open ERP
  4. 一睹为快 | 施耐德电气全生命周期智能制造解决方案亮相线上工博
  5. 快速实现手势解锁功能
  6. C#LeetCode刷题之#682-棒球比赛(Baseball Game)
  7. Unity官方宣传片Adam 播放地址
  8. 找回计算机管理账户,怎样找回原来的电脑用户账号?
  9. 只显示 前100个字 java 实现截取字符串!使用! c:if test=${fn:length(onebeans.info)100 }${ fn:substri...
  10. 去掉超链接或图片热点链接虚线框
  11. java编程思想快速排序_快速排序里的学问:快速排序的过程
  12. acs880变频器选型手册_设备安装:变频器调试成功就差这一步了
  13. 51单片机蜂鸣器播放音乐
  14. 24点自动出题,可打印,A4排版
  15. 使用 TiDB 构建实时应用
  16. 鸿蒙天钟小白图片,果然又一令人震惊的取名方式-“小白”
  17. AD9854的工作原理和应用电路图
  18. matlab梯形法数值积分,数值积分(梯形法)
  19. SQL数据计数(count)
  20. 如何一键远程开机,远程唤醒功能

热门文章

  1. python会计凭证_根据会计法律制度的规定,下列关于原始凭证的表述中,正确的是()。...
  2. C语言真的存在趋向于运算符吗?
  3. U盘作为启动盘使用GRUB2 引导 iso 文件安装各种系统
  4. 怎么电脑计算机管理员去掉,电脑取消管理员密码设置在哪里
  5. 数据库系统日志的处理和作用
  6. 阿里研发工程师JAVA暑期实习二面
  7. if - else语句
  8. 电子台账:模板制作之二——行过滤(垂直过滤)
  9. 小朋友几岁学机器人编程
  10. 迈高图手机版_迈高图|地区工具电脑版下载_最火软件站