探索HarmonyOS NEXT:开启高效多端开发之旅

在过去的两个月里,我所以作为一名大四在读的前端开发初学者,成功开发上架了一款纯血鸿蒙应用——随易App。下面将通过我两个月来的亲身体验,为大家详细介绍我在开发过程中所体会到的
ArkUI框架开发的各项优势。

盘点ArkTS 的优势:

(1)简洁高效的图形化布局

  1. 熟悉的声明式语法:对于像我这样前端出身的开发者来说,ArkTS 的声明式语法与前端开发有很多相似之处,使得图形化布局较为简单。即是整体写法不同,代码整体结构性有所降低但同样的"所见即所得"的声明式写法,以及与CSS一致的属性名称,让页面构建变得容易。
  2. 突出的图形化界面优势:与传统安卓开发的复杂图形化界面相比,ArkTS 让构建简单页面变得相对容易。它以更简洁的语法和直观的布局方式,提高了开发效率。
  3. 逻辑与样式分离理念:ArkUI 主张逻辑与样式分离,让负责逻辑代码的开发者更专注于编程,提高了开发效率,也使代码更易于维护和扩展。

(2)便捷灵活的资源调用

  1. 便携性:ArkTS 中有新的数据类型 Resource,可方便地调用 resources 文件夹下的资源,如字符串、图片、音乐、视频等。使用统一的r(“app.media.名称”)方法调取,开发者调用时几乎只用写资源名称,比相对路径更容易使用,极大地提高了开发效率。在rawfile文件夹下则可以存放html网页用于嵌入式显示。
  2. 国际化:通过以上资源文件夹的特性,我们可以更轻松的进行app的多语言适配。例如在 resource 文件夹下两个文件夹分别命名为 ZH 和 EN,它们中分别放置同一个名称的不同资源,app会根据用户设备语言来自动判断导入字符串或其它资源。非常方便地实现 app 的多语言开发,使应用能够在全球范围内更广泛地被使用。
  3. 暗夜模式:与国际化的实现同理,可以通过该特性区分设备的白天 / 黑夜模式、设备类型等来进行资源访问。比如要设置暗夜模式,可以在 dark 文件夹里编辑相应的颜色的值和替换不同的图片文件;同样的使用这个特性也可以很方便地根据设备类型更改文字大小和页面布局等功能,让应用内资源能够根据不同的环境和设备特点进行自适应调整,为用户带来更好的体验。

(3)强大的数据驱动更新能力

  1. 数据驱动:双向数据绑定模式,实现高效的界面响应。由于声明式语法的特性,组件的属性可以绑定变量。当变量发生变化时,界面能够自动更新,极大地提高了开发效率和用户体验。例如动态时钟,点赞弹小爱心等等应用中的交互效果都可以通过此种方式实现。并支持多种数据绑定模式,从而方便的实现组件之间的传参,数据的保存等。

  2. 渲染控制

    • 条件渲染可以决定组件是否渲染以及更改所渲染的组件。例如点击展开详情这样的功能就可以通过If Else这样的条件渲染来轻松实现。
    • 循环渲染常见于新闻列表、短视频等界面,可根据用户请求数据进行列表渲染。这种数据驱动的模式,对于我这种前端小白来说简直是福音,我之前了解到Vue也是用此种模式。ArkTS可以通过自带的懒加载LazyForEach来更好的优化性能和体验。
    • 通过数据驱动和渲染控制的配合就可以很容易实现我在网页中常常需要写很多行代码才能实现的功能,就比如我们设计一个图片点击后切换样式。这是一个数据驱动很好实现的功能,但在前端开发中,我需要先给图片绑定选择器,给按钮绑定函数。再在函数中获取图片对象,再更改对象的样式属性,要实现复杂功能则会更复杂。
  3. 监听断点

    配合上述特征,通过监听设备的属性和用户需求等因素来改变绑定的变量,可以出色的实现响应式页面开发。例如:

    • 观察华为官方的很多软件在大屏幕下会将导航栏设置到窗口左侧。基于 ArkTS 的一多布局,只需监听断点,当尺寸大于 sm 或指定的值时,设置 tabs 组件的 vertical 属性为 true 就能相对轻松地实现。这种自适应的设计,让应用在不同的设备上都能呈现出较好的效果,无论是在手机上还是在平板电脑、大屏幕显示器上,都能为用户带来较为舒适的使用体验。
    • 可以根据设备尺寸来决定列表组件显示的列数,轮播图组件显示的图片张数。很多细枝末节的微小属性也可以根据监听断点实时改变,使应用能够自动调整界面的布局和展示效果,适应不同的设备和使用场景。做到更加无感的驱动更新页面,提升用户使用体验。其中最重要的断点监听将在下文的“一多”特性重点说明。

(5)实用的模块化开发

  • 模块开发可以让项目结构更加清晰,增强代码复用性并提高后续维护效率。借助之前提到的便捷数据绑定,各组件之间传参变的容易,进而也提升了模块化开发模式的。
  • 与 “一次开发、多端部署” 特性结合后,模块化开发变得实用。通过一多特性和条件渲染,甚至可根据设备类型构建不同模块,实现个性化布局和功能。与循环渲染配合优势更加明显,方便开发者关注正在开发的内容。
  • 另外还有应用级的分包加载,可以把应用打成不同的包。Ark框架中有hsp、har、hap几种不同的包类型,各司其职。开发者可以分块开发、按需加载,提高项目的结构性和可维护性,也方便团队成员共同开发。

(6)灵活的数据保存方式

  • 作为一个前端开发者,数据保存对我来说是个新领域。ArkUI开发提供多种数据本地化方式,如用户首选项、关系型数据库、键值型数据库。兼容性高,操作方便,开发者可以根据实际需求选择合适的方式来存储数据,满足不同应用场景下的数据存储需求。
  • 通过数据持久化可以方便的保存和管理数据。一个简单的例子是让用户更改应用默认字体大小,通过用户首选项来保存和调取数据,在通过持久化将数据保存到本地,app启动时请求用户首选项对应的值便可以轻松实现该功能。这方面我着实不懂,只用过用户首选项,就不多说了。

(7) “一次开发、多端部署”特性

终于到了我心心念念的一多也就是“一次开发、多端部署”。这个要分为好几个部分详细展开来说了

  • 首先是页面级一多,这在我们前端里很常见了,在前端谓之响应式开发。对于电脑用户可能没什么新鲜的,尤其是对于各种各样的网页,但对于开发者这个一多开发的使用有很大优势。你可以通过断点、媒体查询、栅格布局这等方式便捷的对于不同设备进行布局调整。响应式布局在我们前端开发中很常见,但配合之前的驱动更新、断点监听等特性就可以达到1+1>2的效果!比如你可以直接根据设备尺寸来决定列表组件显示多少列,轮播图组件显示几张图等等。
  • 再者是工程级一多布局,在前面的模块化开发优势中我提到过分包加载等特性,借此可以实现工程的一多。但现阶段我不推荐这种模式。一来上述的页面一多布局开发很容易,二来未来的智能设备会更加多种多样,Next系统支持自由小窗,鸿蒙系统又主导了折叠屏。在这种情况下,使用页面一多布局,不仅可以胜任折叠屏与自由小窗,将来也可以很方便的在“鸿蒙”PC上使用。(所以我更推荐页面级的一多),这个功能我认为将来适配穿戴设备TV设备或是PC比较不错,但对于目前移动端的折叠屏、手机、平板,我认为最好使用同一个程序包。
  • 页面一多与其他能力配合:与模块化开发、数据驱动等优势结合,加上强大的官方和第三方库组件,能实现更多强大功能,请打开你的想象力。举一个我在昨天开发中的一个页面,页面的主体部分是一个列表组件。通过循环渲染我得到了一个数据驱动更新的列表,再通过一多布局能力实现手机上显示一列,折叠屏显示两列平板显示三列。这个功能的顺利开发得益于 一多布局能力、模块化开发、数据驱动等优势,也离不开强大的官方List组件,各种特性配合起来起到了质变效果。

(7)多语言混合开发

  • ArkUI 支持多语言混合开发,如 C++,为 PC 上的专业软件迁移至 HarmonyOS 提供便利。也为众多使用C++编写的游戏引擎的原生适配提供了便捷,加速了游戏的适配进度。
  • 有助于专业性、复杂性、综合性的应用开发。未来还将适配效率更高的仓颉编程语言,提高框架效率和生命力。这方面只了解个概念就不多扯了,大佬们请自行了解。

(8)强大的原生组件和第三方库

  • 原生组件的强大功能

    1. 丰富多样:ArkUI 的原生组件涵盖了各种常见的界面元素和交互功能。例如,navigation 导航组件既可以实现路由功能,又可以进行分栏展示,为应用的页面导航提供了灵活的方式。swiper 轮播组件可以指定显示的元素数量,能够轻松创建吸引人的图片轮播或内容展示效果。
    2. 高度可定制:原生组件支持丰富的自定义样式。开发者可以根据应用的设计需求,对组件的外观、行为进行精细调整。比如,可以修改组件的颜色、字体、大小、布局等属性,使组件与应用的整体风格完美融合。
    3. 配合一多布局:原生组件与 ArkTS 的一多布局特性配合默契。在不同设备上,通过一多布局可以实现不同的展示效果。例如,根据设备的屏幕尺寸和类型,自动调整导航栏的位置、轮播图显示的元素数量等,为用户带来自适应的优质体验。
  • 第三方库的优势

    第三方库为开发者提供了更多的功能选择和扩展。例如,在图形处理、数据可视化、网络请求等方面,第三方库可以弥补原生组件的不足,满足特定的业务需求。使用成熟的第三方库可以减少开发时间和工作量。开发者无需从头开始实现复杂的功能,而是可以直接集成第三方库,快速构建出功能强大的应用。HarmonyOS有许多第三方库拥有活跃的社区支持。开发者可以在社区中获取使用教程、解决问题的方法以及最新的更新信息。社区的反馈和贡献也有助于不断改进和完善第三方库,使其更加稳定和可靠。

    并且还有鸿蒙官方的SDK等支持,UP仅体验过Web,简而言之就是把登陆、扫码、调用摄像机、调用媒体调用文件等功能封装为一个个工具库,方便开发者调用各种功能。

(9)强大的编辑工具支持

  • 预览

    ArkTS的官方开发工具是DevEco Studio,该工具提供了多种预览模式。

    • 基础预览器:最基础的预览模式,该预览器的显示效果有较大局限,是最简单的效果预览。但该模式能够提供双向实时预览功能。这意味着开发者在进行代码编写和调整的过程中,可以立即看到界面的变化效果,无需频繁地进行编译和运行操作来查看最终结果。
    • 多设备预览:预览器还支持同时进行多设备预览,开发者可以在同一界面中查看应用在不同设备上的显示效果,例如手机、平板、折叠屏等。通过多设备预览,开发者可以针对不同设备的特点和屏幕尺寸,进行针对性的布局和功能调整,提高应用的兼容性和适应性。
    • 组件预览:进行界面预览时,还可以单独选中一个组件,通过预览器查看其在不同状态下的表现,如初始状态、交互状态等。这种直观的展示方式可以帮助开发者在不同设备上测试单个组件的兼容性。开发者可以选择不同的设备类型进行组件预览,查看组件在不同屏幕尺寸和分辨率下的显示效果,确保组件在各种设备上都能正常工作。对于复杂的界面布局,开发者可以通过组件预览快速定位和调试出现问题的组件。
    • 模拟器:对于开发者尤其是个人和小型团队来说,模拟器大大降低成本,避免了购买多种真实设备的高成本,经济高效。并且模拟器便捷性高,可随时启动,不受真实设备的充电、连接等限制,提高开发效率。多样性强,支持模拟多种鸿蒙设备类型,满足不同开发需求,还能灵活调整设备参数以模拟不同使用场景和设备性能,便于测试兼容性。但也要注意,模拟器与真机存在效果差异,一些功能不可在模拟器上使用,应用的后续调试课通过后文提到的云端调试来进行。
  • 丰富的语言支持:支持多种编程语言的代码开发和调试,如 Java、XML、C/C++、JavaScript、CSS 和 HML 等。这使得开发者可以根据项目需求和自身的技术背景选择合适的编程语言,提高开发的灵活性和效率。

  • 高效的开发流程

    • 一体化开发环境:集成了应用开发、编译构建、运行调试、性能优化等全流程功能,为开发者提供了一站式的开发服务。开发者可以在一个工具中完成从项目创建、代码编写到应用发布的整个过程,减少了开发过程中的工具切换和环境配置的时间成本。
    • 智能编码辅助:具备智能代码提示、自动补全、代码重构等功能,能够帮助开发者提高代码编写的速度和质量,减少代码错误。同时,还支持代码的实时预览和动态预览,方便开发者及时查看代码的效果。

该IDE还支持云开发等强大功能,通过以上特性还方便多设备一同开发。该IDE基于JetBrain的代码编辑器,需要打中文插件,优点是支持多种多样的插件。

(10)官方资源支持

  • DevEco CodeGenie:该AI助手插件支持代码生成、问题解答、卡片生成三大功能。注意,该插件也处于测试阶段,需要开发者在网站申请使用权限。
  • 云端调试:虽然高级的云开发我没用过,但云测试与云调试十分方便。云测试是开发者上传应用包等待测试结果即可,云调试则是相当于一台云手机。这两个功能对开发者有很多免费额度,都包含很多种机型,包括大量友商的安卓机型,对于安卓开发也非常友好。
  • 应用隐私政策:华为应用市场支持应用隐私政策的生成与托管,这个功能也是最近一个月新上的。可惜我是在买完服务器和域名,自己编辑好隐私政策,备案完网站和域名才出的这个功能,气死我了!!![哭]

(11)轻量的元服务开发模式

鸿蒙的元服务开发快速直达,简洁高效,无需安装即可使用,完整应用即可启动特定服务,提高使用效率,且系统可智能推荐,增加曝光机会。

开发优势:

  • 开发高效,聚焦核心功能,减少工作量。
  • 支持一次开发、多端部署,适配不同设备。
  • 集成便捷,可与鸿蒙系统其他功能服务集成,可以嵌入在其他应用内运行。如结合分布式技术实现跨设备协同。
  • 易获取流量,借助系统生态优势,通过智能推荐和搜索触达目标用户。

但同时也要注意,元服务开发有很多限制。部分组件和特性无法使用,最终软件包最高仅支持2M大小,更适合轻量化的应用或对技术较熟悉的开发人员。


写在最后:

学习经验分享

给各位分享一下学习经验那就是一定要多看开发文档,开发文档的指南和api参考,上面很多都有详细的示例,比很多课程还要完整清晰,看课之余一定要多看开发文档。还有要学以致用,技术学了一定要用!

一些吐槽

ArkUI中有很多同样功能的不同组件,导致实现一个功能的技术选择成了个小麻烦。比如计数器组件有两个完全不同的写法,弹窗组件有两套,页面路由也有两种不同的实现方式。这些应该是历史遗留问题,不过此文编辑的时候,最新文档已经对技术框架进行了更细致的介绍和分类,最近两个月文档保持着每周一次更新,着实感受到了工作人员的辛苦付出,致敬。

期待与展望

ArkTS 以其众多优势为开发者提供了高效、便捷的多端开发模式,伴随着Next系统也带来了更强大的例如“一多开发”、“应用接续”等强大特性。相信 ArkTS 未来会不断发展完善,为开发者带来更多便利和惊喜。也期待自己能更好地掌握 ArkTS 技术,为用户创造更优秀的应用程序。

我希望HarmonyOS的智能穿戴和电视等设备尽快支持新的ArkTS开发模式,希望编译器模拟器能更加强大,希望AI助手的能力可以进一步加强。另外就是希望ArkUI-X框架能够完善,通过原生鸿蒙打安卓的包,那画面我都不敢想有多美。最后也预祝NEXT系统顺利发布

ps:

经过两个月的开发实战和技术的不断深入理解,其实我还有另一个感悟,就是如果精力允许我好想再去学个Vue,上述的许多特性与Vue简直如出一辙。起初就是学了一些Vue才理解了Ark的强大特性,继而开始学习ArkUI,而现在则是同样掌握了一些Ark才想明白了Vue开发模式和思路的强大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值