vscode-extension-treeview
Installation
SKILL.md
VSCode Extension TreeView
任务目标
- 本 Skill 用于:在 VSCode 侧边栏创建自定义树形视图展示数据
- 能力包含:TreeDataProvider、View Container、View Actions、视图刷新
- 触发条件:当用户需要展示层次结构数据或创建自定义视图时
前置准备
- 环境要求:已完成 vscode-extension-basics-skill 学习
- 前置知识:TypeScript 基础
操作步骤
标准流程
1. 声明 TreeView 贡献点
{
"contributes": {
"views": {
"explorer": [
{
"id": "nodeDependencies",
"name": "Node Dependencies"
}
]
}
}
}
2. 实现 TreeDataProvider
export class MyTreeDataProvider implements vscode.TreeDataProvider<MyTreeItem> {
getTreeItem(element: MyTreeItem): vscode.TreeItem {
return element;
}
getChildren(element?: MyTreeItem): Thenable<MyTreeItem[]> {
if (!element) {
return Promise.resolve(this.getRootItems());
}
return Promise.resolve(this.getChildItems(element));
}
}
3. 注册 TreeDataProvider
const provider = new MyTreeDataProvider();
vscode.window.registerTreeDataProvider('myView', provider);
// 或创建 TreeView 以获取更多控制
const treeView = vscode.window.createTreeView('myView', {
treeDataProvider: provider
});
4. 创建 TreeItem
class MyTreeItem extends vscode.TreeItem {
constructor(
public readonly label: string,
public readonly collapsibleState: vscode.TreeItemCollapsibleState
) {
super(label, collapsibleState);
this.tooltip = `${label} - description`;
this.description = 'version 1.0';
}
}
5. 添加视图刷新功能
class MyTreeDataProvider implements vscode.TreeDataProvider<MyTreeItem> {
private _onDidChangeTreeData = new vscode.EventEmitter<MyTreeItem>();
readonly onDidChangeTreeData = this._onDidChangeTreeData.event;
refresh(): void {
this._onDidChangeTreeData.fire();
}
}
// 添加刷新命令
vscode.commands.registerCommand('myView.refresh', () => {
provider.refresh();
});
可选分支
当需要添加视图操作按钮时
{
"contributes": {
"commands": [{
"command": "myView.refresh",
"title": "Refresh",
"icon": "media/refresh.svg"
}],
"menus": {
"view/title": [{
"command": "myView.refresh",
"when": "view == myView",
"group": "navigation"
}]
}
}
}
当需要创建 View Container 时
{
"contributes": {
"viewsContainers": {
"activitybar": [{
"id": "myContainer",
"title": "My Container",
"icon": "media/icon.svg"
}]
},
"views": {
"myContainer": [{
"id": "myView",
"name": "My View"
}]
}
}
}
资源索引
领域参考
-
- 何时读取:需要创建基本树视图时
- 内容:TreeDataProvider 实现、TreeItem 创建
-
references/treeview-advanced.md
- 何时读取:需要高级视图功能时
- 内容:View Container、View Actions、Welcome Content
注意事项
性能优化
- 懒加载子节点
- 实现 onDidChangeTreeData 事件支持刷新
- 避免一次性加载大量数据
用户体验
- 提供有意义的图标和描述
- 支持键盘导航
- 在视图中显示 Welcome Content 当空时
Related skills
More from morning-start/book-skills
rust-skills
Rust 程序设计语言完整技能集,采用元认知框架,涵盖基础语法、所有权系统、泛型 Trait、并发异步、Cargo 包管理等,支持 Layer 1/2/3 三层认知模型
10dashboard-skills
数据看板技能库,使用 Python + Streamlit + ECharts + Pandas 快速构建数据分析和可视化应用,掌握从数据处理到界面展示的完整技能体系
5moonbit-skills
MoonBit(月兔)编程语言完整技能集,面向云与边缘计算的 AI 原生语言,涵盖核心语法、数据类型、函数式编程、工具链、包管理与多后端编译
4git-skills
Git版本控制技能,掌握仓库管理、提交操作、分支协作、远程同步等核心能力,提供安全的操作指导和故障排除
3hermes-agent-config
Hermes Agent 配置系统技能库,掌握 Memory 持久化记忆、Context Files 上下文注入、Personality 个性化配置、AGENTS.md 工作手册和分层记忆系统的完整技能体系
3tauri-skills
Tauri v2 桌面应用开发技能
2