记录一个笔记软件的开发

421 阅读2分钟

PlainNote

前言

用 Obsdian 用烦了,文件夹的多层嵌套令我很不舒服。之前用过有道云笔记,它的功能又多又杂,还有广告干扰视线,感觉用起来不是很舒服。于是我就想开发一个专门记录松散笔记的软件自用,反正难度不大,就当练练手呗。

需求解析

功能性需求

  1. 用户没有管理文件夹和文件的过程,文件之间的关联也应该简单而直接。
  2. 有一个强大的查询功能,能帮助用户快速查询到文档。

非功能性需求

  1. 界面简洁
  2. 最好的独立的桌面软件
  3. 4秒内、两个步骤以内就内新建一个笔记。

技术选型

为了增加开发效率,减少心智负担,用户交互界面我选择用 Web 前端来做,选用了写起来比较舒服的 Solid.js。虽然 Solid.js 比较新,生态比较弱,但是我这个项目也没有立即上线的需求,允许我花点时间去踩踩新东西带来的坑,顺带多学一些东西回来。

框架的话,目前最流行和成熟的方案是 Electron,但是 Electron 运行时所附带的 Node.js 和 Chromium 对于用户来说,无论是内存占用还是储存占用都过大了。于是我尝试了几个使用系统原生 Webview 的方案:node-webview、Bunview、Wails、Tauri,最后发现 Wails 适合我。Wails 是 go + Webview 的框架,对 Vite 的开发环境也兼容。

数据库选用了带 fts 的 SQLite,这是一个非常成熟的解决方案,它是为应用的嵌入式数据库设计的,不需要专门开启一个数据库服务。中文分词器使用了 github.com/wangfenjin/…