# mohen-editor **Repository Path**: yulece-application/mohen-editor ## Basic Information - **Project Name**: mohen-editor - **Description**: 个人博客编辑器windows版本。可以同步到个人博客 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-29 - **Last Updated**: 2026-09-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 墨痕编辑器 (mohen-editor) 离线优先的本地 Markdown 编辑器,可选同步到「墨痕博客」后端。 - 本地文件优先:`localDir` 存 `.md`,断网也能写。 - 可选同步:填 `backendUrl` 后,文章可推送到线上博客(`/api` 接口)。 - 实时协作:同一篇文章在别处被保存时,通过 WebSocket 收到提醒,避免互相覆盖。 ## 技术栈 | 层 | 技术 | |---|---| | 前端 | Vue 3 + Vite | | 桌面壳 | Electron(主进程 `electron/main.cjs` + 预加载 `electron/preload.cjs`) | | 渲染 | `marked` 渲染 Markdown,`DOMPurify` 清洗 | | 通信 | `axios` 调后端 REST;WebSocket `/ws/article/{id}` 订阅文章变更 | ## 目录结构 ``` mohen-editor/ ├── index.html # 入口 HTML ├── vite.config.js # 构建配置(含 stripCrossorigin 插件) ├── package.json ├── src/ │ ├── main.js # 挂载 Vue │ ├── App.vue │ ├── views/ │ │ └── LocalEditor.vue # 主编辑界面 │ ├── api/ # http.js / index.js(REST 封装) │ ├── composables/ │ │ ├── useArticleWebSocket.js # 按文章订阅 WS │ │ ├── useEditorConfig.js # 后端地址 / 本地目录配置 │ │ ├── useDraftStore.js # 草稿本地存储 │ │ └── useToast.js │ ├── lib/ │ │ ├── markdown.js # 渲染 │ └── mdEditorTools.js # 编辑器工具栏操作 │ └── assets/tokens.css ├── electron/ │ ├── main.cjs # 主进程(IPC:本地文件读写、目录选择、配置) │ └── preload.cjs ├── dist/ # 构建产物(gitignore) └── desktop-app/ # 打包后的 Electron 应用(gitignore) ├── 墨痕博客编辑器.exe ├── resources/app/dist/ # 复制自上面的 dist/ └── resources/app/electron/ # 复制自上面的 electron/ ``` > `node_modules` 是软链,指向 `blog/frontend/node_modules`,不要单独安装。 ## 快速开始(开发) ```bash # 依赖已通过软链共享,无需单独安装;若首次使用先确保 blog/frontend 装过依赖 npm run dev ``` - Web 模式:浏览器打开 `http://localhost:5173`。 - 桌面模式:`electron .`(需先 `npm run build`,见下)。 ## 构建 ```bash npm run build # 产物输出到 dist/ ``` 构建会执行 `stripCrossorigin` 插件:**必须**。Electron 用 `file://` 加载本地 `index.html`,而 Vite 默认给 `