更新说明
2018-9-27 project-polyfill@0.0.3 publish
仓库说明
本仓库尝试解决 mblock 作品在 pc, app, web 三端需求迭代不一致所产生的兼容问题。
比如 web 可能优先实现了 A
功能,并产生相应的数据保存到作品 a.mblock
文件中,
因为迭代周期不一致原因,此时 app 未实现 A
功能,若 app 导入了 a.mblock
作品文件,除了能正常使用外,不应破坏 a.mblock
文件中不被支持的功能数据。
不被支持的功能的数据,是被缓存起来的,最后保存作品时,会取用缓存还原。
Usage
在 a.js
中引入模块
import ProjectPolyfill from 'project-polyfill';
export default new ProjectPolyfill();
在 main.js
中使用该 polyfill 功能
import ProjectPolyfill from './a.js';
import vm from './vm';
// xxx.mblock 文件中解析出 mscratchJson
// mscratchJson = unzipMblock(xxx.mblock);
// 外部
let config = {
getExtensionsData: () => {}
};
// 初始化,依赖 vm
ProjectPolyfill.init(vm, config);
// 将解析所得 mscratchJson 传入
ProjectPolyfill.input(mscratchJson);
API 简述
初始化
初始化依赖 vm
,配置 config
是可选的。
ProjectPolyfill.init(vm, config);
config
用于配置输出作品时的钩子方法。 若在 config
中添加配置钩子方法,则取到编辑时的实时数据;反之若不添加配置钩子方法,则会取到一开始输入时的缓存。
const config = {
getExtensionsData: () => object,
getCodeTypes: () => [string],
getMode: () => string,
getOnline() => string
}
输入
导入作品时,将作品数据 mscratchJson
输入到 ProjectPolyfill
模块
ProjectPolyfill.input(mscratchJson);
输出
导出作品时,将作品数据从 ProjectPolyfill
模块中导出
ProjectPolyfill.output();