Skip to content

Commit

Permalink
1
Browse files Browse the repository at this point in the history
  • Loading branch information
weixiangmeng521 committed Dec 22, 2023
1 parent bca2ae7 commit 64e314d
Show file tree
Hide file tree
Showing 15 changed files with 313 additions and 90 deletions.
85 changes: 54 additions & 31 deletions README-ja.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
# Teleport
# テレポート

- [English](README.md)
- [中文](README-zh.md)
- [英語](README.md)
- [中国語](README-zh.md)
- [日本語](README-ja.md)

[![npm version](https://badge.fury.io/js/@mwx47%2Fteleport.svg)](https://badge.fury.io/js/@mwx47%2Fteleport)
![NPM Downloads](https://img.shields.io/npm/dw/@mwx47/teleport)
![NPM License](https://img.shields.io/npm/l/@mwx47/teleport)
![GitHub Workflow Status](https://github.com/weixiangmeng521/teleport/actions/workflows/master.yml/badge.svg)
[![GitHub 仓库](https://img.shields.io/badge/GitHub-Repo-blue.svg)](https://github.com//weixiangmeng521/teleport)
[![npm バージョン](https://badge.fury.io/js/@mwx47%2Fteleport.svg)](https://badge.fury.io/js/@mwx47%2Fteleport)
![NPM ダウンロード数](https://img.shields.io/npm/dw/@mwx47/teleport)
![NPM ライセンス](https://img.shields.io/npm/l/@mwx47/teleport)
![GitHub ワークフロー ステータス](https://github.com/weixiangmeng521/teleport/actions/workflows/master.yml/badge.svg)
[![GitHub リポジトリ](https://img.shields.io/badge/GitHub-Repo-blue.svg)](https://github.com/weixiangmeng521/teleport)

**Teleport** は、TypeScript 向けの軽量で多機能なイベントハンドリングライブラリで、RxJS からインスパイアを得ています。このライブラリを使用すると、アプリケーション内でのイベントを効果的に管理および通信することができます。これにより、イベントマネージャーの単一かつ中央集権的なインスタンスが保証され、コードベースのさまざまなセクションでのイベントの調整とハンドリングが簡素化されます
**Teleport** は、TypeScript で作成され、RxJS からのインスピレーションを得た軽量で多機能なイベントハンドリングライブラリです。このライブラリを使用すると、アプリケーション内でのイベントの効果的な管理と通信が可能になり、シングルトンパターンを使用してイベントの調整と処理がコードベースのさまざまなセクションで簡略化されます

## 主な特徴

- **シングルトンデザイン**: シングルトンパターンを実装し、効率的なイベント管理のための統一された唯一のインスタンスを提供します
- **イベントキュー**: イベントハンドラのキューイングを容易にし、対応するイベントが作成される前にハンドラを追加できます。
- **簡単なイベント発生**: 関連するデータとオプションのコールバック関数を使用して簡単にイベントを発生させることができます
- **イベント登録**: 特定のイベントのハンドラを簡単に登録し、アプリケーション内のさまざまなシナリオに対応できます
- **メンテナンス**: 特定のイベントハンドラを削除したり、すべてのハンドラをクリアしたり、イベントマネージャ全体をリセットしたりするためのメソッドを提供します
- **シングルトン設計**: シングルトンパターンを実装し、効率的なイベント管理のために統一された単一のインスタンスを提供します
- **イベントキュー**: イベントハンドラのキューイングを可能にし、対応するイベントが作成される前にハンドラを追加できます。
- **簡単なイベント発射**: 関連するデータとオプションのコールバック関数を使用して簡単にイベントを発射できます
- **イベントの登録**: 特定のイベントのためのハンドラを簡単に登録し、アプリケーション内のさまざまなシナリオに対応しやすくします
- **メンテナンス**: 特定のイベントハンドラを削除し、すべてのハンドラをクリアし、イベントマネージャ全体をリセットするためのメソッドを提供します

このソリューションはRxJS や外部ライブラリに依存せず、独立しています
このソリューションは RxJS や外部ライブラリに依存していません

## インストール

Expand All @@ -39,30 +39,32 @@ import { Teleport } from '@mwx47/teleport';
const teleport = new Teleport();

teleport.receive('eventName', (data) => {
console.log('イベントデータ:', data); // ✅ イベントデータ: こんにちは、世界!
console.log('イベントデータ:', data); // ✅ イベントデータ: こんにちは、世界!
});

// データを送信
teleport.emit('eventName', "こんにちは、世界!");
```

### 遅延サブスクリプションのある例
### 遅延サブスクリプションの例
```typescript
import { Teleport } from '@mwx47/teleport';

const teleport = new Teleport();
// データを送信
teleport.emit('eventName', "こんにちは、世界!");

// 1000ms 遅れても、データを取得できます
// 1000ms 遅れていてもデータは取得できます
setTimeout(() => {
teleport.receive('eventName', (data) => {
console.log('イベントデータ:', data); // ✅ イベントデータ: こんにちは、世界!
// ハンドラを削除
teleport.removeHandle('eventName');
});
}, 1000);
```

### 複数のサブスクリプションのある例
### 複数のサブスクリプションの例
```typescript
import { Teleport } from '@mwx47/teleport';

Expand All @@ -74,9 +76,13 @@ teleport.emit('eventName3', "ロンドン!");

const subscriptions = ['eventName1', 'eventName2', 'eventName3'];
teleport.receive(subscriptions, (arg1:string, arg2:string, arg3:string) => {
console.log('こんにちは', arg1); // ✅ こんにちは 東京!
console.log('こんにちは', arg2); // ✅ こんにちは 中国!
console.log('こんにちは', arg3); // ✅ こんにちは ロンドン!


console.log('こんにちは', arg1); // ✅ こんにちは、東京!
console.log('こんにちは', arg1); // ✅ こんにちは、中国!
console.log('こんにちは', arg1); // ✅ こんにちは、ロンドン!
// ハンドラを削除
teleport.removeHandle(subscriptions);
});
```

Expand All @@ -88,22 +94,22 @@ teleport.receive(subscriptions, (arg1:string, arg2:string, arg3:string) => {
import { Teleport } from '@mwx47/teleport';
```

### シングルトンインスタンスを取得または作成
### シングルトンインスタンスの取得または作成

```typescript
const teleport = new Teleport();
```

### イベントを発生させる
### イベントの発射

```typescript
teleport.emit('eventName', eventData, () => {
// オプションのコールバック関数
console.log('イベントが正常に発生しました');
console.log('イベントが正常に発射されました');
});
```

### イベントを受信し処理する
### イベントの受信と処理

```typescript
teleport.receive('eventName', (data) => {
Expand All @@ -112,33 +118,50 @@ teleport.receive('eventName', (data) => {
});
```

### イベントを受信し処理する
### イベントの受信と処理

```typescript
teleport.receive(['eventName1', 'eventName2'], (data1:any, data2:any) => {
// イベントデータを処理
console.log('イベントデータ:', data1, data2);
});
// または
teleport.multiReceive(['eventName1', 'eventName2'], (data1:any, data2:any) => {
// イベントデータを処理
console.log('イベントデータ:', data1, data2);
});
```

### 特定のイベントハンドラを削除する
### 特定のイベントハンドラの削除

```typescript
teleport.removeHandle('eventName');
```

### すべてのイベントハンドラを削除する
### 特定の複数のイベントハンドラの削除

```typescript
teleport.removeHandle(['eventName1', 'eventName2']);
// または
teleport.removeMultiHandle(['eventName1', 'eventName2']);
```

### すべてのイベントハンドラの削除

```typescript
teleport.removeAllHandlers();
```

### イベントマネージャをクリアする
### イベントマネージャのクリア

```typescript
teleport.clear();
```

## 貢献

貢献は歓迎されています!質問
貢献は歓迎されます!問題を開く、プルリクエストを送信する、または **Teleport** ライブラリを改善するための提案を提供するなど、お気軽にご参加ください。

## ライセンス

このプロジェクトは MIT ライセンスのもとで提供されています - 詳細については [LICENSE](LICENSE) ファイルを参照してください。
73 changes: 45 additions & 28 deletions README-zh.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
# Teleport

- [English](README.md)
- [英文](README.md)
- [中文](README-zh.md)
- [日本語](README-ja.md)

[![npm version](https://badge.fury.io/js/@mwx47%2Fteleport.svg)](https://badge.fury.io/js/@mwx47%2Fteleport)
![NPM Downloads](https://img.shields.io/npm/dw/@mwx47/teleport)
![NPM License](https://img.shields.io/npm/l/@mwx47/teleport)
![GitHub Workflow Status](https://github.com/weixiangmeng521/teleport/actions/workflows/master.yml/badge.svg)
[![GitHub 仓库](https://img.shields.io/badge/GitHub-Repo-blue.svg)](https://github.com//weixiangmeng521/teleport)
[![npm版本](https://badge.fury.io/js/@mwx47%2Fteleport.svg)](https://badge.fury.io/js/@mwx47%2Fteleport)
![NPM 下载量](https://img.shields.io/npm/dw/@mwx47/teleport)
![NPM 许可证](https://img.shields.io/npm/l/@mwx47/teleport)
![GitHub 工作流状态](https://github.com/weixiangmeng521/teleport/actions/workflows/master.yml/badge.svg)
[![GitHub 存储库](https://img.shields.io/badge/GitHub-Repo-blue.svg)](https://github.com/weixiangmeng521/teleport)

**Teleport** 是一个轻量级、多功能的 TypeScript 事件处理库, RxJS 启发而创建。它使您能够使用单例模式在应用程序中有效地管理和通信事件。这种方法保证了事件管理器的单一、集中的实例,简化了在代码库的各个部分之间进行事件协调和处理的操作
**Teleport** 是一个轻量且多功能的 TypeScript 事件处理库,灵感来自 RxJS。它通过单例模式有效地管理和通信应用程序中的事件。这种方法确保了事件管理器的单一、集中的实例,简化了在代码库的各个部分协调和处理事件的复杂性

## 主要特性
## 主要特点

- **单例设计**实现了单例模式,提供了一个统一而唯一的实例,用于简化事件管理。
- **事件队列**:支持事件处理程序队列,使得可以在相应事件创建之前轻松添加处理程序
- **轻松的事件触发**:轻松触发带有关联数据和可选回调函数的事件
- **事件注册**简单注册特定事件的处理程序,使得响应应用程序中不同场景变得容易
- **维护**提供了删除特定事件处理程序、清除所有处理程序和重置整个事件管理器的方法。
- **单例设计**: 实现了单例模式,提供了一个统一且单一的实例,用于简化事件管理。
- **事件队列**: 支持事件处理程序排队,使得可以在相应的事件创建之前添加处理程序
- **轻松的事件发射**: 轻松发射带有关联数据和可选回调函数的事件
- **事件注册**: 简单注册特定事件的处理程序,便于响应应用程序中的各种场景
- **维护**: 提供了删除特定事件处理程序、清除所有处理程序和重置整个事件管理器的方法。

这个解决方案是独立的,不依赖于 RxJS 或外部库。
这个解决方案独立存在,不依赖于 RxJS 或外部库。

## 安装

Expand All @@ -32,32 +32,34 @@ npm install @mwx47/teleport

## 示例

### 第一个示例
### 第一个例子
```typescript
import { Teleport } from '@mwx47/teleport';

const teleport = new Teleport();

teleport.receive('eventName', (data) => {
console.log('事件数据:', data); // ✅ 事件数据: 你好,世界!
console.log('事件数据:', data); // ✅ 事件数据: 你好,世界!
});

// 发送数据
teleport.emit('eventName', "你好,世界!");
```

### 具有延迟订阅的示例
### 延迟订阅的示例
```typescript
import { Teleport } from '@mwx47/teleport';

const teleport = new Teleport();
// 发送数据
teleport.emit('eventName', "你好,世界!");

// 虽然延迟了1000毫秒,但仍然可以获取到数据
// 虽然延迟了1000ms,但仍然可以获取数据
setTimeout(() => {
teleport.receive('eventName', (data) => {
console.log('事件数据:', data); // ✅ 事件数据: 你好,世界!
// 移除处理程序
teleport.removeHandle('eventName');
});
}, 1000);
```
Expand All @@ -68,15 +70,17 @@ import { Teleport } from '@mwx47/teleport';

const teleport = new Teleport();
// 发送数据
teleport.emit('eventName1', "东京!");
teleport.emit('eventName2', "中国!");
teleport.emit('eventName3', "伦敦!");
teleport.emit('eventName1', "东京");
teleport.emit('eventName2', "中国");
teleport.emit('eventName3', "伦敦");

const subscriptions = ['eventName1', 'eventName2', 'eventName3'];
teleport.receive(subscriptions, (arg1:string, arg2:string, arg3:string) => {
console.log('你好', arg1); // ✅ 你好 东京!
console.log('你好', arg2); // ✅ 你好 中国!
console.log('你好', arg3); // ✅ 你好 伦敦!
console.log('你好', arg1); // ✅ 你好,东京!
console.log('你好', arg2); // ✅ 你好,中国!
console.log('你好', arg3); // ✅ 你好,伦敦!
// 移除处理程序
teleport.removeHandle(subscriptions);
});
```

Expand All @@ -94,12 +98,12 @@ import { Teleport } from '@mwx47/teleport';
const teleport = new Teleport();
```

### 发送事件
### 发射事件

```typescript
teleport.emit('eventName', eventData, () => {
teleport.emit('eventName', 事件数据, () => {
// 可选的回调函数
console.log('事件成功触发');
console.log('事件发射成功');
});
```

Expand All @@ -115,6 +119,11 @@ teleport.receive('eventName', (data) => {
### 接收和处理事件

```typescript
teleport.receive(['eventName1', 'eventName2'], (data1:any, data2:any) => {
// 处理事件数据
console.log('事件数据:', data1, data2);
});
// 或者
teleport.multiReceive(['eventName1', 'eventName2'], (data1:any, data2:any) => {
// 处理事件数据
console.log('事件数据:', data1, data2);
Expand All @@ -127,6 +136,14 @@ teleport.multiReceive(['eventName1', 'eventName2'], (data1:any, data2:any) => {
teleport.removeHandle('eventName');
```

### 移除特定多个事件处理程序

```typescript
teleport.removeHandle(['eventName1', 'eventName2']);
// 或者
teleport.removeMultiHandle(['eventName1', 'eventName2']);
```

### 移除所有事件处理程序

```typescript
Expand All @@ -145,4 +162,4 @@ teleport.clear();

## 许可证

该项目根据 MIT 许可证许可 - 有关详细信息,请参见 [LICENSE](LICENSE) 文件。
该项目基于 MIT 许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ teleport.emit('eventName', "hello world!");
setTimeout(() => {
teleport.receive('eventName', (data) => {
console.log('Event data:', data); // ✅ Event data: hello world!
// remove handler
teleport.removeHandle('eventName');
});
}, 1000);
```
Expand All @@ -77,6 +79,8 @@ teleport.receive(subscriptions, (arg1:string, arg2:string, arg3:string) => {
console.log('Hello', arg1); // ✅ Hello Tokyo!
console.log('Hello', arg1); // ✅ Hello China!
console.log('Hello', arg1); // ✅ Hello London!
// remove handler
teleport.removeHandle(subscriptions);
});
```

Expand Down Expand Up @@ -115,6 +119,11 @@ teleport.receive('eventName', (data) => {
### Receiving and Handling Events

```typescript
teleport.receive(['eventName1', 'eventName2'], (data1:any, data2:any) => {
// Handle the event data
console.log('Events data:', data1, data2);
});
// or
teleport.multiReceive(['eventName1', 'eventName2'], (data1:any, data2:any) => {
// Handle the event data
console.log('Events data:', data1, data2);
Expand All @@ -127,6 +136,14 @@ teleport.multiReceive(['eventName1', 'eventName2'], (data1:any, data2:any) => {
teleport.removeHandle('eventName');
```

### Removing a Specific Multiple Events Handler

```typescript
teleport.removeHandle(['eventName1', 'eventName2']);
// or
teleport.removeMultiHandle(['eventName1', 'eventName2']);
```

### Removing All Event Handlers

```typescript
Expand Down
Loading

0 comments on commit 64e314d

Please sign in to comment.