Day28 | 获取安装的extension进行操作

大家好,我是韦恩,今天是第二十八天,让我们会练习获取extension的api,为专案的重点功能做准备!


Extension API简介


在vscode的api里的extensions命名空间底下,有让我们获取安装的第三方extension的api。

让我们打开vscode,检查下extensions底下的api。

主要的API有三个

Extensions API 描述
all 唯读属性,VSCode安装的extension的物件阵列
getExtension 给定指定的extensionId,取得对应的extension物件
onDidChange 监听extension被安装、卸载、停用、启用的方法

透过上面的getExtension方法,我们可以拿到指定的extension物件,这里的extensionId是由我们在extension的package.json里的name跟publisher两个属性组成的,规则如下

${publisher}.${name}

以我们的extension为例,我们可以这样取得自己的extension物件。

extension物件有以下属性与方法让我们使用

Extension物件属性/方法 描述
id 唯读属性,extension的id
isActive 唯读属性,VSCode安装的extension的状态
packageJSON 唯读属性,安装的extension的package.json设定档
extensionPath 唯读属性,安装的extension的路径
extensionUri 唯读属性,安装的extension的VSCode Uri物件,物件底下有path等资讯。
extensionKind 唯读属性,extension的类型,用於区分是否为remote的extension。
exports 唯读属性,第三方extension exports的api,只能在extension已经active以後取得。
active active获取的extension的方法,会回传一个thenable,可以在active结束後取得extension的public api。

我们可以使用active方法启动获取的extension,也可以取得extension的相关状态资讯。

这里的public api,只的是取得的extension在active function後回传的物件。

这里举一个简单的例子,当有一个vscode的extension在active function里回传了如下物件:

import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
   ...
	let count = 0;
	const publicApi = {
		get count() {
			return count;
		},
		minus: () => count + 1,
		plus: () => count -1
	};
	return publicApi;
}

我们的extension在获取该extension物件後就可以这样使用这个套件的public api

const extensionApi = vscode.extensions.getExtension('someExtensionId');

extensionApi?.minus();

extensionApi?.plus();

console.log(extensionApi.count);

结语


好的,今天已经了解了怎麽样拿到第三方的extension,明天我们继续实作的部分。

我们明天见,掰掰!


<<:  Day 28 测试 React 元件:测试 Redux

>>:  第二十八天:UI切版 & 元件-清单表格、弹出视窗

Day30 Try catch

当程序遇到问题或者是错误时,会中断整个软件的执行,造成程序无法继续往下执行,这时我们会使用例外处理,...

[Day05] CH03:各式运算子(下)

接续昨天的运算子(Operator): 等值运算子 Java操作 运算子 等於 == 不等於 != ...

Day06:绝对要有的Git观念与习惯

一、前言   先前有提到,我在转职後、进到现职公司前,其实还有录取过另外一份PHP後端工程师之职缺,...

探讨 Simple Factory, Abstract Factory and Factory 的差异

刚学完三大工厂的模式,那它们之间的差异性究竟是什麽呢? 学习目标: 探讨简单工厂、抽象工厂、工厂的差...

Day46 micro:bit 系列完赛罗~

micro:bit 系列完赛罗~ 心得和感想在 Scratch 的主题最後一篇「Day46 Scra...