Skip to main content

架构

  • 考试、联系、时长、秒过都作为插件单独编写,最终通过plugins文件下下的index.ts统一暴露,如果需要扩展功能,可以自行扩展插件

  • 每一个插件都有自己的设置,在index.ts中统一注册,最终呈现于设置面板

  • WE Learn中的每一种题型(每一种题型对应多个课程)都有单独的parser和solver,parser仅负责解析答案,solver仅负责自动答题,在exercise插件下的main.ts中同一调度

  • 所以可以单独为一种题型写parser和solver

  • main.ts是入口文件

  • 作为chrome扩展时

    • 通过inject.ts注入main.ts,以获取原生context访问权限(unsafeWindow)
    • main.ts通过bridge.ts与content.ts实现通信,content.ts转发跨域请求至background.ts
  • 插件

    • 考试、练习、时长都作为插件单独编写,尽量解耦,新增插件也应如此,每一个插件只服务于一项主要功能
    • 每一个插件都应符合以下规范
      • main.ts中放置主要逻辑
        • 需要暴露给外部的函数,通过index.ts转发
      • initial.ts中放置需要在app初始化时执行的函数,并在plugins文件夹下的initial.ts中统一注册
        • 只调用,实现最好放在main.ts中
      • setting.ts暴露所有插件相关的设置,并在index.ts中统一注册,最终呈现于设置面板
  • utils下

    • 实现了对网络请求的封装
      • request-base.ts
      • bridge.ts
      • proxy.ts
    • 所有请求
      • requests.ts
    • 创建容器的封装
      • container.ts
    • 通用工具
      • common.ts
    • 用户设置相关
      • settings.ts
  • views中

    • Panel.vue负责渲染悬浮窗
    • Setting.vue负责渲染控制面板
  • tests

    • 尚未开始
Last updated on by EdIfiMr