# EventRatel **Repository Path**: ankeji/event-ratel ## Basic Information - **Project Name**: EventRatel - **Description**: 一个微前端使用的postmessage消息透传库 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2024-10-25 - **Last Updated**: 2026-01-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EventRatel #### 介绍 一个微前端使用的postmessage消息透传库,支持iframe和主框架之间的消息通信,同时支持获取父页面的cookie、localStorage和sessionStorage。 #### 安装教程 支持三种不同的引入方式:ES模块(import)、CommonJS(require)和UMD(script标签)。以下是每种引入方式的使用方法: 1. 使用ES模块(import) 对于使用ES模块的环境,如现代前端框架或支持ES6的浏览器: ``` // 方式1: 默认导入 import EventRatel from 'event-ratel'; // 使用 const eventRatel = new EventRatel(); // 或者使用单例模式 const eventRatel = EventRatel.getInstance(); ``` 2. 使用CommonJS(require) 对于Node.js环境或使用CommonJS模块系统: ``` // 方式1: 默认导入 const EventRatel = require('event-ratel'); // 使用 const eventRatel = new EventRatel(); // 或者使用单例模式 const eventRatel = EventRatel.getInstance(); ``` 3. 使用UMD(script标签) 对于直接在浏览器中使用script标签引入: ``` ``` #### 使用说明 1. 发送透传消息 ``` eventRatel.emit('someEvent', data) eventRatel.emit('someEvent', data, 'iframeId') //指定iframe监听 eventRatel.emitParent('someEvent', data) // 只给父级窗口发送消息 eventRatel.on('someEvent', (data) => { console.log('Received:', data); }) eventRatel.off('someEvent') ``` 这里的`off`事件,需要把`on`监听的方法单独抽离出来,跟`vue`的`bus`监听是一样的用法,例如: ``` created() { eventRatel.on("someEvent", this.handleMessage); }, methods: { handleMessage(data) { console.log(data); }, }, beforeDestroy() { eventRatel.off("someEvent", this.handleMessage); }, ``` 2. 获取父页面的cookie【返回一个Promise】 ``` eventRatel.getParentCookie(key) // 获取指定key的cookie,不传获取全部 ``` 3. 获取父页面的localStorage【返回一个Promise】 ``` eventRatel.getParentLocalStorage(key) // 获取指定key的localStorage,不传获取全部 ``` 4. 获取父页面的sessionStorage【返回一个Promise】 ``` eventRatel.getParentSessionStorage(key) // 获取指定key的sessionStorage,不传获取全部 ``` #### 实例化参数配置 ``` const instance = EventRatel.getInstance({ securityMode: true, trustedOrigins: ['https://example.com', 'https://*.example2.com'] }); ``` ##### 功能说明 1. 安全模式开关:通过 securityMode 参数控制,默认为 false(开放模式) 2. 信任域名列表:通过 trustedOrigins 参数配置,支持: 精确匹配:https://example.com 通配符匹配:https://*.example2.com 全部允许:* 空数组或不传时:安全模式下不传时只能同源域名下进行消息透传 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)