您的位置:首页 > 财经 > 金融 > 开发者模式怎么开启_大连建设网水电官网查询_最新新闻热点事件2023_搜狗搜索旧版本

开发者模式怎么开启_大连建设网水电官网查询_最新新闻热点事件2023_搜狗搜索旧版本

2024/12/26 19:30:06 来源:https://blog.csdn.net/hzw2017/article/details/144359195  浏览:    关键词:开发者模式怎么开启_大连建设网水电官网查询_最新新闻热点事件2023_搜狗搜索旧版本
开发者模式怎么开启_大连建设网水电官网查询_最新新闻热点事件2023_搜狗搜索旧版本

前言

  • 源码:https://gitee.com/common-apps/ZRouter
  • OH:https://ohpm.openharmony.cn/#/cn/detail/@hzw%2Fzrouter

服务路由主要用于实现模块之间的通信,模块间是相互独立且不直接依赖于彼此。

首先确保路由插件在1.0.9版本及以上

一、添加配置

1、在entry模块的build-profile.json5文件的 buildOption 下配置需要动态import加载的模块,如下:

注意:是在buildOption节点下设置,不是buildOptionSet

  "buildOption": {"arkOptions": {"runtimeOnly": {// 配置本模块变量动态import其他模块名,要求与dependencies中配置的名字一致。"packages": [ "hara","harb","hspc" ]  }}}

二、初始化

在EntryAbility的onCreate()方法中初始化:

ZRouter.initialize((config) => {config.isLoggingEnabled = BuildProfile.DEBUGconfig.isHSPModuleDependent = true  config.loadDynamicModule = ['hara', 'harb', 'hspc']config.onDynamicLoadComplete = () => {console.log("已完成所有模块的加载")}
})

初始化配置参数说明如下:

 interface IConfigOptions {/*** 是否有依赖hsp模块*/isHSPModuleDependent: boolean/*** 是否打印日志*/isLoggingEnabled: boolean/*** 指定动态加载的模块名称,用于服务路由自动注册* 必须与dependencies的依赖名称保持一致*/loadDynamicModule: string[]/*** 延迟动态加载的时间,单位毫秒*/dynamicLoadDelayTime: number/*** 动态加载完成后回调函数*/onDynamicLoadComplete?: () => void}

到这里已完成了服务路由的初始化。

三、基本使用

1、在业务公共common模块定义下沉接口,需要继承与IProvider接口

import { IProvider } from "@hzw/zrouter";export interface IHarAService extends IProvider {showToast(msg: string): voidgetUserInfo(): Promise<string>
}

记得在common模块的Index.ets文件导出这些下沉接口。

2、在业务模块(harA)实现IHarAService接口

import {  Service } from "routerapi";
import { promptAction } from "@kit.ArkUI";
import { IHarAService, RouterConstants } from "common_library";@Service({ name: RouterConstants.SERVICE_HARA_IMPL })
export class HarAServiceImpl implements IHarAService {showToast(msg: string): void {promptAction.showToast({ message: msg })}getUserInfo(): Promise<string> {return new Promise<string>((resolve, reject) => {resolve("hello harmonyos")})}}

实现类必须通过@Service注解进行标注,支持常量设置, 常量必须以类的方式管理 ,export导出暂不支持default声明。

3、在业务模块(harB)中调用,通过ZRouter的getService()方法获取定义的服务实例,代码如下:

Button('模块间通信-调用harA模块的异步方法').onClick((event: ClickEvent) => {ZRouter.getService<IHarAService>(RouterConstants.SERVICE_HARA_IMPL)?.getUserInfo().then((r)=>{console.log("调用harA模块的异步方法:  ", r)promptAction.showToast({ message: "来自harA的数据: " + r })})
})Button('模块间通信-调用harA模块的同步方法').onClick((event: ClickEvent) => {ZRouter.getService<IHarAService>(RouterConstants.SERVICE_HARA_IMPL)?.showToast("hello ZRouter!")
})Button('模块间通信-调用hspC模块的异步方法').onClick((event: ClickEvent) => {ZRouter.getService<IHspCService>(RouterConstants.SERVICE_HSPC_IMPL)?.getDataFromHspC().then((r) => {promptAction.showToast({ message: r })})
})

其他

  • 鸿蒙ZRouter动态路由框架—NavDestnation页面模板化
  • 鸿蒙ZRouter动态路由框架—服务路由

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com