Yank Note 是我编写的一款面向程序员的笔记利用。这里我将会写下一些对于 Yank Note 的文章
tl;dr
我想做一款我本人(用户)能够齐全掌控的笔记软件
缘起
从大学开始,我就始终在尝试应用各种笔记软件,从 Sublime Text 间接编辑文件,到应用印象笔记、OneNote 等各种云笔记,最初我抉择了为知笔记。
然而起初,为知笔记开始免费,越来越臃肿,反馈慢,Bug 也多。最终,我放弃了它。备份笔记花了一些功夫,我开始不再置信云产品,本人电脑上的才是真正属于本人的。
于是我开始寻找一款本地笔记软件,断断续续是用了不少产品,这些当中只有 Joplin 让我应用工夫最长,但也不是齐全称心。前面,我还是回退到了应用 Sublime Text 写 Markdown 的计划。
最终在三年前的某一天,我决定本人写一个供本人应用的笔记工具。花了一个下午工夫,我拼凑出了第一个能够应用的版本。应用 Node.js 做服务端,Vue 做前端。性能简陋到什么水平呢?只有读取和写入文件的性能;没有按钮,只有快捷键;界面随便搭在一起。完完全全就是一个性能简陋且俊俏的记事本。
我过后也不晓得本人须要什么,要做出什么。起初我才缓缓找到这样的指标
- 界面字大不费眼 :)
- Markdown 撰写
- 图片文件保留在本地,导出 Markdown 文件可简略解决离线工作
- 反对一些流程图表绘制 plantuml mermaid
- 反对加密解密,用来保留账号等隐衷文件,文件可独自设置明码
- 不须要更多花哨性能,简略够用就行
- 尽量少依赖三方库,也不花心思保护,杂凑在一起的性能,恰好工作即可 ^_^
- 在文档中运行 PHP Python Node.js 代码块
而这时候,界面长这样
总的来说,这时候我还是都是依照本人想法来做这个利用,齐全不思考是否好看,是否不便,只有性能满足本人需要即可。
起初,我的一位共事感觉这个利用很实用,开始应用它。我在掘金上发了一篇文章 Markdown 编辑器 (自家用),掘友 @KDA 评论道:“求更新欠缺,很好用”。于是我开始想,这个货色除了我本人,是不是能够再欠缺欠缺,给其他人应用。
然而这时,才发现我还没给这个编辑器取一个名字。GitHub 仓库名是随便起的“yn”,所以顺着这个,正式起名“Yank Note”
为了不便其他人应用,也决定采纳 Electron 开发,不便启动运行。
进化
这里再思考一下,我到底须要一款怎么的笔记利用,最初我定了上面几点准则,依照重要性排序
- 回绝云服务: 数据要保留在本地,利用也要在本机运行,备份和同步的需要能够走 Git 或者云盘,私人笔记,无需合作性能。甚至于图床之类,也不要应用,就存本地。
- 回绝专有格局: 应用 Markdown 文件保留所有信息,不要给我什么 json 格局或者其余格局的,万一我哪一天弃用这个软件,要能很不便迁徙。
- 开源: 一款软件,我要短暂应用,那么不能是关闭的。如果哪一天利用作者不更新了,我要能本人 fork 一份来本人维持根本的运行。
- 可拓展: 这款利用要具备足够的拓展性,我遇到一些本人特定的需要,或者应用软件有不棘手的中央,我要能本人写插件或者拓展来批改和实现。
- 克服: 利用须要放弃简略,不要太臃肿,不要太花哨,不要有过多动画烦扰我的操作。比方 Notion 的菜单动画,第一工夫感觉很炫酷,然而应用一下就会感觉很拖沓。而它的一些工具提醒又展现太快,变成操作的烦扰项。这里我十分认同 Sublime Merge 的理念。Sublime Merge 是我应用过的体验最好的 Git 客户端,应用它是一种享受。
- 跨平台: 我同时应用 Windows,macOS,Android,iOS。我须要让这款利用是跨平台的,至多在桌面端是要跨平台的。不过我的大部分笔记和文章都是在电脑上实现,手机上只须要记录一些灵感即可,这种需要很多软件都能实现得很好,比方 iOS 自带的备忘录。另外既然文件格式也不是专属,也不绑定云服务,那么很多挪动端的 Markdown 编辑器也能很好的工作,在挪动端跨平台的需要就没那么强烈。
下面的准则都是为了让我能够短暂应用一款软件。如果你认同下面的观点,那么 Yank Note 或者是你的菜。
我是一枚规范的程序员,后端前端嵌入式都搞过,偶然还做下白帽子,当初次要搞前端。这让我的笔记需要有一些特殊性,上面说下我应用 Yank Note 的一些具体场景。
- 做笔记: 这是根本需要,我须要做的笔记中有不少代码,代码最好能不便复制和运行。比方学习一些 js 个性的时候,我会将代码片段存下来,下次查看立马就能运行。
- 工作日志: 刚毕业那会儿,工作上什么事件根本都能记在脑子里,当初不行了,须要有个中央记录,安顿一些待办事项,工作安顿等。
- 写文章: 我发文章比拟少,很多文章都是在工作时候写计划和文档。这时候笔记利用能反对嵌入图形就比拟重要。
- 编写工具: 平时在工作中,有不少脚本工具,之前都比拟散落在各处或者阐明比拟少,后续应用就比拟麻烦。而当初它们都对立在 Yank Note 中组织关联。很多脚本和代码都能更不便关上,也能有更丰盛的阐明和 UI 界面。
通过下面这些场景洗礼后,Yank Note 长这样
一些问题
完满不是没有什么能够减少的,而是没有什么能够缩小的。
上面是一些用户问过我,和我做 Yank Note 的时候,思考过的一些问题,大部分都是对于“ 为什么不 ”。
- Q: 为什么要采纳 C/S 架构?
A: 我喜爱浏览器,我平时都是在浏览器中应用 Yank Note,配合浏览器插件我能够做更多事件。当初的架构是重客户端轻服务端,将来还会持续精简服务端逻辑。 - Q: 为什么要应用编辑预览离开,而不是所见即所得?
A: 一来是因为我喜爱文本,我喜爱管制文本,我更喜爱代码的形式来写货色。二是技术起因,富文本编辑器很难做好。我体验过不少富文本编辑器 / 组件,都很难达到我想要的体验,还不如间接文本来得间接。 - Q: 为什么没有工具条来调整格局?
A: 和上一条一样,我喜爱文本,不喜爱过多的 UI。用户应该应用文原本管制格局,写 Markdown。应用 Yank Note 的用户应该是相熟 Markdown 的。当然我也能够偷懒不做这个性能了。 - Q: 为什么不做成 VSCode 插件?
A: VSCode 插件限度还是比拟多,一些性能不能很不便实现,我还是更喜爱浏览器来得简略间接。如果你须要,这个 VSCode 插件 很不错。 - Q: 为什么不集成 Git 性能,主动推送到 Github?
A: 我本人的几个笔记仓库都是依靠 Github 贮存的,所以这个需要还是比拟迫切的。然而我还是想要把 Git 集成排除在 Yank Note 性能之外。每个用户都有本人的习惯来治理 Git 仓库,比方我喜爱 Sublime Merge。当然为了便捷,我也写了一个 Yank Note 插件 来疾速提交和推送内容。 - Q: 为什么不做成在线版?
A: Yank Note 从一开始就是 C/S 架构,只是当初多了 Electron 的一些性能,要做成在线版还是很容易。比方当初的 在线 Demo 就是屏蔽了接口申请的版本。然而做成 Web 服务,那么就违反了我的第一条准则,我不心愿这个编辑器脱离用户的掌控。另外就是 Yank Note 因为异样凋谢,为了拓展性,平安问题很难思考周全(我是业余白帽子)。 - Q: 为什么不做文件关联,能够间接关上 Markdown 文件的性能?
A: 正如下面所说,Yank Note 异样凋谢,有代码运行,宏替换,HTML 解析等性能。为了更高的拓展性,简直将外部能力齐全放开,包含一些危险的能力如命令执行,任意文件读写等,因而我没做文件关联性能。只能从仓库关上,能够让用户更审慎的关上外来文件。 - Q: 是否思考做成双链笔记?
A: 双链笔记很火,然而我体验过一些双链笔记软件,如 Obsidian,我发现我并不需要它。这篇文章的观点我比拟同意 请不要神化双链笔记。我理论应用笔记的体验来看,我最须要文档之间的单向链接,然而粒度不须要到“块”,到题目即可。反向关联我只须要能晓得以后文档被谁援用即可。我不同意扁平的笔记构造,就像写代码,我不同意所有逻辑都在一个文件。我须要层级,须要能援用模块,晓得以后模块被谁援用就够了。这方面 Yank Note 还要增强。
将来
这几年来我始终应用 Yank Note,开发的性能也是因为本人和用户有需要。我在开发 Yank Note 的过程中,我的编程技能也晋升不少,所以哪怕是出于学习的目标,我也还会持续开发保护上来。
当初能预计到的将来几个欠缺的点:
- 加强根底体验
- 精简服务端代码
- 强化文档之间的链接
- 开发简略的挪动端利用
如果你对 Yank Note 感兴趣,想应用或者参加奉献,能够到 Github 理解更多。
本文由「Yank Note – 一款面向程序员的 Markdown 笔记利用」撰写