1.5.32 • Published 9 months ago

@hyext/ext-sdk-basic v1.5.32

Weekly downloads
223
License
ISC
Repository
-
Last release
9 months ago

Core·小程序 SDK

  • 小程序初衷是为了解决跨平台开发问题,最终诉求是希望可以实现应用的一端开发多端适配。
  • 但,小程序 SDK 作为这个流程中的核心,不可避免的承担了多端适配的任务,从而引申出一个千古难题:是分?是合?
  • 分:接口数量、适配逻辑、对接平台、Demo 各不相同;
    优点:代码独立,耦合性小,可以分工合作;
    缺点:接口行为、传参、回参都有可能出现分歧,新的接口、适配每个端都要加一次,有重复工作量;

  • 合:接口的调用、传参、回参、行为逻辑、文档多端一致;
    优点:一动全动,一荣俱荣,减少工作量;
    缺点:一动全动,一损俱损,需要强心脏;

  • 综上所述取中庸:入口多端统一,适配各不相同;

示意图

开发思路

  • 多端适配:src/platfroms/[rn] 下是各个端的适配代码,最终将注册到 SDK 核心extsdk.core
  • 统一入口:src/modules 下是所有要暴露的 API 接口,通过 SDK 核心回溯某个模块某个 APIextsdk.core.callEvent
  • 根据任务配置构建出不同平台的 SDK;

安装

npm i @hyext/ext-sdk-basic -S

引用

  import extsdk, { baseUtil, EventManager } from '@hyext/ext-sdk-basic';

  // 新增平台
  extsdk.core.addPlatform({ adapter: {}, modules: {}});

  // 注入自定义模块
  extsdk.core.injectModules({'moduleName': { 'api': () => {}}});

  // 事件Manager
  const eventer = new EventManager();
  eventer.on('action', () => {});
  eventer.off('action', () => {});
  eventer.emit('action', {});

  // 基础工具
  const foo = () => {};
  console.log('baseUtil.isFun(foo): ', baseUtil.isFun(foo));

本地开发

  • npm run start

测试构建

  • npm run build:test

打包上线

  • npm run release

核心

基础思路

  • API -> core -> platform
    1. 平台注入到核心中;
    2. API 通过核心调用平台;
  1. 接口 API:

    • 所有 API modules
    • 基础 API baseModules
  2. 核心 core:

    • 回溯逻辑 upon
    • 平台注入 inject
  3. 平台 platform:

    • 适配器 adapter: 抽象与外层平台的通信,以及一些基础事件;
    • 平台封装 common: 事件监听、平台可公用逻辑;
    • 特有模块 modules: 业务代码及特殊处理逻辑;
  4. 可公用:

    • 处理器 manager
    • 工具库 util
  5. 可扩展:

    • index.js 暴露可继承扩展内容
    • 是否继承基础 SDK 的所有 API
    • 是否继承基础 SDK 的平台

核心 core

// 添加平台
addPlatform(adataper: {}, modules: {});

// 注入模块
injectModules({})

// 回溯API
backTrackAPI(modulesName, api);

// 回溯调用
onEvent // 事件绑定,返回 Promise
offEvent // 事件解绑,返回 Promise
callEvent // 异步调用,返回 Promise
callEventSync // 同步调用

处理器 manager

EventManager
LogManager
WebSocketManager
TafManager

适配器 adapter

// 核心
core: {
  onEvent // 默认事件绑定,异步 Promise,可选,回溯失败后调用
  offEvent // 默认事件解绑,异步 Promise,可选,回溯失败后调用
  callEvent // 默认调用逻辑,异步 Promise,可选,回溯失败后调用
  callEventSync // 默认调用逻辑,同步,可选,回溯失败后调用
  afterModlueTrack // 平台定义的回溯方法,查找modules失败后调用,要返回API
},

// 消息通信
messager: {
  on // 监听父级消息
  off // 取消监听
  emit // 发送消息,不标记唯一
  dispatch // 发送一般消息到父级,返回Promise,标记唯一
  dispatchTaf // 发送Taf消息到父级
}

// 生命周期
lifeCircle: {
  init
  onLoad
}

// 全局报错监听
error

构建器 cli:

命令行:

  • 开发:extsdk start
  • 打包:extsdk build
  • 上线:extsdk deploy
  • 声明文件:extsdk dts
  • 配置 JSON:extsdk parse
  • 创建 init
  • 文档 doc
  • Demo demo
  • 测试用例 test

构建配置 project.config.json

{
  "name": "项目名",
  "version": "版本号",
  "buildTarget": "命名空间",
  "mainPath": "src",
  "outputPath": "dist",
  "releasePath": "release",
  "modulesPath": "src/modules",
  "platformsPath": "src/platforms",
  "buildEntryPath": "src/entry",
  "buildTasks": {
    "任务名": {
      "platform": {
        "entry": "src/platforms/rn/index.js",
        "buildTool": "metro"
      },
      "npmConfig": {
        "name": "发布NPM包名"
      }
    },
    "web": {
      "platform": {
        "entry": "src/platforms/web/index.js",
        "buildTool": "webapck"
      }
    },
    "pc": {
      "platform": {
        "entry": "src/platforms/pc/index.js",
        "buildTool": "webapck"
      }
    },
  }
}

错误信息 APIError

属性类型说明
messagestring错误信息 JSON 字符串
codenumber错误码
msgstring错误信息
apistring报错接口
originany原始报错信息
stackArray报错堆栈

错误码 code

  • 前端错误码规范
  • 错误码范围: 10000 ~ 29999

  • 1**** 基础报错

    • 10*** 接入报错
    • 11*** 调用报错
    • 12*** 事件报错
  • 2**** 客户端报错

    • 20*** RN 端相关报错
    • 21*** Web 端相关报错
    • 22*** PC 端相关报错
错误码含义
10000中台: 未知平台
10001中台: 平台不可用
11001中台: 接口不支持
11002中台: 调用超时
11003中台: 参数错误
12001中台: 事件名为空
12002中台: 事件为空
12003中台: 事件不支持
20000RN 端: 模块未定义
21000WEB 端: 未找到父级平台
21001WEB 端: 来自非法源的消息
21002WEB 端: 来自非法域的消息
21003WEB 端: 非法消息格式
22000PC 端: Taf 回包格式不对

添加事件监听

1.5.33-beta.1

9 months ago

1.5.33-beta.0

9 months ago

1.5.32

9 months ago

1.5.32-beta.0

10 months ago

1.5.31-beta.0

11 months ago

1.5.31-beta.1

11 months ago

1.5.28-beta.1

11 months ago

1.5.28-beta.2

11 months ago

1.5.28-beta.3

11 months ago

1.5.28-beta.0

12 months ago

1.5.29-beta.1

11 months ago

1.5.29-beta.0

11 months ago

1.5.29-beta.4

11 months ago

1.5.29-beta.3

11 months ago

1.5.29-beta.2

11 months ago

1.5.30

11 months ago

1.5.31

11 months ago

1.5.27-beta.0

12 months ago

1.5.23

12 months ago

1.5.22

1 year ago

1.5.25

12 months ago

1.5.27

12 months ago

1.5.26

12 months ago

1.5.29

11 months ago

1.5.28

11 months ago

1.5.20-beta.1

2 years ago

1.5.20-beta.0

2 years ago

1.5.22-beta.1

2 years ago

1.5.21-beta.0

2 years ago

1.5.21-beta.1

2 years ago

1.5.21

2 years ago

1.5.20

2 years ago

1.5.19-beta.1

2 years ago

1.5.19

2 years ago

1.5.15-beta.0

2 years ago

1.5.19-beta.0

2 years ago

1.5.18-beta.0

2 years ago

1.5.18-beta.1

2 years ago

1.5.18-beta.2

2 years ago

1.5.16-beta.3

2 years ago

1.5.18-beta.3

2 years ago

1.5.16-beta.2

2 years ago

1.5.18-beta.4

2 years ago

1.5.16-beta.1

2 years ago

1.5.18-beta.5

2 years ago

1.5.16-beta.0

2 years ago

1.5.18-beta.6

2 years ago

1.5.18-beta.7

2 years ago

1.5.18-beta.8

2 years ago

1.5.18-beta.9

2 years ago

1.5.16

2 years ago

1.5.15

2 years ago

1.5.18

2 years ago

1.5.17

2 years ago

1.5.13-beta.0

2 years ago

1.5.13-beta.3

2 years ago

1.5.13-beta.4

2 years ago

1.5.13-beta.1

2 years ago

1.5.13-beta.2

2 years ago

1.5.12-beta.1

2 years ago

1.5.12-beta.0

2 years ago

1.5.12

2 years ago

1.5.11-beta.0

2 years ago

1.5.10-beta.0

2 years ago

1.5.10

2 years ago

1.5.11

2 years ago

1.5.9

3 years ago

1.5.8

3 years ago

1.5.9-beta.0

3 years ago

1.5.3-beta.0

3 years ago

1.5.3-beta.1

3 years ago

1.5.5

3 years ago

1.5.4

3 years ago

1.5.3

3 years ago

1.5.7

3 years ago

1.5.6

3 years ago

1.5.8-beta.0

3 years ago

1.5.2

3 years ago

1.5.1

3 years ago

1.5.0

3 years ago

1.3.21-beta.0

3 years ago

1.3.21-beta.1

3 years ago

1.3.18

3 years ago

1.3.19

3 years ago

1.3.20

3 years ago

1.3.21

3 years ago

1.3.22

3 years ago

1.3.23

3 years ago

1.3.22-beta.5

3 years ago

1.3.22-beta.6

3 years ago

1.3.22-beta.1

3 years ago

1.3.20-beta.2

3 years ago

1.3.22-beta.2

3 years ago

1.3.20-beta.1

3 years ago

1.3.22-beta.3

3 years ago

1.3.20-beta.0

3 years ago

1.3.22-beta.4

3 years ago

1.3.22-beta.0

3 years ago

1.3.16-beta.0

3 years ago

1.3.15-beta.2

3 years ago

1.3.15-beta.1

3 years ago

1.3.17-beta.0

3 years ago

1.3.17

3 years ago

1.3.15

3 years ago

1.3.16

3 years ago

1.3.15-beta.0

3 years ago

1.3.13-beta.0

3 years ago

1.3.11-beta.0

4 years ago

1.3.11-beta.1

3 years ago

1.3.14-beta.0

3 years ago

1.3.14-beta.1

3 years ago

1.3.13

3 years ago

1.3.14

3 years ago

1.3.11

3 years ago

1.3.12

3 years ago

1.3.9

4 years ago

1.3.10

4 years ago

1.3.9-beta.0

4 years ago

1.3.8-beta.1

4 years ago

1.3.8

4 years ago

1.3.7-beta.1

4 years ago

1.3.7

4 years ago

1.3.5-beta.1

4 years ago

1.3.6-beta.1

4 years ago

1.3.6

4 years ago

1.3.5

4 years ago

1.3.2-beta.7

4 years ago

1.3.2-beta.5

4 years ago

1.3.2-beta.6

4 years ago

1.3.3

4 years ago

1.3.2

4 years ago

1.3.2-beta.3

4 years ago

1.3.2-beta.4

4 years ago

1.3.2-beta.1

4 years ago

1.3.2-beta.2

4 years ago

1.3.1

4 years ago

1.3.1-beta.7

4 years ago

1.3.1-beta.6

4 years ago

1.3.1-beta.5

4 years ago

1.3.1-beta.4

4 years ago

1.3.1-beta.1

4 years ago

1.3.1-beta.3

4 years ago

1.3.1-beta.2

4 years ago

1.3.0

4 years ago

1.2.19-beta.1

4 years ago

1.2.19

4 years ago

1.2.18-beta.1

4 years ago

1.2.18-beta.2

4 years ago

1.2.18

4 years ago

1.2.17

4 years ago

1.2.17-beta.1

4 years ago

1.2.16

4 years ago

1.2.16-beta.2

4 years ago

1.2.12

4 years ago

1.2.13

4 years ago

1.2.10

4 years ago

1.2.11

4 years ago

1.2.14

4 years ago

1.2.15

4 years ago

1.2.9-beta.4

4 years ago

1.2.9-beta.3

4 years ago

1.2.15-beta.1

4 years ago

1.2.13-beta.1

4 years ago

1.2.16-beta.1

4 years ago

1.2.15-beta.4

4 years ago

1.2.14-beta.4

4 years ago

1.2.15-beta.5

4 years ago

1.2.14-beta.3

4 years ago

1.2.15-beta.2

4 years ago

1.2.14-beta.2

4 years ago

1.2.15-beta.3

4 years ago

1.2.14-beta.1

4 years ago

1.2.9

4 years ago

1.2.14-beta

4 years ago

1.2.9-beta.2

4 years ago

1.2.9-beta.1

4 years ago

1.2.8

4 years ago

1.2.7

4 years ago

1.2.6

4 years ago

1.2.5

4 years ago

1.2.3

4 years ago

1.2.2

4 years ago

1.2.0

4 years ago

1.2.1

4 years ago

1.2.0-bate.2

4 years ago

1.2.0-bate.1

4 years ago

1.1.19

4 years ago

1.1.20

4 years ago

1.1.18

4 years ago

1.1.17

4 years ago

1.1.16

4 years ago

1.1.15

4 years ago

1.1.14

4 years ago

1.1.13

4 years ago

1.1.12

5 years ago

1.1.11

5 years ago

1.1.10

5 years ago

1.1.9

5 years ago

1.1.8

5 years ago

1.1.7

5 years ago

1.1.6

5 years ago

1.1.5

5 years ago

1.1.3

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.23

5 years ago

1.0.22

5 years ago

1.0.19

5 years ago

1.0.18

5 years ago

1.0.17

5 years ago

1.0.16

5 years ago

1.0.15

5 years ago

1.0.14

5 years ago

1.0.13

5 years ago

1.0.11

5 years ago

1.0.10

5 years ago

1.0.12

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6-beta.6

5 years ago

1.0.6-beta.5

5 years ago

1.0.6-beta.3

5 years ago

1.0.6-beta.2

5 years ago

1.0.6-beta.1

5 years ago

1.0.5

5 years ago

1.0.3-beta.17

5 years ago

1.0.3-beta.16

5 years ago

1.0.3-beta.14

5 years ago

1.0.3

5 years ago

1.0.3-beta.13

5 years ago

1.0.3-beta.15

5 years ago

1.0.3-beta.12

5 years ago

1.0.3-beta.11

5 years ago

1.0.3-beta.10

5 years ago

1.0.3-beta.9

5 years ago

1.0.3-beta.8

5 years ago

1.0.3-beta.7

5 years ago

1.0.3-beta.5

5 years ago

1.0.3-beta.3

5 years ago

1.0.3-beta.2

5 years ago

1.0.3-beta.1

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

2.0.17

5 years ago

2.0.17-beta.4

5 years ago

0.1.5

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0-beta.0

5 years ago