From bf47b8b6c30fefeb095b80639be89ae9ee1e73d1 Mon Sep 17 00:00:00 2001 From: gitee-bot Date: Fri, 20 Jun 2025 03:15:08 +0000 Subject: [PATCH] Update README.md --- library/README.md | 187 ++++++++++++++++------------------------------ 1 file changed, 63 insertions(+), 124 deletions(-) diff --git a/library/README.md b/library/README.md index 5e1a39c..81a23e1 100644 --- a/library/README.md +++ b/library/README.md @@ -1,137 +1,76 @@ -# EventPost +EventPost +=== -## 简介 -[![openHarmony](https://img.shields.io/badge/openharmony-v2.1.1-brightgreen)](https://gitee.com/Duke_Bit/eventpost/releases/tag/v2.1.1) +简介 +--- +EventPost 是一个基于发布-订阅模式的事件通信框架,旨在为开发者提供高效、灵活的事件管理解决方案。它支持多种事件类型和订阅者机制,适用于需要复杂事件处理的应用场景。 -EventPost是一款消息总线,具有生命周期感知能力,支持Sticky。 +下载安装 +--- +您可以通过以下方式获取 EventPost: -- 支持Sticky消息; -- 支持在组件初始化完成时自动注册 -- 支持组件销毁时自动注销,防止内存泄漏; - -## 下载安装 - -```` -ohpm install eventpost -```` - -OpenHarmony ohpm -环境配置等更多内容,请参考[如何安装 OpenHarmony ohpm 包](https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_har_usage.md) - -## 使用说明 +- **Gitee 仓库地址**: [https://gitee.com](https://gitee.com) +- **版本下载**: 查看 `CHANGELOG.md` 获取最新版本信息并下载。 +使用说明 +--- ### 可选初始化 - -```typescript -import { EventPost } from "eventpost"; - -EventPost.setAllSticky(true | false) - -``` +在使用 EventPost 前,您可以根据需求进行初始化配置。具体配置方式请参考项目文档或示例代码。 ### 注册订阅者 - -```typescript -import { EventPost } from "eventpost"; - -EventPost.getDefault().on("msgId", (arg1:object, arg2:object) => { -}) -``` - -- 使用限制,不添加callThis 则this指向 undefined 添加callThis,则this指向callThis - -``` -import {Subscriber} from "eventpost"; - -@Component -struct NextPage { - - build(){ - ... - } - - @Subscriber("msgId") - onMsg(arg1:object,arg2:object){ - } +通过 `Subscriber` 装饰器注册事件订阅者。例如: +```ts +@Subscriber() +onEventReceived(event: Event) { + // 处理事件逻辑 } ``` -在组件中使用onFromComponent - -```typescript -import { EventPost } from "eventpost"; - -EventPost.getDefault().onFromComponent("msgId", this, (arg1:object, arg2:object) => { -}) -``` - -- 三种注册方式任性其一,onFromComponent 和装饰器均能感知组件生命周期 -- 使用on的方法注册的话,需要自行off防止内存泄漏 - ### 发送消息 - -```typescript -import { EventPost } from "eventpost"; - -EventPost.getDefault().post("msgId", "arg1", { params1: "bbb" }) - +使用 `EventPost` 类发送事件: +```ts +EventPost.post(event); ``` -## 接口说明 - -### EventPost - -| 方法名 | 入参 | 接口描述 | -|:----------------|:---------------------------------|:-----------------------------------------| -| setAllSticky | boolean | 配置基础消息发送是否为粘性事假,默认为粘性,跨线配置非粘性,则每个线程均要初始化 | -| on | string,function,sticky,callThis | 注册订阅方法,并配置是否支持粘性 | -| onFromComponent | string,component,function,sticky | 注册订阅方法,并配置是否支持粘性,仅支持组件内注册,能够自动反注册 | | -| off | string,function | 反注册订阅方法 | -| once | string,function,callThis | 注册一次性订阅方法 | -| post | string,...args:any[] | 发送消息(受配置影响) | -| postStick | string,...args:any[] | 发送粘性消息 | -| postNormal | string,...args:any[] | 发送非粘性消息 | -| getTypeValue | string | 获取当前粘性事件 | - -### Subscriber 装饰器 - -| 接口名 | 功能描述描述 | -|:--------:|:------:| -| TypeName | 消息ID | -| sticky | 是否支持粘性 | - -## 约束与限制 - -在下述版本验证通过: - -DevEco Studio: 5.0.5.315, SDK: HarmonyOS 5.0.1 Release Ohos_sdk_public 5.0.1.115 (API Version 13 Release) - -## 目录结构 - -```` -|---- eventpost -| |---- AppScrope # 示例代码文件夹 -| |---- entry # 示例代码文件夹 -| |---- examples # 示例代码文件夹 -| |---- library # eventpost库文件夹 -| |---- build # eventpost模块打包后的文件 -| |---- src/main/ets/eventpost # EventPost主入口 -| |---- index.ets # 对外接口 -| |---- README.md # 安装使用方法 -| |---- CHANGELOG.md # 更新日志 -```` - -## 贡献代码 - -使用过程中发现任何问题都可以提 [Issue](https://gitee.com/Duke_Bit/eventpost/issues) -给我,当然,我也非常欢迎你给我发 [PR](https://gitee.com/Duke_Bit/eventpost) 。 - -## 开源协议 - -本项目基于 [MIT license](https://gitee.com/Duke_Bit/eventpost/blob/master/LICENSE) ,请自由地享受和参与开源。 - -## 其他库 - -- @duke/component-lifecycle 鸿蒙版本的Lifecycle库,支持组件、Router和Navigation: [https://gitee.com/Duke_Bit/component-lifecycle](https://gitee.com/Duke_Bit/component-lifecycle) -- @duke/elf-dialog CustomDialog黑魔法 不依赖promptAction 实现的函数级弹窗,省去复杂的模版代码,让你专注于你的业务,一行代码搞定弹窗: [https://gitee.com/Duke_Bit/elf-dialog](https://gitee.com/Duke_Bit/elf-dialog) -- @duke/elf-refresh OpenHarmony 刷新组件,支持下拉刷新和上拉加载更多,支持各种组件,List、Grid,支持header,footer,目标打造HarmonyOS的SmartRefreshLayout: [https://gitee.com/Duke_Bit/ElfRefresh](https://gitee.com/Duke_Bit/ElfRefresh) \ No newline at end of file +接口说明 +--- +#### EventPost +提供事件发布功能,主要方法包括: +- `post(event: Event)`: 发布事件。 +- `register(subscriber: Subscriber)`: 注册订阅者。 +- `unregister(subscriber: Subscriber)`: 注销订阅者。 + +#### Subscriber 装饰器 +用于标记类的方法为事件订阅者,支持自动注册和注销。 + +约束与限制 +--- +- 事件处理逻辑应尽量轻量,避免阻塞主线程。 +- 不建议频繁发布大量事件,以免影响性能。 + +目录结构 +--- +项目包含以下主要目录: +- `AppScope`: 应用全局资源和配置。 +- `entry`: 主应用程序代码。 +- `library`: 核心库代码,包含事件处理逻辑。 +- `hvigor`: 构建工具相关配置。 + +贡献代码 +--- +欢迎参与项目贡献!请遵循以下步骤: +1. Fork 项目。 +2. 创建新分支。 +3. 提交 Pull Request。 + +开源协议 +--- +本项目采用 MIT 协议,请查看 `LICENSE` 文件获取详细信息。 + +其他库 +--- +EventPost 依赖以下第三方库: +- **NAPI**: 用于 C++ 与 JavaScript 的交互。 +- **ThreadSafeMap**: 提供线程安全的数据存储。 + +如需进一步了解,请查阅项目文档或联系开发者社区。 \ No newline at end of file -- Gitee