一个使用 Tauri V2、Rust 和 Vue 3 构建的跨平台文件管理器概念验证项目。
创建一个简单但功能齐全的文件管理器组件或应用,能够:
- 跨平台运行 (主要验证 Windows,考虑 Android/iOS)。
- 浏览文件和文件夹。
- 导航:进入子文件夹、返回上一级。
- 显示文件/文件夹的基本信息(名称、类型、大小、只读属性)。
- 为不同类型的文件和文件夹(包括隐藏文件夹)显示图标。
- 按类型(文件夹优先)和名称(支持中文)排序。
- (未来) 支持文件操作(创建、删除、重命名等)。
- (未来) 支持多选。
- 核心框架: Tauri v2 - 使用 Rust 构建跨平台应用的框架。
- 后端: Rust - 处理文件系统交互、获取初始路径等。
- 前端: Vue 3 (Composition API with
<script setup>) - 构建用户界面。 - 构建工具: Vite - 前端开发服务器和构建工具。
- 包管理器: npm
- 目录列表: 显示指定路径下的文件和文件夹。
- 导航:
- 双击文件夹进入。
- 点击 "向上" 按钮返回上一级目录。
- 信息展示:
- 名称 (带图标)。
- 类型 (根据文件扩展名生成的用户友好描述)。
- 大小 (格式化为 B, KB, MB, GB)。
- 属性 (只读标记 'R')。
- 图标:
- 区分文件夹和文件。
- 隐藏文件夹 (名称以
.开头) 显示为半透明。 - 为常见文件类型(图片、音视频、代码、压缩包、PDF等)显示不同图标。
- 排序: 列表默认按 文件夹优先 -> 文件 -> 按名称 (支持中文拼音及数字) 升序排列。
- 初始路径: 应用启动时自动获取并加载用户可执行文件所在的目录。
环境要求:
- Node.js: 下载并安装 (自带 npm)。
- Rust: 安装 Rust。
- Tauri 依赖: 根据你的操作系统,参照 Tauri v2 Prerequisites 安装必要的系统依赖(如 C++ 构建工具、WebView2 等)。
步骤:
- 克隆或下载仓库:
git clone <repository-url> cd FileManger
- 安装 Node.js 依赖:
npm install
- 运行开发环境:
这将启动 Vite 开发服务器和 Tauri 应用窗口。
npm run tauri dev
- Tauri v2 API 导入: Tauri v2 中,前端调用后端命令需要从
@tauri-apps/api/core导入invoke,而不是 v1 的@tauri-apps/api/tauri或全局window.__TAURI__对象。 - Vite 与 Tauri 集成:
- 当使用正确的 API 导入路径 (
@tauri-apps/api/core) 时,通常不需要在vite.config.js的build.rollupOptions.external中排除@tauri-apps/api。错误地添加external可能导致构建成功但运行时Failed to resolve module specifier错误。 - 需要配置
tauri.conf.json中的frontendDist指向 Vite 的输出目录(默认为dist),并确保移除或注释掉devUrl以使用 Tauri 的内建开发服务器(如果beforeDevCommand设置为构建命令如"npm run build")。如果使用 Vite 的开发服务器,则需设置devUrl指向 Vite 启动的地址 (如http://localhost:5173) 并将beforeDevCommand设置为"npm run dev"或类似的启动命令。本项目目前使用 Vite 开发服务器。
- 当使用正确的 API 导入路径 (
- 初始路径: 获取可靠的跨平台初始路径比较复杂。
env::current_exe().parent()提供了一个相对稳定的起点(程序可执行文件所在目录),比单纯的home_dir或app_data_dir更适合此场景。 - 文件列表排序: 使用 JavaScript 的
Array.prototype.sort配合String.prototype.localeCompare('zh-CN', { sensitivity: 'base', numeric: true })可以实现健壮的、支持中文拼音和数字的自然排序。 - 隐藏文件/文件夹: 在无法直接从所有平台 reliably 获取 "hidden" 属性时,通过检查名称是否以
.开头是一种常见的跨平台近似处理方式,适用于 Linux, macOS 和 Git 仓库。
- 实现真正的文件隐藏属性检测 (需要 Rust 后端针对不同平台处理)。
- 添加文件/文件夹操作:创建、删除、重名、复制、粘贴。
- 实现多选功能。
- 添加右键菜单。
- 优化大文件/目录的加载性能。
- 更完善的错误处理和用户反馈。
- 打包和测试 Android/iOS 目标。
- 添加更多文件类型的图标和预览。
- 实现可配置的排序方式(按大小、修改日期等)。