electron-vite IDE左侧读取工程文件
这是一个非常硬核且实用的需求。要实现类似 VS Code / Visual Studio 的工程文件资源管理器,我们需要打通 Electron 的 Main Process (Node.js fs 能力) 和 Renderer Process (Vue 组件交互)。
由于代码量较大,我将分为 后端 (IPC/Node) 和 前端 (Vue 组件) 两部分来构建。
核心功能规划
- 工程元数据:在根目录维护一个
project.config.json。 - 文件树生成:递归读取文件夹结构,过滤
node_modules等。 - CRUD 操作:读取内容、新建文件/文件夹、重命名、删除。
- UI 交互:递归树组件 + 右键菜单。
第一部分:后端逻辑 (Node.js + IPC)
我们继续沿用模块化的思路,新建 src/main/ipc/fs-ipc.ts。
1. 定义类型与 IPC 逻辑
1 | // src/main/ipc/fs-ipc.ts |
记得在 src/main/index.ts 中调用 setupFsIPC()。
第二部分:Preload 暴露 API
1 | // src/preload/index.ts |
第三部分:前端 Vue 组件 (递归树 + 右键菜单)
我们将创建两个组件:
FileTreeItem.vue: 递归渲染单个节点。ProjectExplorer.vue: 容器,处理右键菜单逻辑。
1. 递归子组件 src/components/explorer/FileTreeItem.vue
1 | <template> |
2. 主容器组件 src/components/explorer/ProjectExplorer.vue
这里包含了核心业务逻辑:加载工程、右键菜单、创建/删除文件。
1 | <template> |
如何集成到你的 Dockview
你可以将 ProjectExplorer.vue 作为一个 Panel 放入 Dockview 的侧边栏(如果你的布局支持侧边栏),或者作为一个普通的 Panel。
关键的联动点:
文件点击:
- 在
onFileSelect中,获取到node.path。 - 调用我们之前实现的
tab-manager->findAndActivateTab(node.path)。 - 如果没找到,则读取文件内容 (
window.fsAPI.readFile(node.path)),然后dockAPI.addPanel创建一个新的编辑器 Tab,ID 使用文件路径(确保唯一)。
- 在
右键创建:
- 创建文件成功后,可以自动触发一次“打开文件”的操作,体验会更好。
总结
这个 Demo 实现了:
- Node.js 层:安全的
fs封装,只暴露必要接口。 - 数据层:简单的
project.config.json读写。 - UI 层:递归文件树,支持无限层级。
- 交互:VS Code 风格的右键菜单,支持新建和删除。
这基本上就是一个轻量级 IDE 资源管理器的雏形了。你可以把 ProjectExplorer.vue 复制进去直接运行。