项目概览 HemyEditor¶
这是一个个人项目。
一、背景介绍¶
工作中经常遇到需要写一些资料的地方,记录笔记之类的,在早期的时候,用过各种的工具,比如:ediary、为知笔记、印象笔记、OneNote等各种的工具。这些早期的工具都是不支持markdown文档的,生成的文件也不是doc、pdf等一些常见的文件,如果要生成常见文档,还得找各种的插件,然后导出到对应的文档类型,插件有时候并不是很好用,导出的文档格式并不是想要的格式,很不完美。
后面markdown开始火起来了,具体是啥时候火起来的就不记得了,我接触的时候应该是2019年左右吧。发现这种格式的文档很好用,也比较美观。
个人先后也用过不少的markdown编辑器:
- Markdown pad 2 这个是最早使用的工具。这个的预览窗口和编辑窗口可以同屏幕,个人还是比较喜欢这种方式的。这个工具只能编辑单个的markdown文档,不具有资源管理的功能。
- Typora 这个工具有段时间发现别人都在用,就试用了下。这款编辑器的预览是实时的,编辑窗口和预览窗口混在一起,个人不是很喜欢这种风格。早期有免费版本的,后面就收费了,也没有再使用。
- visual studio code 这个工具很强大,安装个markdown插件,然后就可以用了,配置方便,使用起来也还行。这个工具是一个堆编程人员很友好的工具,功能很多,很不简洁,如果你只是用来做markdown编辑,那有点浪费。
- Jetbrains IDEA 本身是个集成的IDE,安装相关的插件,就可以进行markdown编辑,功能还行,插件比较丰富。这个工具比较大,用起来不是很方便,后面也放弃了。
- VNote 一款开源免费的笔记本软件,基于QT框架开发的。用起来也不差,有资源管理器功能,可以导入markdown文档。不好的一点是这个工具的文档是安装vx.json来的,资源管理器显示也是按照这个文件来的,而且还有个db文件。在删除、移动、新增目录、打开某个文件夹之类的一些操作上并不是很友好,你需要去手动加载索引,需要手动将文件加入索引。
- Jetbrains WriteSide 专门的文档编写软件,软件允许开发人员和编写人员在产品文档、API 参考、开发人员指南、教程和操作方法方面进行协作,基于人工智能的拼写检查和语法纠正工具,支持超过 25 种语言。个人当前正在使用的是这个,也还行,不算太差。这个对markdown预览不是太好,有些页面功能不能完全显示。
总之没有一款用的很顺手的工具,所以就想着能不能自己做一个,QT不会,而且那个做出来感觉界面可能不太好看。MFC的就不考虑的。网上看了下,electron这个框架很不错,visual studio code、WeChat、有道云笔记、印象笔记、钉钉、各类app的桌面程序都在使用这个框架,很热门。
二、功能预览(目标)¶
- 支持markdown编辑和实时预览
- 支持文档资源管理器功能
- 主题、插件、快捷输入
- 支持数学公式、mermaid、PlantUml渲染
- 支持mkdocs的material主题部分功能,选项卡、告警
- 支持表格编辑器
- 支持本地数学公式、mermaid、PlantUml编辑窗口
- 支持本地简单的绘图功能
三、参考¶
- Vue3 Vite electron 开发桌面程序
- Vite+Electron快速构建一个VUE3桌面应用
- vite+vue3+ts+electron桌面应用web端桌面端开发及生产打包配置!
- 基于electron-vite构建Vue桌面客户端
- 用vite的方式开发electron应用
- vue3+vite+electron开发桌面端应用流程
- 从0到1搭建electron+vite+vue3模板
- 基于Electron24+Vite4+Vue3搭建桌面端应用实战教程
- webim-vue3-demo 是基于环信 sdk 开发的一款具有单聊、群聊等功能的示例应用,为了 vue 用户能够快速集成环信 IM SDK
- 前端必学的桌面开发:Electron+React开发桌面应用
- 学习 Electron:构建跨平台桌面应用
- Electron + Vue3 开发桌面应用
- Vue+Electron打包桌面应用(从零到一完整教程)
- vue+electron开发桌面应用程序
- WEB代码编辑器哪家强
- Web代码编辑器使用统计
四、开源软件选型¶
4.1 Electron¶
- Electron
- Electron 中文文档
- electron-vite 下一代 Electron 开发构建工具。基于 Vite,快速、简单且功能强大!
- electron-vite
- electron-vite-vue 真正简单的Electron + Vue + Vite样板。
- vite-plugin-electron vite-plugin-lectron让开发Electron应用变得和普通的Vite项目一样简单。
- vite-electron-builder
- awesome-vite Awesome Vite.js
- https://github.com/vitejs/vite
4.2 Markdown解析器¶
- Remarkable 一个纯 JavaScript 的 Markdown 解析器,解析速度快而且易于扩展。100% 支持 Commonmark。
- Marked: 一款可以编译和解析markdown的开源库,支持命令行、浏览器。它支持多种 Markdown 语法,并能够将 Markdown 文本转换为 HTML。它的文档丰富,使用简单。
- CommonMark: 是由 John MacFarlane 开发的 Markdown 解析库。它严格遵循 Markdown 语法规范,具有很好的兼容性。CommonMark 可以将 Markdown 文本转换为 HTML,也可以将 HTML 文本转换为 Markdown
- Markdown-it 一款功能强大的Markdown解析器,支持丰富的Markdown语法,能够轻松将Markdown文本转换为HTML格式。它拥有丰富的插件和配置选项,让你的文档编辑更加灵活多变。
- Markdown-it
- markdown-it 中文文档
- markdown-it-footnote:支持脚注。
- markdown-it-task-lists:支持任务列表。
- markdown-it-abbr:支持缩写。
- markdown-it-container:支持自定义容器。
- markdown-it-anchor:为标题自动生成锚点。
- markdown-it-table-of-contents:生成Markdown文档的目录。
- markdown-it-emoji:支持Emoji表情。
- markdown-it-katex:支持LaTeX公式。
- Markdown-WASM 基于WebAssembly的开源Markdown解析库,由知名开发者rsms打造。它旨在提供一种轻量级、高效且易于集成的方式,用于在网页应用中渲染Markdown文本。 Markdown-wasm demo
- Vue-Markdown 一个基于Vue的Markdown解析器。
- vue-markdown-loader 一个用于加载 markdown 文件的 Webpack loader。
- markdown-it-vue The vue lib for markdown-it.
- Lute 一款结构化的 Markdown 引擎,支持 Go 和 JavaScript
- Blackfriday 在Go中实现的Markdown处理器。当前支持HTML输出以及Smartypants扩展。
- Markdown 鸿蒙平台的原生Markdown解析器
4.3 Vue¶
4.4 代码编辑器¶
- Monaco
- Monaco Editor API
- codemirror
- wangEditor 开源 Web 富文本编辑器,开箱即用,配置简单
- Editor.md 开源在线
- Ace (Ajax.org Cloud9 Editor)
- Editor.md Examples
- TinyMCE 轻量级的基于浏览器的所见即所得编辑器
- UEditor 百度web前端研发部开发所见即所得富文本web编辑器
- KindEditor在线编辑器
- CKEditor 富文本编辑器
- Textbox 极简但功能强大的在线文本编辑器
- Jodit Editor
- Simditor
- froala The Next Generation WYSIWYG HTML Editor
4.5 电子表格组件¶
- Univer 是一套企业文档与数据协同解决方案,融合了电子表格、文档和幻灯片。
- LuckySheet
- LuckysheetDocs
- LuckySheet Luckysheet 已不再维护,推荐使用 Univer 替代
- LuckySheet Vue 在vue cli 3项目中使用Luckysheet和Luckyexcel
- LuckySheet Vue3 在vue3, vite项目中使用Luckysheet和Luckyexcel
4.6 mermaid回调组件¶
基于 JavaScript 的图表工具,可渲染 Markdown 启发的文本定义以动态创建和修改图表。
4.7 PlantUML支持¶
4.8 编译工具¶
五、功能实现备忘¶
5.1 菜单项¶
- 文件菜单
- 导入、导出支持html、pdf、docx、json、yaml 非必须功能,可以延后
- 另存为功能 Ctrl + Alt +S
- 历史记录功能,记录最近修改的文件非必须功能,可以延后
- 编辑菜单
- 撤销、恢复、复制、剪切、黏贴、删除,monaco-editor本身支持,非必须功能,可以延后
- 查找、在文件中查找、在文件夹查找, 查找功能包含在文件中查找和在文件夹中查找,非必须功能,可以延后
- 替换、在文件中替换、在文件夹中替换,替换功能包含在文件中替换和在文件夹中替换,非必须功能,可以延后
- Ctrl + F 当前只支持在文档中查找和替换,后续看是否可以扩充功能,非必须功能,可以延后
- 视图菜单
- 全屏模式非必须功能,可以延后
- 显示/隐藏文件资源管理器、显示/隐藏文章大纲,就是打开/关闭左侧窗口
- 显示/隐藏行号非必须功能,可以延后
- 显示/隐藏换行符、制表符非必须功能,可以延后
- 折叠/展开标题,在编辑区显示折叠/展开,方便编辑非必须功能,可以延后
- 模板菜单
- 支持自定义模板和模板管理非必须功能,可以延后
- 设置菜单
- 系统设置:字体、编辑器背景色、主题等设置
- 编辑器选择、默认monaco-editor
- markdown解析器,默认markdown-it,支持选择remarkable、marked、commonmark.js
- 工具菜单
- 电子表格编辑
- 简单的绘图工具
- mermaid绘图
- 插件菜单
- 引用网页工具,集成在本地工具上
- 支持选择在浏览器中打开,还是在本地工具打开
- 帮助菜单
- 版本发布信息
- 键盘快捷方式查询/设置菜单
- 使用文档,简单的指导
- 提交创意、issue
- 主页
- 致谢 各个开源软件
- 检查更新
5.2 左侧栏功能优化完善¶
- 左侧native-tab
- 当前从大纲切换回文件资源管理器时,资源管理器被重新渲染了,没有保持之前的状态
- 大纲功能未实现
- 增加绘图功能
- 增加mermaid功能
- (已解决)渲染区域中的连接,点击之后未跳转到浏览器页面,直接在app中打开了页面,而且无返回功能,在使用鼠标左侧后退键后退时,app返回到了刚打开的状态
- 渲染区连接,在浏览器中打开,不在app中打开
- 在app中打开后,想办法看是否能增加回退或者关闭按钮,返回后回答打开链接之前的状态
- 渲染区右键功能
- 完善从word、html、json、yaml文件导入
- 完善复制、删除、剪切、黏贴基本功能
- (已解决)完善重命名功能
- 完善刷新功能,重新加载文件
- 完善查找功能
- 完善在资源管理器中打开功能
5.3 编辑器功能优化完善¶
- 有序列表、无序列表,在换行的时候,如果上一行以列表开头,换行时自动增加列表头
- 文字颜色、背景功能完善
- 完成monaco-editor右键功能配置,支持插入各类图片、模板等
- 完善编辑栏文字字体选择、字体大小选择、各个按钮功能完善
- 完善各种快捷键处理Ctrl + B(加粗)、Ctrl + I(倾斜)、Ctrl + U(下划线)
- (已解决)mermaid渲染完毕之后,窗口底部出现了多余部分
- 编辑区域和渲染区域显示对齐
- (已解决)Ctrl + V 保存图片功能