dreadnaught-js-sdk

dreadnaught-js-sdk 轻应用JS-SDK 运行于浏览器端

Usage no npm install needed!

<script type="module">
  import dreadnaughtJsSdk from 'https://cdn.skypack.dev/dreadnaught-js-sdk';
</script>

README

dreadnaught-js-sdk MAXHUB轻应用JS-SDK

1. 引入

  1. html直接引入
<script src="dreadnaught-js-sdk.min.js"></script>
<script>
  const options = {
    debug: true,
    appName: 'example',
    appId: '666'
  }
  const sdk = JSSDK.create(options);
  sdk.apis.getChannelList().then((e) => console.log(e));
  sdk.message.onSenderConnect((e) => {
    console.log('sender', e);
  })
  // 在其他模块使用
  JSSDK.sdk.apis.getChannelList().then((e) => console.log(e));
</script>
  1. 模块化引入
import { create } from 'dreadnaught-js-sdk';
const options = {
  debug: true,
  appName: 'example',
  appId: '666'
}
const sdk = create(options);
sdk.apis.getChannelList().then((e) => console.log(e));
sdk.message.onSenderConnect((e) => {
  console.log('sender', e);
})

// 初始化后,在其他模块中使用
import { sdk } from 'dreadnaught-js-sdk';

sdk.apis.getChannelList().then((e) => console.log(e));

2. 开发

  1. 安装 yarn
$ brew install yarn
  1. 启动开发环境
$ yarn dev

启动 localhost:9999 开发环境运行 example/base/index.html,修改src的代码,可热更新

  1. 启动 mock-socket-server
$ yarn mock:socket
  1. 打包生产
$ yarn build
  1. 发布,目前发布权限只有 liweimin@cvte.com 拥有,是直接发到npm仓库的
$ npm publish

3. 规划

  • base 基础类

    • validators 校验基础类
    • fs 对接 LocalServer 存储服务的基础类
  • messages 消息总线

    • bus消息总线 - 基于 wolfy87-eventemitter
    • Electron 的渲染进程通信
    • Android-WebView 的渲染进程通信
  • services 服务

    • socket 作为 socket-client 对接 LocalServersocket-server - 基于 socket.io-client
    • request 提供给 H5 请求 LocalServer 接口的方法
    • 根据应用权限分配对应的接口权限
    • fs 对接 LocalServer 存储服务的 API
    • update 对接 LocalServer 的更新服务
    • localapi 对接 LocalServer 本地命令的接口
  • validators 校验层

    • 校验容器注入的 fetch 方法
    • 校验容器注入的 appAuthList 参数
    • 校验 create 时的选项
    • 校验 request 时的合法性
    • 校验注册到 socket 上的合法性
    • 校验容器的版本
    • 校验应用的APPID合法性
    • token校验
  • mock 模拟数据

    • 模拟容器传入的 fetch 对象,带上 get、post、put、delete方法
    • 模拟 LocalServersocket-server
    • 模拟本地开发的所有接口数据,对接 yapi 平台
    • 模拟应用列表与应用权限
  • utils 工具

    • 日志工具
    • 获取、设置选项
    • 获取、设置权限模块
  • tests 单元测试

    • 搭建基于 Jest 的测试框架
  • docs 文档

    • jsdoc

4. 相关设计

5. 执行顺序约束

  1. import JSSDK // 引入JSSDK
  2. JSSDK.create(options) // 主动调用初始化实例
  3. debug.init // debug模块初始化
  4. valid // 校验合法性
  5. OptionsValidator // 校验传入的 options 合法性
  6. AuthValidator // 校验容器层传入的 appAuthList 参数
  7. FetchValidator // 校验容器层传入的 fetch 对象
  8. setOptions // 设置全局的options,可在整个生命周期中使用 9. setAuth // 设置全局的auth,可在整个生命周期中使用
  9. service // 初始化 requestmessage
  10. export sdk // 导出有 request,message,listener方法的sdk模块