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

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

大家好,我是德莱问。

加油哦,周末愉快~

相关推荐
别说我什么都不会12 小时前
ohos.net.http请求HttpResponse header中set-ccokie值被转成array类型
网络协议·harmonyos
码是生活13 小时前
鸿蒙开发排坑:解决 resourceManager.getRawFileContent() 获取文件内容为空问题
前端·harmonyos
鸿蒙场景化示例代码技术工程师13 小时前
基于Canvas实现选座功能鸿蒙示例代码
华为·harmonyos
小脑斧爱吃鱼鱼14 小时前
鸿蒙项目笔记(1)
笔记·学习·harmonyos
鸿蒙布道师14 小时前
鸿蒙NEXT开发对象工具类(TS)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
zhang10620915 小时前
HarmonyOS 基础组件和基础布局的介绍
harmonyos·基础组件·基础布局
马剑威(威哥爱编程)15 小时前
在HarmonyOS NEXT 开发中,如何指定一个号码,拉起系统拨号页面
华为·harmonyos·arkts
GeniuswongAir16 小时前
Flutter极速接入IM聊天功能并支持鸿蒙
flutter·华为·harmonyos
90后的晨仔20 小时前
鸿蒙ArkUI框架中的状态管理
harmonyos
别说我什么都不会1 天前
OpenHarmony 5.0(API 12)关系型数据库relationalStore 新增本地数据变化监听接口介绍
api·harmonyos