@drmrkj/postmessage-gateway-sdk
v0.1.0
Published
Opinionated TypeScript template for rapidly building modular npm packages.
Maintainers
Readme
@drmrkj/postmessage-gateway-sdk
PostMessage 网关 SDK,用于在子页面中定义可调用的 API 与事件广播,通过 window.postMessage 与父页面通信。
安装
- pnpm add @drmrkj/postmessage-gateway-sdk
快速使用(子页面)
import { ChildInterfaceGateway } from '@drmrkj/postmessage-gateway-sdk';
const gateway = new ChildInterfaceGateway({
defaultEnabled: { ping: true, greet: true, onHello: true }
});
gateway.define('ping', () => 'pong', 'API', true);
gateway.define('greet', (data: { name: string }) => `Hello, ${data.name}!`, 'API', true);
gateway.define('onHello', null, 'EVENT', true);
gateway.broadcast('onHello', { msg: 'hello' });服务管理
- enable(name) / disable(name)
- getServiceStatus()
- setHandler(name, handler) / setHandlers(map)
配置辅助
- createDefaultEnabled(input, defaultValue?)
- mergeDefaultEnabled(base, overrides)
- createEnabledResolver(map, fallbackDefault?)
- readDefaultEnabledFromGlobal(globalKey?)
Vue 集成
import { createGatewayStore } from '@drmrkj/postmessage-gateway-sdk/vue';
const store = createGatewayStore({ defaultEnabled: { ping: true } });
const gw = store.initGateway();
store.triggerEvent('onHello', { msg: 'hello' });
store.destroyGateway();浏览器 IIFE
- 构建产物:dist/browser/gateway.iife.global.js
- 全局对象:GatewaySDK.ChildInterfaceGateway
<script src="/node_modules/@drmrkj/postmessage-gateway-sdk/dist/browser/gateway.iife.global.js"></script>
<script>
const gw = new GatewaySDK.ChildInterfaceGateway();
gw.define('ping', () => 'pong', 'API', true);
gw.broadcast('onHello', { msg: 'hello' });
</script>导出子路径
- 主入口:@drmrkj/postmessage-gateway-sdk
- Vue 入口:@drmrkj/postmessage-gateway-sdk/vue
- 浏览器入口:@drmrkj/postmessage-gateway-sdk/browser
