鸿蒙应用开发-结构入门

148 阅读3分钟

前言

简述鸿蒙Stage应用结构,我看的时候官方主推Stage模型,如有错误还望多多包涵指正

应用两大模块

app 和 module 模块

app

这个模块用于做全局性配置与存放全局资源

module

此模块用于应用开发,可以同时存在多个,之所以会存在多个简单来讲是因为设备类型多比如手机、平板、手表、车机等

开发这类模块的类型被称为 Ability类型

另一类则是Library类型,此类型是对 Ability类型代码通用逻辑的补充,你想你的平板与手机端虽然界面都是单独的,但逻辑可能并不是单独的此时你需要抽出公共逻辑时,此类型Library Module就派上用场了,你总不会想三个端的代码 复制粘贴三份,改一个逻辑改三遍吧!

Ability类型系列

它打包以后生成hap包,可以简单理解为apk应用包

它下面分为 entry 和 feature 两种类型的hap包, 一个设备下的应用可以包含 一个entry hap包 和 若干个 feature hap包。

相当于 一个主应用可以捆绑多个子应用。

类似场景你可以参考 从主应用点击视频 跳转到 子应用去播放,当然你喜欢堆hap包很大你可以漠视feature,因为它目前还不适合你

Library类型

简单说就是抽离公共逻辑用的,然后抽离出的逻辑如何应用到hap包中,是像类似WEB容器的node_modules 打包到一起造成hap体积增大呢,还是说独立出来打包成一个文件供所有 module 引用呢! 于是就分成了Static Library(har) 和 Shared Library(hsp) 两种包,这两种包可以相互转换,官方提供了示例。

如果你有 npm 等包管理器基础或者开发经验你就大概能直接了解设计这个包为了干啥,复用呗,哪种复用方式好用哪种。

扩展阅读Ability类型

此为扩展简单深入了解一下hap应用下包含什么,学习开发第一步就是问我的界面怎么写,扩展就是为了讲怎么写界面 hap应用中 可以包含多个 UIAbility 这个就是你写界面用到的组件,它里面包含了你所有的界面功能。

然后一个 UIAbility 会对应创建一个 windowStage窗口 来显示和加载@Entry @Component的界面

那么多个 UIAbility 是啥意思,见过浏览器没,见过多个标签页没,你不想思考你就可以理解为多个标签页,然后多个标签页交互,如果你非要犟为什么一个标签不把事情做完了那么你目前只适合一个 UIAbility 开发。

扩展阅读还有 ExtensionAbility(特定场景的定制UI)、AbilityStage(一开始用于初始化module模块)以后再继续写。

后言

按照我理解的逻辑来讲,鸿蒙的架构还是很不错的,把我遇到的项目问题都解决了,我认为一开始必须搞明白结构问题,不然后面越学习越迷糊。

他做的太全面,全面到你不了解完基础架构你越看越懵,了解完这些你就可以明确自己关注的点,我就看entry 下面的 UIAbility 其他的扩展我一概先不学,我要先做出来界面,学会路由跳转再去学习高级的姿势。

下面我会再继续写 入门级的UI界面开发在这里插入代码片