1 前言
LeanoteVditorVditor
2 需求分析
作为一个自用标准的笔记软件,目前的需求如下:
- 😆 界面好看,暗黑色系。日常使用的软件基本都是暗黑的,夜间场景比较多,各种切换不要受到影响
- 😛 交互越少越好,专注与笔记本身。什么登录啊、弹窗啊、广告啊什么的,统统不要,能 CURD 就行。
- 🙄 支持全局搜索,一个文件管理所有的笔记
- 🥰 Markdown 编辑所见即所得,像 Typora 一样
3 技术选型
根据需求,结合自己目前所了解的技术能力,做如下选型:
VditorElectronGolangSqlite3
4 开发环境
| 信息 | 说明 |
|---|---|
| 操作系统 | Microsoft Windows 10 专业工作站 10.0.19042 64位 |
| 开发工具 | Visual Studio Code |
| Vditor 版本 | 3.8.10 |
| Electron 版本 | 13.0.0 |
| Vue 版本 | 3.0.0 |
| Node 版本 | 16.13.1 |
| NPM 版本 | 8.1.2 |
| Golang 版本 | go version go1.17.5 windows/amd64 |
| Sqlite3 版本 | 3.32.3 |
5 开发经过
5.1 前端开发
VueElectronVueElectronElectron
vue ui
命令来创建 Vue 项目了。已安装的插件如下:
运行的依赖,也就是引入的外部组件如下:
软件功能比较简单,所以界面布局也一切从简了。
以上就是所有的布局了:
- 💡 上方负责标题栏和窗体控制
- 💡 左侧负责笔记导航
- 💡 右侧最大的区域负责笔记的编辑
新拟态
具体代码,详见 gitee 仓库 gitee.com/Yogurt_cry/…
5.2 服务端开发
Golang检索新建保存删除获取
所以使用 Golang 来操作 sqlite3 就是关键,不知道该怎么处理,所以就参考了一下网上大神的操作,完成了开发。
参考资料:
6 打包经历
新拟态
Visual StudioF5F6Electron
原以为只要一个:
npm run electron:build
就可以解决所有问题,结果花了我 5 个多小时去处理各种各样的异常错误。
6.1 Electron 打包配置
这是第一个没想到的问题,第一次打包完后启动不了,嗯。。。准确的说应该是启动了,但是没法进入项目,就一个黑屏。跟 Vue 打包完后没有通过 Nginx 配置的效果一样。
vue-cli-plugin-electron-builder
6.1.1 Electron 打包时 preload.js 没有输出的问题
嗯,这也是打包配置文件的问题。
6.1.2 Electron 打包时外部程序没有输出的问题
嗯,这也是打包配置文件的问题。
打包参考示例如下:
6.2 child_process 无法启动子进程的问题
main.js
background.js
6.3 Golang 项目的绝对路径问题
./go run ./main.gonote.db/Static
func main() {
appPath, _ := os.Executable()
currentFolderPath = filepath.Dir(appPath)
println(currentFolderPath)
}
参考资料:
7 后记
以上就是所有的开发过程,利用业余时间,前前后后花了 3 周吧,把这个工具整出来了,还是很有成就感的。除了收获了一个自己的笔记工具外,还收获了接触新技术的经验,为后面的开发开了一个好头,未来在开发桌面级应用时有了一个新的选择。
对了,这篇文章就是用这个工具写的。