当前位置: 首页 > news >正文

vscode插件开发(四)Webview(1)

上一篇详细讲解了命令,这回我们一起来看一下Webview。vscode的插件其实可以分为两种,一种是webview插件,另一种是非webview插件。

webview插件的自由度很高,可以满足开发者的各种定制化的要求;而非webview插件只能使用vscode提供的api及ui,只适合开发简单的插件。

官方的教程:https://code.visualstudio.com/api/extension-guides/webview

vscode的webview插件的开发方式和前端开发中的iframe很像,如果把插件想像成宿主页的话,那webview就是用iframe嵌入的页面,可以通过postMessage来与插件进行信息传递。

webview可以渲染几乎所有的html元素。因此在开发插件的时候我们可以把它当成一个前端项目来开发。

目前很少有不依赖前端框架的前端开发了,官方的webview教程没有用到前端框架,大家感兴趣可以看看,下面我就讲一下如何采用vue3来开发webview插件。

首先介绍Webview UI Toolkit for Visual Studio Codehttps://github.com/microsoft/vscode-webview-ui-toolkit这是微软提供的一套具有vscode风格的ui库,在开发插件的时候可以导入其中的ui组件使得插件界面的风格统一。微软为这个ui库提供了一个例子仓库https://github.com/microsoft/vscode-webview-ui-toolkit-samples里面包含了原生js/ts的例子及使用框架的例子:
在这里插入图片描述

接下来我们就把vue3的例子下载下来,在这个例子的基础上实现webview插件的开发。https://github.com/microsoft/vscode-webview-ui-toolkit-samples/tree/main/frameworks/hello-world-vue

下载代码时可以直接git clone整个项目到电脑上然后进入hello-world-vue文件夹,也可以运行下面的命令

npx degit microsoft/vscode-webview-ui-toolkit-samples/frameworks/hello-world-vue hello-world

只下载vue的工程。

把代码下下来后,先装好依赖。

npm run install:all

在下载代码及安装依赖的时候可能会因为网络问题失败,可以多试几次,一直出错的话就只能挂代理了。

我们下载下来的工程包含两部分,一部分是vscode插件工程,还有一部分是vue工程。运行上面的这句脚本会把vscode插件及vue工程的依赖都装好。
在这里插入图片描述

之后运行

npm run start:webview

就会开启vue工程的调试模式,在浏览器中输http://localhost:3000就可以看到hello world页面了。
在这里插入图片描述

按钮是不是很有vscode的风格_

整个vue工程的构建工具采用的是vite,我们对代码的改动可以几乎实时地反映在浏览器中。

webview插件的开发模式就是先调试我们的vue工程,当我们把页面的效果交互逻辑都调整满意了之后,就可以把vue工程构建打包。然后启动vscode插件的调试模式,来联调整个插件。

整个过程还是有些复杂的,如果大家写过electron的话就会比较熟悉这种开发模式了。electron的渲染进程和主进程都是独立的,如果进程间想进行信息传递的话需要借助IPC。在webview插件开发中,webview与插件进程是通过postMessage来通信的,所以我们要自己定义一种数据传输的格式,方便插件的各种功能的实现。

在Hello World插件中,点击Howdy!按钮就会向插件的主进程发送一条消息,然后插件再触发消息框显示相应的文字。

发送消息的代码:
在这里插入图片描述

接收处理消息的代码:
在这里插入图片描述

在编写插件的时候可以参考里面红框中的这种模式,在webview与插件进程间传递一个类似的包含命令名及数据的对象,在接收的时候,由不同的命令名区分不同的操作。

联调的时候,输入

npm run build:webview

对vue工程进行编译打包,然后按F5,进入vscode插件的调试模式,然后按 Ctrl/Command+Shift+P 打开命令面板,在里面输入 Hello World,就能激活这个示例插件了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Asxg3dw2-1669128090450)(:/75b7c0719615454ba7609f4cf025d739)]

点击Howdy!按钮就会弹出一个消息框。
在这里插入图片描述

这就是一个webview版的Hello World插件。本篇只是带大家熟悉一下webview插件,下一篇将详细讲一下webview插件开发的具体事项。


江达小记

相关文章:

  • R语言使用data.table包的fread函数读取(加载)csv数据为data.table格式、使用summary函数查看数据的汇总统计信息
  • matlab 计算机载点云的密度
  • 六.初阶指针
  • 人工智能-4计算机视觉和图像处理01
  • R语言dplyr包select函数筛选dataframe数据中以指定字符串开头的数据列(变量)
  • 【SpringBoot】SpringBoot+SpringSecurity+CAS实现单点登录
  • 【仿真建模】AnyLogic入门基础教程 第一课
  • 《看漫画学Python》1、2版分享,python最佳入门教程,中学生用业余时间都能学会,北大教授看完都这样定义它
  • python一键去PDF水印,只需十行代码,超级简单...
  • 城市消费券,拒绝恶意爬取
  • C语言第十一课(下):优化扫雷游戏
  • MySQL之优化SELECT语句
  • IPv6与VoIP——ipv6接口标识与VoIP概述
  • 性能测试_JMeter_connection timed out :connect
  • SpringCloud 相关
  • 收藏网友的 源程序下载网
  • Idea+maven+scala构建包并在spark on yarn 运行
  • java中的hashCode
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Vue 重置组件到初始状态
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 码农张的Bug人生 - 见面之礼
  • 七牛云假注销小指南
  • 全栈开发——Linux
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 删除表内多余的重复数据
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 小程序button引导用户授权
  • 移动端唤起键盘时取消position:fixed定位
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​如何在iOS手机上查看应用日志
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #每天一道面试题# 什么是MySQL的回表查询
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十三)Flask之特殊装饰器详解
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转载)(官方)UE4--图像编程----着色器开发
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET BackgroundWorker
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET框架设计—常被忽视的C#设计技巧
  • @ConfigurationProperties注解对数据的自动封装
  • @Documented注解的作用
  • @JoinTable会自动删除关联表的数据
  • @ModelAttribute 注解
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!