Files
mnote/design/90-reference/90-1-filetree.md
T

85 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 90-1 参考资料:文件树 Rust 生态调研
是的,Rust生态中有多个类似VSCode文件树的实现,涵盖**终端(TUI)组件**、**GUI组件**和**独立应用**三类,均支持文件/目录的层级展示、折叠展开与交互操作。
---
### 一、终端(TUI)领域:VSCode风格文件树组件/应用
#### 1. filetree (ft) - 最接近VSCode文件树的TUI实现
- 仓库:https://github.com/nyanko3141592/filetree
- 版本:v0.3.52026年3月)
- 核心特性:
- VSCode风格界面,支持文件/目录层级展示与折叠
- Git状态集成(修改、未跟踪、忽略文件颜色标记)
- Vim键绑定(hjkl导航)与鼠标支持
- 系统剪贴板集成,支持文件复制/剪切/粘贴
- 可通过cargo直接安装:`cargo install filetree`
#### 2. fileview - 轻量级VSCode风格文件树TUI
- 仓库:https://crates.io/crates/fileview
- 版本:v1.8.12026年2月)
- 特点:
- 极简设计,启动迅速,无需配置
- 支持图像预览(Kitty/iTerm2/Sixel)与语法高亮
- 模糊查找功能,快速定位文件
- 多文件选择与批量操作
#### 3. 通用TUI文件树组件库
| 库名称 | 适用框架 | 核心特点 |
|--------|----------|----------|
| tui-file-explorer | Ratatui | 双面板布局,独立左右浏览窗格,Tab切换 |
| tui-tree-widget | Ratatui | 通用树视图组件,支持自定义数据结构 |
| ratatui-explorer | Ratatui | 高度可定制,支持键盘输入处理 |
| ratkit | Ratatui | 包含树视图在内的综合组件库,支持可调整大小的分割面板 |
---
### 二、GUI领域:Rust图形界面文件树组件
#### 1. iced_file_tree - Iced GUI框架的文件树组件
- 仓库:https://crates.io/crates/iced_file_tree
- 适配Iced跨平台GUI库(受Elm启发)
- 支持文件系统导航与层级展示,可集成到桌面应用中
#### 2. Tauri应用中的文件树实现
- TauriRust+WebView)可通过Rust后端+前端组件实现VSCode风格文件树
- 后端:使用`std::fs::read_dir`读取目录内容,返回`(path, is_directory)`元组
- 前端:创建嵌套HTML列表(ul/li)表示文件夹结构,添加VSCode风格图标与交互
---
### 三、使用场景与选择建议
| 使用场景 | 推荐选择 | 理由 |
|----------|----------|------|
| 快速体验VSCode风格文件树 | filetree(ft) | 开箱即用,VSCode界面风格,Git集成 |
| 集成到Ratatui终端应用 | tui-file-explorer | 专为Ratatui设计,双面板布局,功能完善 |
| 构建跨平台GUI应用 | iced_file_tree | 适配Iced框架,原生GUI体验 |
| 开发Tauri桌面应用 | 自定义实现 | 结合Rust后端与Web前端,灵活性最高 |
---
### 四、快速上手示例
使用filetree(ft)快速体验VSCode风格文件树:
```bash
# 安装
cargo install filetree
# 运行(当前目录)
ft
# 常用操作
hjkl - 导航(Vim风格)
g/G - 跳至顶部/底部
Enter - 打开文件/文件夹
dd - 删除文件/文件夹
yy - 复制,p - 粘贴
:q - 退出
```
如果你需要将文件树组件集成到自己的Rust项目中,建议根据应用类型(终端/GUI)选择对应的组件库,或参考filetree的实现方式进行定制开发。
需要我给你一份在 Ratatui 中快速集成 tui-file-explorer 实现 VSCode 风格单面板文件树的最小可运行代码示例吗?