为了方便开发,抽象了平台的流程,只需要专注于功能的实现

# 开始

创建新的平台应该遵循现有规则,在mooc文件夹下创建以平台为命名规则的文件夹

且有文件mooc/[platform]/platform.ts,实现MoocFactory接口的类,用于通过页面信息来创建对应的具体Mooc对象,如果不符合规则返回null,对应构建实例(mooc/[platform]/platform.ts)生命周期

需要在/build/cxmooc-tools/manifest.json文件和/src/config.ts中添加对应的URL规则

如果你需要开发油猴脚本,那么你需要在/src/tampermonkey目录中添加对应的油猴文件,且在webpack.tampermonkey.jsinternal/pack-crx.ts:43中添加对应配置,具体请参考现有平台

# 实现Mooc接口

具体请看已有平台

# 接口定义

// 事件
export type MoocEvent = "complete" | "reload" | "error" | "taskComplete";

// 单个Mooc任务,可能会被抛弃
export interface Mooc {
    Init(): any
}

// Mooc任务集,未来更倾向于使用此接口
export interface MoocTaskSet extends Mooc, IEventListener<MoocEvent> {
    // 初始化
    Init(): Promise<any>

    // 停止
    Stop(): Promise<any>

    // 返回下一个任务点
    Next(): Promise<Task>

    // 设置任务点位置
    SetTaskPointer(index: number): void;
}