HarmonyOS应用开发-多模块开发

HarmonyOS应用开发是目前是最火、最有前景的方向,现在入门鸿蒙开发还来得及。鸿蒙开发官网:developer.huawei.com/consumer/cn

大家好,我是德莱问,最近在尝试开发鸿蒙app,写文章主要是为了记录下自己的本周所学,对本周所了解到的知识有所回顾和整理归纳。

之前我是一个前端开发工程师,在现在鸿蒙大火的趋势下,现在转战鸿蒙,从零开始,小白做起,如果你也对鸿蒙感兴趣,欢迎点赞关注。正文从这里开始~

多模块划分与创建

什么是多模块呢??

通常我们的app分发会有多个场景,如手机(phone)、手表(watch)、平板(ipad)、电脑(computer)等等,我们希望的是可复用的代码直接使用,而不是写多次,既不统一,也不方便维护和开发,在不同的场景下面可以进行不同的处理,但是会有一些公有的逻辑可以抽离为公共模块,鸿蒙开发此次提供了多模块的开发模块,使得我们在开发应用的时候,可以选择性的使用多个模块的组合,打包为一个app。

多模块的创建

在工程下面直接右键就可以新建module。

选择module后,会弹出一个弹窗选择新建哪种module。截图如下:

我们通常会使用到两种module,

  • 对于主入口,我们需要选择的是Empty Ability ,这里是我们的主入口,每个应用在正常情况下只需要一个ability即可,作用就是我们的app运行时的入口,对应的就是上面的某种场景,如手机(phone)、手表(watch)、平板(ipad)、电脑(computer)等等。
  • 其他情况下我我们需要选择的是Shared Ability ,这里会创建我们各种共用的模块,也就是此文中所要说明的多模块,如工具库(utils)、网络层(network)、服务层(service)、公共组件(uiComponent)等等。这些属于比较基础的,所有的app都会用到的基础能力,当然最好是再建设一个model层,存储一些类型文件、常量配置、枚举等等。这样用起来可能会更加舒服哦~

实战案例,多模块划分

上面我们了解完什么事多模块和模块的创建后,我们来看下实战的demo,项目截图如下:

  • commons:我们把基础的,所有模块都会用到的放到了commons下面,这里面包括了数据存储、类型声明、网络请求、公共组件、工具库等。
  • features:我们把一些功能性一致的页面(单个页面和多个页面)的模块放到了features下面,这里面也属于公用的模块,但是这不是基建,而是业务逻辑。
  • products:我们把ability的两个场景放到了products下面,ipad和phone都属于入口ability,里面依赖不同的多个feature,通过组合的方式产出了两个app,一个是手机端phone,一个是平板端ipad。

使用多模块

上面说完了多模块的创建和划分,下面我们看下如何使用多模块。

引用

做过前端的,就会看着比较简单了,因为每个模块下面都有一个package.json5的文件,这里面配置了对应的dependence.

json 复制代码
{
  "license": "",
  "devDependencies": {},
  "author": "",
  "name": "phone",
  "description": "Please describe the basic information.",
  "main": "",
  "version": "1.0.0",
  "dependencies": {
    "@ohos/activity": "file:../../features/activity",
    "@ohos/utils": "file:../../commons/utils",
    "@ohos/discover": "file:../../features/discover",
    "@ohos/mine": "file:../../features/mine",
    "@ohos/datastore": "file:../../commons/datastore",
    "@ohos/uicomponents": "file:../../commons/uicomponents"
  }
}

使用的时候,可以直接import即可。

typescript 复制代码
import { formatShowDate } from '@ohos/utils';

路由跳转

因为使用到了多模块,就不是简单的路由跳转了,简单的路由跳转如下:

css 复制代码
router.pushUrl({ url: 'pages/SafePage' });

多模块的路由跳转:

typescript 复制代码
// com.draven.demo
const bundleName = getBoundName();
 // topic为ThemeSettingPage所在页面的module
const page = '/topic/ets/pages/ThemeSettingPage';

router.pushUrl({ url: `@bundle:${bundleName}${page}` });

编译构建

点击工具栏,run => Edit configurations,出现弹窗如下:

记得勾选上 Deploy Multi Hap Packges ,然后在module下拉框内选中phone运行时对应的依赖就可以啦。

本周就先说这些,不断学习,不断积累。

大家好,我是德莱问。

加油哦,周末愉快~

相关推荐
SameX6 小时前
HarmonyOS Next 安全生态构建与展望
前端·harmonyos
SameX6 小时前
HarmonyOS Next 打造智能家居安全系统实战
harmonyos
Random_index14 小时前
#Uniapp篇:支持纯血鸿蒙&发布&适配&UIUI
uni-app·harmonyos
鸿蒙自习室17 小时前
鸿蒙多线程开发——线程间数据通信对象02
ui·harmonyos·鸿蒙
SuperHeroWu719 小时前
【HarmonyOS】鸿蒙应用接入微博分享
华为·harmonyos·鸿蒙·微博·微博分享·微博sdk集成·sdk集成
zhangjr05751 天前
【HarmonyOS Next】鸿蒙实用装饰器一览(一)
前端·harmonyos·arkts
诗歌难吟4641 天前
初识ArkUI
harmonyos
SameX1 天前
HarmonyOS Next 设备安全特性深度剖析学习
harmonyos
郭梧悠1 天前
HarmonyOS(57) UI性能优化
ui·性能优化·harmonyos
郝晨妤2 天前
鸿蒙原生应用开发元服务 元服务是什么?和App的关系?(保姆级步骤)
android·ios·华为od·华为·华为云·harmonyos·鸿蒙