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运行时对应的依赖就可以啦。

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

大家好,我是德莱问。

加油哦,周末愉快~

相关推荐
枫叶丹43 小时前
【HarmonyOS之旅】HarmonyOS开发基础知识(三)
华为od·华为·华为云·harmonyos
SoraLuna8 小时前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
开发语言·macos·ui·华为·harmonyos
AORO_BEIDOU11 小时前
单北斗+鸿蒙系统+国产芯片,遨游防爆手机自主可控“三保险”
华为·智能手机·harmonyos
博览鸿蒙12 小时前
鸿蒙操作系统(HarmonyOS)的应用开发入门
华为·harmonyos
Damon小智20 小时前
HarmonyOS NEXT 技术实践-基于基础视觉服务的多目标识别
华为·harmonyos
爱笑的眼睛112 天前
uniapp 极速上手鸿蒙开发
华为·uni-app·harmonyos
K.P2 天前
鸿蒙元服务从0到上架【第三篇】(第二招有捷径)
华为·harmonyos·鸿蒙系统
K.P2 天前
鸿蒙元服务从0到上架【第二篇】
华为·harmonyos·鸿蒙系统
敲代码的小强2 天前
Flutter项目兼容鸿蒙Next系统
flutter·华为·harmonyos
程序猿会指北2 天前
纯血鸿蒙APP实战开发——Text实现部分文本高亮和超链接样式
移动开发·harmonyos·arkts·openharmony·arkui·组件化·鸿蒙开发