Link

首页

Tweet

书单

about me

Command

Category

Egret Wing插件工作模型详解


近期开始的Egret Wing插件大赛参加的人着实不少,大家一开始接触时表示对插件运行机制处于蒙逼状态。这里对整个插件运行机制做一个简要介绍,帮助大家编写出好玩超赞的插件。

你要先下载Egret Wing 3.0.2,这是目前位置最新的版本,但并非正式版。

新建插件项目,你会看到非常多的文件夹。通过Egret开发者中心你能够得知这些文件夹和文件的作用。在整个Egret Wing运行过程中,系统会自动像如下工作流进行操作。

屏幕快照 2016-03-24 下午6.28.40.png

在你的插件项目中,包含一个package.json的文件,这是当前插件的配置文件。其中的activationEvents和contributes字段会被Wing读取,并缓存到一个列表中。所有运行过程中,插件信息都会从这个列表中读取。

当我们运行一个插件时,工作流程是如何的?下图

屏幕快照 2016-03-24 下午6.34.41.png

当我们输入了一个快捷键,或者是命令,Wing会根据启动时缓存的列表查找对应命令的唯一命名(commend),查找到对应命令后,检测当前这个插件是否被激活。如果没有激活,则直接激活插件。激活插件的操作,其实是调用当前插件下的extension类中的activate方法。

这里请注意,extension类中的activate方法只会在激活的时候执行一次,所以不要把插件功能写到activate方法中。在Wing创建的实例项目中我们可以看到extension类的代码。

import * as wing from 'wing';
import * as showMessage from './actions/showMessage';
import * as showPopup from './actions/showPopup';

export function activate() {
    wing.commands.registerCommand('extension.demo', run);
}
//其他代码省略...

其中 activate()方法只负责绑定extension.demo的callback。

当一个插件激活完成后,系统才会调用你所想要的commend,在默认工程中,是派发了extension.demo这个命令,而run方法这是需要响应的callback。

到此位置你才能正确的执行你的插件逻辑。

关于Wing插件工作模型简单的介绍给大家,方便理解,少走弯路。