实战CloudIDE插件开发-事件订阅

举报
克劳德爱第一 发表于 2021/02/02 18:57:45 2021/02/02
【摘要】 在CloudIDE插件开发的过程中为了实现一些功能通常需要监听事件并做出响应,比如在用户创建文件的时候我们自动给文件加入一些内容。今天的文章我们就通过样例看看如何在插件里面监听或发布事件。

在CloudIDE插件开发的过程中为了实现一些功能通常需要监听事件并做出响应,比如在用户创建文件的时候我们自动给文件加入一些内容。今天的文章我们就通过样例看看如何在插件里面监听或发布事件。

准备工作

  1. 已经创建并处于运行状态的CloudIDE实例,CloudIDE创建方法可以参考《5分钟创建并启动IDE实例
  2. 本次插件示例代码:https://github.com/HuaweiIDE/cloudide-example-event-subscription.git,可以通过文件->导入项目将代码导入到CloudIDE中。
  3. 新建终端并执行npm i安装依赖。

在插件后端监听事件

我们还是先打开src/node目录下的backend.ts文件,在Backend类的run()方法中我们添加如下代码注册监听一个文件删除的事件。

        let registeredEvent = cloudide.workspace.onDidDeleteFiles((event) => {
            cloudide.window.showInformationMessage(`${event.files.join(',')} deleted.`);
        });
        this.plugin.container.context.subscriptions.push(registeredEvent);

如果想要删除这个事件的监听可以直接调用registeredEvent的dispose()方法即可。

registeredEvent.dispose();

大家可以尝试注册一些其他的事件并测试效果。

在插件前端监听事件

打开src/browser下的fronted.ts文件,我们通过在Frontend类的run()方法中添加如下代码注册监听一个文件创建事件。

        let eventHandler = (eventType: any, evt: any) => {
            // do something
        };
        this.plugin.subscribeEvent(EventType.CLOUDIDE_WORKSPACE_ONDIDCREATEFILES, eventHandler);

前端取消事件注册的方式和后端并不相同,我们需要使用plugin对象的unsubscribeEvent方法取消注册的事件处理句柄。

this.plugin.unsubscribeEvent(EventType.CLOUDIDE_WORKSPACE_ONDIDCREATEFILES, eventHandler);

不同插件前端之间的事件订阅和发布

目前插件框架还为不同插件的前端之间提供了事件的订阅和发布机制。在前端可以直接使用该方法向所有的插件广播自己的想要的事件,其他的插件的前端可以使用上面提到的监听方式来获取并处理这个事件。注意:当前不支持在插件后端监听其他插件前端发出的事件。

this.plugin.fireEventToPlugins('your-own-event-type', {});

通过上面的介绍,我们能够非常容易地实现对CloudIDE内部事件地监听,更多的事件监听类型可以自己动手尝试。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。