php-manager-website/README-jsonview.md

252 lines
9.1 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.

# JSON Viewer 桌面版 JSON 阅读器Tauri + Vue 3 + TypeScript
一个跨平台桌面端 JSON 阅读 / 编辑工具,基于 **Tauri 2 + Vue 3 + TypeScript** 实现,专注于「**一眼看懂 JSON 结构,快速定位并编辑需要的字段**」。
### 界面预览
![JSON Viewer 界面预览](docs-jsonview/view.png)
- 左侧:树形结构视图,按对象 / 数组分层展示,并显示子节点数量
- 中间:原始文本视图,支持格式化 / 压缩、缩进风格切换2 空格 / 4 空格 / Tab
- 右侧:节点详情区(选中树节点后展示更多信息)
- 顶部工具栏:保存、格式化、压缩、缩进、主题切换、搜索(支持 Ctrl+F
- 底部状态栏:当前文件状态(未打开 / 已修改)与 JSON 是否有效
### 主要特性
- 加载本地 JSON 文件(文件对话框 / 拖拽到窗口 / 右键“打开方式”)
- 树形结构查看 JSON支持折叠/展开、子项计数提示,自动滚动到当前选中节点
- JSON 格式化 / 压缩一键切换缩进风格2 空格 / 4 空格 / Tab并记住用户偏好
- 节点值编辑字符串、数字、布尔、null实时校验并给出报错位置
- 原始 JSON 文本同步编辑与实时校验(错误行列直接高亮)
- 关键字搜索(键名/值),支持大小写敏感、上一条 / 下一条结果导航
- 支持保存 / 另存为 JSON 文件,避免破坏原始数据
### 快速上手(作为使用者)
1. 启动应用后,点击窗口左上方的 **“打开”** 按钮,或直接将 `.json` 文件拖拽进窗口
2. 在左侧树中展开需要关注的节点,或按 `Ctrl+F` 搜索键名 / 值快速定位
3. 双击节点值即可就地编辑;右侧原始文本和底部状态栏会实时反馈 JSON 是否有效
4. 编辑完成后,点击工具栏的 **“保存”** 或 **“另存为”** 持久化到本地文件
---
## 环境要求
- Node.js ≥ 18
- Rust 工具链stable支持 Tauri 2
- 平台支持:
- Windows 10 及以上
- macOS 10.15 及以上
- 主流 Linux如 Ubuntu、Fedora
> 如首次使用 Tauri可参考官方文档安装系统依赖如 Windows 上的 MSVC、WebView2 等)。
---
## 安装依赖
在项目根目录(`E:\Workspace\jsonview` 或你的克隆目录)执行:
```bash
npm install
```
这会安装前端依赖Vue / Vite / Pinia / Tauri CLI 等)。
---
## 开发模式运行(本地调试)
开发模式会同时启动:
- Vite 前端开发服务器(热更新)
- Tauri 桌面应用(加载 Vite 开发页面)
在项目根目录执行:
```bash
npm run tauri:dev
```
运行成功后会自动弹出桌面应用窗口,你可以:
- 点击顶部工具栏的 **“打开”** 选择本地 `.json` 文件
- 或直接将 `.json` 文件从资源管理器 / Finder 中拖拽到窗口中
> **重要**:必须用 `npm run tauri:dev` 或打包后的 exe 运行,**不要**用 `npm run dev`(仅 Web 预览,无“打开方式”、拖放、快捷键等桌面功能)。工具栏右侧 **“诊断”** 按钮可查看启动参数,用于排查“打开方式”是否传入路径。
### 开发时常用操作
- 修改 `src/` 下的前端代码会自动热更新Tauri 窗口会自动刷新内容)
- 修改 `src-tauri/` 下的 Rust 代码后Tauri 会重新编译并重启应用
---
## 打包构建(生成安装包 / 可执行文件)
项目已经在 `src-tauri/tauri.conf.json` 中配置了应用名称、窗口大小和打包目标。
### 1. 仅构建前端(生成静态资源)
如果你只想构建 Web 端静态资源(调试用),可以执行:
```bash
npm run build:web
```
这会在 `dist/` 目录下生成前端打包产物。
### 2. 构建桌面应用安装包(推荐)
标准的 Tauri 打包流程为:
```bash
npm run build
```
该命令会执行:
1. `vite build`:构建前端,输出到 `dist/`
2. `tauri build`:使用 `dist/` 中的前端资源,打包为桌面应用
打包完成后,生成的可执行文件 / 安装包会出现在:
- **Windows**`src-tauri/target/release/jsonview.exe`(可直接运行),以及 **NSIS 安装包** `src-tauri/target/release/bundle/nsis/JSON Viewer_0.1.0_x64-setup.exe`
- macOS`src-tauri/target/release/bundle/dmg/` 或 `.app`
- Linux`src-tauri/target/release/bundle/deb/`、`AppImage` 等
> **Windows 安装包说明**:构建时会先运行 `scripts/ensure-nsis-windows.ps1`,在 `src-tauri/target/.tauri/` 下预下载 NSIS 工具(含重试与较长超时),避免 Tauri 内置下载超时。安装包会生成在 `bundle/nsis/` 目录下。
> 如果你只想单独运行 Tauri 构建(已经手动执行过 `vite build`),也可以:
>
> ```bash
> npm run tauri:build
> ```
---
## 功能一览与使用说明
- **打开 JSON 文件**
- 点击工具栏“打开”按钮,选择 `.json` 文件
- 或将 `.json` 文件拖拽到窗口,即可自动加载
- **树形浏览与折叠**
- 左侧树视图展示 JSON 对象/数组结构
- 点击 `+/-` 折叠/展开节点,折叠时会显示子节点数量 `(X 项)`
- **编辑节点值**
- 对字符串/数字/布尔/null 节点:双击值进入编辑模式
- 输入合法 JSON 片段(如 `"hello"`、`123`、`true`、`null`),回车或失焦保存
- 非法输入会提示错误并回退
- **原始文本编辑与验证**
- 右侧“原始文本视图”可以直接编辑完整 JSON 文本
- 实时使用 JSON 解析校验,错误信息会显示在编辑器头部与状态栏
- **缩进设置**
- 工具栏提供:`2 空格 / 4 空格 / Tab`
- 切换后会即时重新格式化当前 JSON 显示
- 用户选择会保存在本地,下一次启动沿用
- **搜索与导航**
- 工具栏右侧输入搜索词并回车,可在键名和字符串值中匹配
- “上一条 / 下一条”在所有匹配项之间循环跳转
- 每次跳转会自动展开相关节点并滚动到可视区域
---
## 目录结构(简要)
```text
jsonview/
package.json # 项目配置与脚本
tsconfig.json # TypeScript 配置
vite.config.ts # Vite 配置
index.html # 前端入口 HTML
src/
main.ts # Vue 入口
App.vue # 页面布局与 Tauri 拖拽处理
styles.css # 全局样式
types/json.ts # JsonValue / JsonNode 等类型定义
services/
jsonParser.ts # JSON 解析与验证、树构建
formatter.ts # 缩进与格式化
searchService.ts # 搜索逻辑
fileService.ts # 调用 Tauri 命令操作文件
store/
useJsonStore.ts # Pinia Store文件状态、缩进、验证、搜索等
components/
Toolbar.vue
SearchPanel.vue
JsonTreeView.vue
JsonNode.vue
JsonEditorPanel.vue
StatusBar.vue
src-tauri/
Cargo.toml # Rust / Tauri 依赖配置
build.rs # Tauri 构建脚本
tauri.conf.json # Tauri 应用配置(窗口、打包等)
src/
main.rs # Tauri 入口open/save JSON 命令实现
```
---
## 创建 GitHub 仓库并启用自动构建
### 1. 初始化 Git若尚未初始化
```bash
git init
git add .
git commit -m "Initial commit"
```
### 2. 用 GitHub CLI 创建仓库并推送(推荐)
1. 安装 [GitHub CLI](https://cli.github.com/) 并登录:`gh auth login`
2. 在项目根目录执行(仓库会创建在当前登录的 GitHub 账号下):
```powershell
# Windows PowerShell公开仓库仓库名 jsonview
.\scripts\create-github-repo.ps1 -RepoName jsonview -IsPrivate $false
# 或私有仓库
.\scripts\create-github-repo.ps1 -RepoName jsonview -IsPrivate $true
```
Linux/macOS 可用:
```bash
chmod +x scripts/create-github-repo.sh
./scripts/create-github-repo.sh jsonview # 公开
./scripts/create-github-repo.sh jsonview private # 私有
```
若不用脚本,可手动执行:
```bash
gh repo create jsonview --public --source . --remote origin --push --description "JSON Viewer - 跨平台 JSON 桌面阅读/编辑工具 (Tauri + Vue 3)"
```
### 3. 启用自动构建GitHub Actions
- 仓库已包含 `.github/workflows/build.yml`,会在以下情况自动构建并生成 **Draft Release**
- 推送到 `main``release` 分支
- 或在 Actions 页手动触发workflow_dispatch
- 构建产物Windows (x64)、macOS (Intel + Apple Silicon)、Linux (x64) 的安装包/可执行文件,会上传到该次运行的 Release 草稿中。
- 若提示权限不足:在仓库 **Settings → Actions → General** 中,将 **Workflow permissions** 设为 **Read and write permissions**
### 4. 发布版本
- 每次自动构建会创建带版本号的 Tag`v0.1.0`)和 Draft Release。
-**Releases** 页打开对应草稿,检查附件后点击 **Publish release** 即可对外发布。
---
## 开发建议
- 如果你要扩展功能(如:添加/删除节点、虚拟滚动、大文件优化等),推荐从 `src/store/useJsonStore.ts``src/components/JsonNode.vue` 入手。
- 如要调整 UI 风格,可以在 `styles.css` 中统一修改样式,或引入你熟悉的 Vue UI 组件库(如 Naive UI、Element Plus 等)。