SuperAPI AI 工具集

vscode-extension-webview

编程与开发

查看项目

更新于 10-16 01:19

技能介绍

用途:该技能用于在 VSCode 扩展中创建自定义 Webview 界面,实现与 VSCode 深度集成的 UI 与交互功能。触发条件为用户需要创建自定义 UI 界面或实现复杂交互功能。

主要能力:包含 Webview Panel 创建、双向消息传递、生命周期管理、本地资源加载以及 CSP 安全策略。核心 API 涉及 vscode.window.createWebviewPanel、panel.webview.html、panel.webview.postMessage、panel.webview.onDidReceiveMessage,以及 Webview 端 acquireVsCodeApi()。

必要用法:先创建 Webview Panel,设置 enableScripts 与 localResourceRoots,再赋值 HTML 内容并配置 CSP。扩展向 Webview 发送消息用 postMessage,Webview 端通过 window.addEventListener('message') 接收;Webview 端用 vscode.postMessage 发送,扩展端用 onDidReceiveMessage 接收。生命周期通过 onDidDispose 与 onDidChangeViewState 管理。加载本地资源使用 vscode.Uri.joinPath 配合 asWebviewUri;状态持久化使用 vscode.setState 与 getState。

前置准备:需完成 vscode-extension-basics-skill 学习,并具备 HTML/CSS/JavaScript 基础。附有 references/webview-basics.md、references/webview-messaging.md、references/webview-security.md 作为参考。

限制与注意事项:应启用 Content Security Policy,使用 localResourceRoots 限制资源访问,验证并清理所有用户输入;使用 retainContextWhenHidden 需谨慎,因其内存开销较高,建议优先用 getState/setState;主题适配应使用 CSS 变量支持 vscode-light、vscode-dark、vscode-high-contrast。具体价格、平台与更多细节暂未提供。