因为喜欢写日记,我做了一个跨平台的本地日记APP
项目由来
年少时,对未来总是充满幻想,不时陷入沉思(上课经常溜号)。我时常会想:假如未来的我,回望过去,渴望了解我年少时的心路历程,想要知道我曾经想过什么、做过什么,有什么办法?
时光机?不现实。
写日记?尚可。
于是乎,日记一本又一本,不仅记录了初、高中时期的点点滴滴,还承载了我的青春年华和无数的奇思妙想。
在大学阶段,逐渐减少了写日记的习惯。那段时光仿佛匆匆如流水,转瞬即逝。尽管我的脑海中仍然留存着许多当时的小事,但那些具体的想法和感受,早已随风而逝,如今想准确的回忆起来,确实有些吃力。这未尝不是一种遗憾。
某一天,突然萌发了一个念头。既然会写点代码,为什么不开发一个日记APP,也能把从前写日记的习惯再捡回来。
说干就干。于是,它诞生了:
特点
- 极简风格的UI设计
- Markdown即时渲染
- 跨平台(Android,Windows,macOS,Web)
- 多尺寸响应式的界面布局
- 所有数据存储本地,无需联网
- 支持图片、音频、视频
- 支持数学公式、脑图、图表、流程图、甘特图、时序图、五线谱
- 支持多种语言
- 支持深色模式
- 标签分类展示
- 天气、心情、位置
- 导出多种格式文件
- 支持文字、图片分享
- 支持webdav备份
- 同一局域网下同步传输
- 完美的沉浸式状态栏导航栏体验
截图
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
在线演示地址
https://yu-core.github.io/SwashbucklerDiary/
开发前的准备
开发语言
作为一名C#开发者,当然要用世界上最优雅的语言C#。
但实际上,还是写了一点js,有一说一,js是真灵活,虽然灵活的有些过头了
框架选择
感谢微软带来的bug,不对,是 MAUI 和 Blazor。
.NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。
使用 .NET MAUI,可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。
Blazor 是一种 .NET 前端 Web 框架,在单个编程模型中同时支持服务器端呈现和客户端交互性:
使用 C# 创建丰富的交互式 UI。
共享使用 .NET 编写的服务器端和客户端应用逻辑。
将 UI 呈现为 HTML 和 CSS,以支持众多浏览器,其中包括移动浏览器。
使用 .NET 和 Blazor 生成混合桌面和移动应用。
-
使用Blazor Hybrid,依托于MAUI,实现Windows,Android,iOS,macOS的客户端。
-
使用Blazor WebAssembly,实现网页端
至于为什么不用MAUI原生、Avalonia和Uno Platform呢?
- 学习成本太高
- Razor语法太香了,比XAML灵活。
- 可以使用广阔的web生态
组件库选择
Blazor的组件库太多了,见过的,听过的,不下10个。至于为什么当初选择了Masa Blazor,我也记不清了。(看吧,这就是没写日记的坏处)
但根据我的推算,应该有两个原因
- 符合个人审美,UI看着比较舒服。
- 对 MAUI 的支持比较不错。不仅宣传中有这方面的体现,实际使用也不需要什么额外处理。
起名
为什么叫侠客日记,因为当时在看《侠客行》
最初的时候想叫不正经日记,因为《邪不压正》里有句嘲讽老蒋的台词,“正经人谁写日记”,但是后来觉得对于没看过那部电影的人来说,这个名字可能会有误解。正好那时在看2001版的《侠客行》,不如就叫侠客日记吧。
谁不曾有过一个大侠梦呢?
设计
个人比较喜欢极简风格,界面尽可能的简洁,便于操作,也便于理解
参考了很多日记APP和常用APP:麻雀记,记时光,榴莲日记,光阴日记,无忧日记,天悦日记,小黑盒,微博轻享版。
经过不断的寻找灵感,反复的修改和调整,差强人意吧。不算非常出色,但基本上达到了预期的效果。
缺点
比如:
- 卡顿延迟
- 代码不规范
- 注释过少
- 标题栏优化不到位
- 不支持拖拽粘贴添加媒体文件
- 日志机制不太完善
- 备份或导出没有进度条
- WebDAV只有备份而不是同步
- 等等
由于水平有限,代码中存在很多不严谨的地方,希望以后能完善吧
源码
Github
https://github.com/Yu-Core/SwashbucklerDiary