0

0

VSCode的Webview API:在编辑器中创建丰富的UI界面

P粉986688829

P粉986688829

发布时间:2026-01-08 16:36:02

|

500人浏览过

|

来源于php中文网

原创

vscode扩展可通过webview api嵌入交互式html界面:一、用createwebviewpanel创建独立可拖拽面板,配置csp与消息通信;二、用registerwebviewviewprovider将webview嵌入侧边栏,声明views并管理状态;三、通过aswebviewuri安全加载本地资源并隔离样式。

vscode的webview api:在编辑器中创建丰富的ui界面

如果您在开发VSCode扩展时希望在编辑器内部嵌入自定义的、具备交互能力的HTML界面,则Webview API提供了直接集成网页内容的能力。以下是实现该功能的关键方法:

本文运行环境:MacBook Pro,macOS Sequoia。

一、使用webview.panel创建独立面板

该方式通过vscode.window.createWebviewPanel启动一个可折叠、可拖拽的独立面板,适合承载中等复杂度的UI,支持状态持久化与消息通信。

1、在extension.ts中调用vscode.window.createWebviewPanel,传入视图类型、标题、显示位置及选项对象。

2、设置webview.options以启用脚本执行,并配置本地资源根路径为vscode-webview-resource。

3、通过webview.html属性注入完整HTML字符串,其中script标签需使用nonce属性并配合CSP策略。

4、监听webview.onDidReceiveMessage事件处理前端发来的消息,并使用webview.postMessage向前端发送响应数据。

二、嵌入内联webview.view到侧边栏或编辑器区域

该方式利用vscode.window.registerWebviewViewProvider注册视图提供者,使Webview作为原生UI组件出现在侧边栏、大纲或自定义视图容器中,适配VSCode原生布局系统。

1、定义类实现WebviewViewProvider接口,在resolveWebviewView方法中配置webview属性与初始HTML。

迅易鲜花网店管理系统
迅易鲜花网店管理系统

功能模块:功能完善、展示信息丰富的电子商店销售平台;针对企业与个人的网上销售系统;开放式远程商店管理;完善的订单管理 ; 快速建店:只需简单设置,10分钟即可以建立一个功能完备的网上商城; 操作简便:采用人性化的布局,界面规范,操作简捷; 安装方便:只需传到您的虚拟空间即可; HTML编辑器:内置优秀的HTML在线编辑器; 可扩展性:软件构架灵活,考虑未来功能扩充之需要,具有较强的可扩展性; 完善

下载

2、在package.json的contributes.views部分声明webview.view条目,指定id、name和icon。

3、确保webview.cspSource与HTML中的Content-Security-Policy meta标签值一致,例如vscode-webview://$(webview-csp-source)。

4、使用vscode.getState()和vscode.setState()在Webview生命周期中保存和恢复UI状态。

三、加载本地静态资源并启用样式隔离

为避免CSS污染VSCode主界面或被其样式覆盖,需将JS/CSS文件作为base64内联或通过vscode-resource协议加载,并启用webview的enableScripts和localResourceRoots选项。

1、将CSS文件读取为字符串,使用vscode.Uri.file()转换为vscode-resource URI格式。

2、在HTML中通过标签引用该URI,确保href属性值形如vscode-resource:/Users/xxx/extension/media/style.css

3、调用webview.asWebviewUri()方法对任意本地路径进行安全转换,此步骤不可省略,否则资源加载将被CSP拦截

4、在HTML的style标签内添加:root { --vscode-editor-background: #1e1e1e; }等变量映射,复用VSCode主题色。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

452

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

546

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

331

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

81

2025.09.10

resource是什么文件
resource是什么文件

Resource文件是一种特殊类型的文件,它通常用于存储应用程序或操作系统中的各种资源信息。它们在应用程序开发中起着关键作用,并在跨平台开发和国际化方面提供支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

176

2023.12.20

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

718

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1561

2023.10.24

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

19

2026.03.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

CSS教程
CSS教程

共754课时 | 40万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号