博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VSCode插件开发全攻略(二)HelloWord
阅读量:5243 次
发布时间:2019-06-14

本文共 2879 字,大约阅读时间需要 9 分钟。

更多文章请戳。

写着前面

学习一门新的语言或者生态首先肯定是从HelloWord开始。

您可以直接克隆我放在GitHub上 的代码到本地,然后尝试修改代码并运行,也可以使用微软官方的脚手架来生成项目结构,脚手架的使用我们后面再来介绍,先来熟悉一下项目结构。

HelloWorld

项目结构

项目结构其实很简单,主要是清单文件package.json以及extension.js这个插件入口文件:

352797-20181015102032795-203182193.png

package.json部分关键内容如下(已省略其它)

{    // 扩展的激活事件    "activationEvents": [        "onCommand:extension.sayHello"    ],    // 入口文件    "main": "./src/extension",    // 贡献点,vscode插件大部分功能配置都在这里    "contributes": {        "commands": [            {                "command": "extension.sayHello",                "title": "Hello World"            }        ]    }}

src/extension.js内容如下:

const vscode = require('vscode');/** * 插件被激活时触发,所有代码总入口 * @param {*} context 插件上下文 */exports.activate = function(context) {    console.log('恭喜,您的扩展“vscode-plugin-demo”已被激活!');    // 注册命令    context.subscriptions.push(vscode.commands.registerCommand('extension.sayHello', function () {        vscode.window.showInformationMessage('Hello World!');    }));};/** * 插件被释放时触发 */exports.deactivate = function() {    console.log('您的扩展“vscode-plugin-demo”已被释放!')};

解读

承如上述代码:

  • main定义了整个插件的主入口;
  • 我们在contributes.commands里面注册了一个名为extension.sayHello的命令,并在src/extension.js中去实现了它(弹出一个Hello World的提示);
  • 但是仅仅这样还不够,命令虽然定义了,但是vscode还不知道啥时候去执行它,还需要在activationEvents添加上onCommand:extension.sayHello用来告诉vscode,当用户执行了这个命令操作时去执行前面我们定义的内容;
  • 除了onCommand之外,还有onViewonUrionLanguage等等,具体我们后面会详细讲到。

运行调试

默认情况下,工程已经帮我们配置好了调试相关参数(有兴趣的可以查看.vscode/launch.json文件的写法),只需要到调试面板选中要调试的项目(仅仅是第一次需要,后续会自动记住上次调试的项目),然后按下F5就会弹出一个新的vscode窗口:

352797-20181015102059257-454930712.png

这个新窗口已经加载了我们的插件,窗口标题会注明扩展开发主机,对于只有单显示器的同学来说,很容易写着写着就忘了哪个是主窗口,哪个是新窗口,所以可以通过这个来区分。

352797-20181015102135083-905297737.png

先插句话

为了描述方便,我们约定,后续把新弹出来的那个窗口叫新窗口,之前老的那个叫旧窗口

然后按下Ctrl+Shift+P,输入HelloWorld执行对应命令,当你发现右下角弹出了HelloWorld的提示时,恭喜你,你已经掌握了你人生第109种新语言了,哈哈,开个玩笑。

添加右键菜单和快捷键

上面由于我们只是注册了命令,没有添加菜单或快捷键,调用不方便,所以我们现在添加一下。

打开package.json,按照下述方式添加:

{    "contributes": {        "commands": [            {                "command": "extension.sayHello",                "title": "Hello World"            }        ],        // 快捷键绑定        "keybindings": [            {                "command": "extension.sayHello",                "key": "ctrl+f10",                "mac": "cmd+f10",                "when": "editorTextFocus"            }        ],        // 设置菜单        "menus": {            "editor/context": [                {                    "when": "editorFocus",                    "command": "extension.sayHello",                    "group": "navigation"                }            ]        }    }}

然后重新运行插件,在编辑器的右键可以看到如下菜单:

352797-20181015102212777-337615124.png

这里我们暂时不对配置项做过渡解读,后面会有专门篇章来介绍package.json文件的写法。

关于重新加载

如果修改了扩展代码,想重新加载的话,可以直接在新窗口上按下Ctrl+R来快速重新加载,也可以先停止,然后再按F5

关于开发语言

vscode插件可以使用TypeScript来编写(官方推荐),也可以使用JavaScript,本文统一使用后者,不过使用哪种方式,能实现的功能都是一样的。

脚手架的使用

终于到脚手架环节了,如果你喜欢干净的项目的话,可以使用官方脚手架来生成。

安装脚手架:

npm install -g yo generator-code

然后cd到你的工作目录,运行yo code

352797-20181015102225326-1013029671.png

根据向导一步步选择即可,没啥好说的,运行完后就生成了一个干净的可以直接F5运行的vscode插件工程了。

转载于:https://www.cnblogs.com/liuxianan/p/vscode-plugin-hello-world.html

你可能感兴趣的文章
循环次数
查看>>
MVC5 + EF6 + Bootstrap3 (10) 数据查询页面
查看>>
Windows下的Eclipse启动出现:a java runtime environment(JRE) or java development kit(JDK) must be.......
查看>>
PLC 通讯
查看>>
【读书笔记】C#高级编程 第三章 对象和类型
查看>>
python之decode、encode及codecs模块
查看>>
使用 Apache Pig 处理数据6
查看>>
Hadoop集群内lzo的安装与配置
查看>>
CASS 7.1 和 AutoCAD 2006的安装使用
查看>>
selenium 隐式等待报错 value must be a non-negative integer
查看>>
supervisor之启动rabbitmq报错原因
查看>>
Struts2工作原理
查看>>
二 、Quartz 2D 图形上下文栈
查看>>
[Leetcode Week8]Edit Distance
查看>>
使用java断言调测程序
查看>>
针对sl的ICSharpCode.SharpZipLib,只保留zip,gzip的流压缩、解压缩功能
查看>>
第一次作业
查看>>
HashMap源码简单分析
查看>>
负载均衡的基础技术种类
查看>>
拓展欧几里得
查看>>