Skip to content

IVP 重构计划书

目录

  • ivp 插件库
    • 重构清单
    • 文件树
    • ivp-player
    • ivp-core
    • ivp-ui
  • ivp app
  • ivp 对内
  • ivp service

ivp 插件库

重构清单

  • 引入 storybook 开发模式
  • 重新梳理 ivp-player, 与 ivp-app 解耦
  • ivp-core 模块已经比较庞大,重新划分模块
  • ivp-ui 更名为 ivp-components, 使用 compositionApi 模式
  • 事件中心模式 / FSM 模式,重新梳理,避免造成内存泄漏
  • 可参考 Fiber 机制,渲染算法优化
  • 提供一些 debug API, 方便第一时间定位bug

文件树

└── packages
    ├── ivp-player
    │   ├── ComponentPlayer.vue
    │   └── AppPlayer.vue
    ├── ivp-core
    │   ├── ivp-base 基类库
    │   │   ├── fsms
    │   │   ├── eventCenters
    │   │   ├── services
    │   │   └── daos
    │   ├── ivp-models 模型库/核心算法库
    │   ├── ivp-renders 图形绘制库
    │   └── ivp-utils 工具库
    ├── ivp-components
    │   ├── Configs.vue
    │   ├── ...
    │   └── DragAssets.vue
    └── utils
        ├── produceScripts
        ├── collectInfos
        └── computeXxxx

P.S. 应该去掉 ivp-core 这一层,单独打包,package.json 内建立依赖关系

ivp-player

  • 维护基本配置
  • 策略模式,提供给不同使用方(目前两个:ivp-app/ivp-ui)

ivp-core

  • ivp-base 基类库
    • base service/base dao 等,原来 ivp-core 的 service/dao 部分
    • 事件中心 / FSM
    • 目前感觉不是很必要,是否需要去掉,或重新设计
  • ivp-models 模型库/核心算法库
    • 抽象图形,行为,数据格式化等 (Graph/Node/Edge/Behavior/Payload/Config/State)
    • 提供算法,纯计算
  • ivp-renders 图形绘制库
    • 目前 storyline graph, editor graph, 需要解耦一下
    • 依赖 ivp-models, antv/g6
    • 图形渲染
    • 图形交互
  • ivp-utils 工具库
    • 提供纯函数,比如生成脚本,获取统计信息等高频公用工具
    • 依赖 ivp-models

ivp-ui

  • 更名为 ivp-components
  • Options API 模式 + Composition API,组件之间低耦合高内聚

ivp app

  • 单页面保存,且轮询查看资源状态,与 ivp-ui 通信的方式需要重新考虑一下。
  • 样式都是固定值,全局覆盖,导致组件可扩展性有限
  • vee-validator 引入,目前校验规则都是手写,也不太友好
  • 错误提示不太友好,排查故障时造成困扰

ivp 对内

  • ivp 插件库 重构完成之后,提供: 对外用户策略,爱奇艺号策略,对内编辑策略,审核策略
  • 对内版本选择时机提出技术改造方案,进行升级

ivp service

  • ivp 脚本生成方法目引入 ivp-core 的graph 模型,然后在 service 内计算。需要抽成以 ivp-utils 方式引入,保证各使用方同步。
  • ivp service 链路过长,代理过多,是否有冗余部分