大家好,我是韦恩,今天是第二十八天,让我们会练习获取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
当程序遇到问题或者是错误时,会中断整个软件的执行,造成程序无法继续往下执行,这时我们会使用例外处理,...
接续昨天的运算子(Operator): 等值运算子 Java操作 运算子 等於 == 不等於 != ...
一、前言 先前有提到,我在转职後、进到现职公司前,其实还有录取过另外一份PHP後端工程师之职缺,...
刚学完三大工厂的模式,那它们之间的差异性究竟是什麽呢? 学习目标: 探讨简单工厂、抽象工厂、工厂的差...
micro:bit 系列完赛罗~ 心得和感想在 Scratch 的主题最後一篇「Day46 Scra...