HarmonyOS3.0App开发技术选择
时间:2023-03-14 11:37:07
科技观察
了解更多开源请访问:开源基础软件社区https://ost.51cto.com目前HarmonyOS3.0最新版本为Beta2,主要支持JavaUI和ArkUI(ArkDevelopmentFramework)用于鸿蒙App开发,ArkUI支持基于JS扩展的类Web开发范式和基于TS扩展(即eTS)的声明式开发范式。鸿蒙开源版本OpenHarmony已于2022年3月31日正式发布3.1发布版本,仅支持Javascript和eTS。本节以最简单的HelloWorld案例为基础,添加一个按钮,点击按钮改变文本内容。直观的对比感受一下这三种开发方式的区别。【源码地址:https://gitee.com/cloudev/harmonyos3/tree/master/1.1】。JavaUI开发方法初始代码:Java代码(\1.1\JavaUI\Hello\entry\src\main\java\top\cloudev\hello\slice\MainAbilitySlice.java)。包top.cloudev.hello.slice;导入ohos.agp.components.Button;导入ohos.agp.components.Text;导入top.cloudev.hello.ResourceTable;导入ohos.aafwk.ability.AbilitySlice;导入ohos.aafwk。content.Intent;publicclassMainAbilitySliceextendsAbilitySlice{@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);}@OverridepublicvoidonActive(){super.onActive();}@OverridepublicvoidonForeground(Intentintent){super.onForeground(intent);}}xml页面(\1.1\JavaUI\Hello\entry\src\main\resources\base\layout\ability_main.xml)。功能实现:在xml页面中加入按钮:在graphic目录下添加一个胶囊按钮背景(\resources\base\graphic\btn.xml),形状为矩形,圆角为100,颜色为蓝色:然后在java代码中添加按钮的点击事件代码,使得后面的文字“HelloWorld”变为“HelloJavaUI”按钮被点击://通过资源ID查找文本组件对象Texttxt=(Text)findComponentById(ResourceTable.Id_text_helloworld);//通过资源ID查找按钮组件对象Buttonbutton=(Button)findComponentById(ResourceTable.Id_btn_edit);//监听按钮点击事件button.setClickedListener(component->{//设置文本对象的文本txt.setText("HelloJavaUI");});JsUI的开发方法JsUI的HelloWorld页面由三个文件组成,分别是index.hml和index.css以及index.js(\1.1\JsUI\Hello\entry\src\main\js\default\pages\指数)初始代码:index.hml(页面布局):{{title}}
index.css(样式):.container{弹性方向:列;证明内容:居中;对齐项目:居中;宽度:100%;height:100%;}.title{字体大小:40px;颜色:#000000;opacity:0.9;}@mediascreenand(device-type:tablet)and(orientation:landscape){.title{font-size:100px;}}@mediascreenand(device-type:wearable){.title{font-size:28px;颜色:#FFFFFF;}}@mediascreenand(device-type:tv){.container{background-image:url("/common/images/Wallpaper.png");背景尺寸:封面;背景重复:不重复;背景位置:中心;}.title{字体大小:100px;颜色:#FFFFFF;}}@mediascreenand(device-type:phone)and(orientation:landscape){.title{font-size:60px;}}指数。js(逻辑代码):exportdefault{data:{title:""},onInit(){this.title='helloworld';}}在index.hml中添加按钮:
EditText在index.css中添加样式:.buttons{margin-top:30px;}在index.js中添加点击事件代码:handleClick(){this.title='hellojsUI'}eTS开发方法eTS的HelloWorld页面只需要一页(\1.1\ArkUI\Hello\entry\src\main\ets\default\pages\index.ets)初始代码:@Entry@ComponentstructIndex{build(){Flex({direction:FlexDirection.Column,alignItems:ItemAlign.Center,justifyContent:FlexAlign.Center}){Text('HelloWorld').fontSize(50).fontWeight(FontWeight.Bold)}.width('100%').height('100%')}}添加按钮布局,样式和逻辑代码也很简单,做一些就可以了对上述代码进行调整。功能实现:Button('EditText').margin({top:30}).onClick(()=>{this.msg='HelloArkUI'})显然,这三种开发方式中,JavaUI方法代码最复杂,其次是JsUI方式,华为最新的eTS方式代码最简洁,阅读自然。性能方面,华为官方表示ArkUI可以获得原生应用的性能体验,大家无需担心。在华为方舟开发框架概述中,有关于JsUI和eTS的对比和建议:类Web开发范式,采用经典的HML、CSS、JavaScript三阶段开发方式。使用HML标签文件进行布局构建,使用CSS文件进行样式描述,使用JavaScript文件进行逻辑处理。主要适用于界面比较简单的中小型应用程序的开发。声明式开发范式采用TS语言,扩展声明式UI语法,从组件、动画效果、状态管理三个维度提供UI绘制能力。UI开发更接近自然语义的编程方式,让开发者可以直观地描述UI界面,无需关心框架如何实现UI绘制和渲染,实现极简高效的开发。同时选择了带有类型注解的TS语言,引入了编译时的类型验证,更适合大型应用开发。声明式开发范式不需要JSFramework进行页面DOM管理,渲染更新环节更精简,占用内存更少。因此,建议开发者选择声明式开发范式来构建应用程序UI界面。显然,JavaUI开发方式主要适应于原本从事Android开发的同学,而JsUI开发方式主要适应于原本从事Vue和小程序开发的同学,让他们融入鸿蒙开发生态系统更快。然而,这只是权宜之计。最终,华为主推的鸿蒙开发语言是基于eTS的ArkUI开发方式。本教程将演示如何基于HarmonyOS3.0Beta版高效开发ArkUI(eTS)HarmonyApp。了解更多开源知识,请访问:开源基础软件社区https://ost.51cto.com。