实战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内部事件地监听,更多的事件监听类型可以自己动手尝试。

合智互联客户成功服务热线:400-1565-661

admin
admin管理员

上一篇:用瀑布开发模式的企业是否可以直接上DevOps
下一篇:JAVAweb中常用的小知识点之Servlet

留言评论

暂无留言
取消
扫码支持