构建自托管的笔记系统

这两年各种笔记系统快速井喷,好像谁都能来掺一脚,app store随便搜索一个关键字就会有一大堆的结果,从老牌的印象笔记,Bear,MWeb,有道云笔记再到新星专注笔记之类,从买断制到订阅制,从全平台到iOS独占,什么样的都有,如果你是一个相对包容的人,那么大牌的笔记软件就足以满足需求,代价是承受不菲的订阅费用以及陈旧的笔记客户端?

我坚信订阅制对软件开发而言是一件有促进作用的好事,能够督促开发者在软件的生命周期里修复问题,并提供更好的在线服务以及售后帮助,但也不能不承认,订阅制对普通消费者并不那么友好,我得每月持续支付才能保证我的数据是安全的,是可用的,还要担心软件供应商价格政策的调整,包年遇上优惠就觉得亏惨,包月遇上涨价也难免不舒服。

如果可以的话,最好的状态肯定是自托管,而自托管中成本最低的就是git的方式,不管是coding还是GitHub都提供了足够大的空间来存储笔记数据,同时,repository的方式也让所有文件格式的存储成为可能,但这样也会引出另一个问题:移动端怎么办?

移动端真的是很让人头疼,git在移动设备上的支持本就一般,要是想做进笔记软件中那更是冷门,我的记忆中应该还没有开发者做这一块的?

有时间尝试一下,立个flag哈哈哈。

除开git,那也就只剩下自托管的笔记软件。

Leanote

没有记错的话,官方已经抛弃了这个软件,全部开源,但已经好多年不更新了,iOS的客户端连全面屏都没有支持,桌面客户端也是勉强能用,很一般,用现在的话讲一点都不现代。

不过Leanote实现了很多重要特性,例如笔记历史,差分对比,对markdown的支持,标签系统,就是移动端过于欠缺,是个遗憾。

为知笔记

终于写到本文的主角。为知笔记是我知道的,第一家开放笔记后端docker服务下载的主流笔记提供商,并保持了较高的更新频率,当前的docker镜像我甚至觉得哪怕再也不更新也是完全够用。

同时他们主打的网页剪辑功能也能在私有部署docker 镜像上运作,而且浏览器插件webclipper也支持将网页剪辑成markdown文件直接保存到为知笔记中,不管是私有服务还是官方服务,简直不要太爽。

完整的自托管笔记工作流Git + Wiz

本地的一些技术文档编写我的选择是Git工具加史上最好用的markdown编辑器typora,可能说其来有点夸张,不过Typora确实是我用过最好用的编辑器,建议没用过的人都去用一下。

Typora

整个Document仓库可以包含所有类型的文件,不管是代码还是doc文档,并且这些文档还有一个很重要的特性--不需要在移动端查看与修改。

为什么要执着于在移动端查看?因为有很多的思绪是转瞬即逝的,而在电脑上写作并不足够快速,可能开机的功夫就枯竭了。我希望能够掏出手机就能直接查看和编辑。所以接下来的工作就交与为知笔记工作流来完成。

WizNote Lite Mobile

先来说移动端,我的选择是WizNote Lite,这是他们最新的一个项目,使用跨平台的React-Native开发,我最看重的一点就是它实现了手机上markdown实时预览,类似于Typora的所见即所得,当前只发布了第一个版本,还在快速迭代中。

不过也有一个问题,那就是WizNote Lite只支持为知笔记中的Lite文件夹,我估计他们是想仿照Bear的标签系统,弱化以前的无限层级的文件夹嵌套,所以以前在为知笔记中写的笔记就没办法同步到手机上,anyway,这不是一个大问题,后面我会提供办法解决。

Neeto-Vue 更完整的WizNote Lite 桌面客户端

Github:项目地址

Url:https://github.com/TankNee/Neeto-Vue

我能理解官方为了提升用户体验,在Lite客户端只同步单一的markdown文件,以及选择不与其他文件夹互通,保证体验的统一性。于是,我为了解决这些让我不爽的地方,我决定自己动手丰衣足食,用为知的API来实现一个更好的?更适合我的笔记客户端。

于是就有了Neeto-Vue,从名字就可以看出,是用Vue构建的,我使用了堪称是艺术品的Quasar UI框架,我相信只要是用过它的开发者一定会对它赞不绝口,因为它真的是太完整了,从分割条到右键菜单,从短通知到无限滚动,应有尽有,因此我在开发Neeto-Vue的过程中几乎只写了不到一百行的CSS样式,可以想象这个开发流程是有多么顺畅,而且它统一的Material风格也让软件更加统一,舒适。

Neeto-Vue基于Electron,因此我能很方便地实现全平台的支持,借助Github Action我构建了完整的开发工作流,自动构建,自动发布。

即使渲染Markdown内容

使用开源的markdown编辑器Vditor,并优化了界面样式,兼容WizNote Lite笔记。

兼容WebClipper剪辑笔记

使用wiz-markdown解析库,能够兼容更多的笔记内容,提升使用体验。

迁移markdown笔记到Lite文件夹

由于为知的限制,直接在官方服务中将笔记移动到Lite文件夹是没办法再Mobile端显示笔记内容的,我对这一块做了对应的处理,你只需要在Neeto-Vue中右键笔记项,点击移动笔记即可

支持简单的本地缓存

使用Electron-Store来实现笔记的本地缓存,加快软件的加载速度,但是,与此同时需要提醒但是,Neeto-Vue对网络是强需求但,所有同步操作都需要联网进行,不过完全本地化但离线操作也已经加入计划,会在未来但某个时间段实现。

而后就能很方便的迁移你需要的笔记。

截图展示

后记

Neeto-Vue还处于一个非常初级的阶段,如果只是作为一个在线的编辑器,那他应该已经合格了,这篇文章我是全程在Neeto-Vue上编写的,并没有感到什么不适,因为在这个阶段,已经做的足够好了。

我以前就想过,笔记究竟应该是什么样子的,是像印象笔记,专注笔记那样,格式丰富,支持各种各样的格式,多样的多媒体支持,还是像熊掌记一样,简单的内容展示方式。前者在支持多种格式的同时也会丧失迁移的兼容性,后者也不必说,缺少足够的格式来展示自己的所思所想,所以必须要在两者之间做一个抉择。

很不好做抉择,但这是一件值得权衡的事情。

最后我选择的这个工作流,在我心里,较好的平衡了两者,同时也满足了我自托管数据的愿望,而且自己写的笔记客户端也能够快速地响应我的需求变化,说不定我那天就想着实现双向笔记链接了呢?

RoadMap

欢迎前往Github Project页面查看软件的未来计划

URL:https://github.com/TankNee/Neeto-Vue/projects/1

Neeto-Vue还处于快速迭代和发展中,可能每一个版本都会有巨幅的变化,所以还请时刻关注项目进度,你也可以在设置中检查软件更新,随时更新到最新的支持版本

你可以前往Github Release下载最新版的Neeto-Vue

Url:https://github.com/TankNee/Neeto-Vue/releases

如果你有任何意见,请前往Gtihub给我留言或者发issue,万分感谢!

Neeto-Vue:我为了记笔记,手写了一个为知笔记客户端的更多相关文章

  1. servlet(1) - 手写第一个servlet程序 - 小易Java笔记

    声明:如tomcat的安装目录为D:\Java\tomcat6,下面要根据tomcat的安装目录而定 1. 建立程序的文件结构 ==>找到tomcat的安装目录,在webapps目录下新建一个名 ...

  2. 为sproto手写了一个python parser

    这是sproto系列文章的第三篇,可以参考前面的<为sproto添加python绑定>.<为python-sproto添加map支持>. sproto是云风设计的序列化协议,用 ...

  3. 手写MQ框架(三)-客户端实现

    一.背景 书接手写MQ框架(二)-服务端实现  ,前面介绍了服务端的实现.但是具体使用框架过程中,用户肯定是以客户端的形式跟服务端打交道的.客户端的好坏直接影响了框架使用的便利性. 虽然框架目前是通过 ...

  4. 手写内网穿透服务端客户端(NAT穿透)原理及实现

    Hello,I'm Shendi. 这天心血来潮,决定做一个内网穿透的软件. 用过花生壳等软件的就知道内网穿透是个啥,干嘛用的了. 我们如果有服务器(比如tomcat),实际上我们在电脑上开启了服务器 ...

  5. Spark学习笔记——手写数字识别

    import org.apache.spark.ml.classification.RandomForestClassifier import org.apache.spark.ml.regressi ...

  6. java笔记——手写+键入

    Frame.setDefaultCloseOpreation() Default:默认的 设置默认关闭操作 (0:什么都不干: 1:隐藏窗口: 2:关闭窗口但继续运行程序: 3:关闭窗口关闭程序:) ...

  7. java笔记-手写

  8. ajax简单手写了一个猜拳游戏

    使用ajax简单写一个猜拳游戏 HTML代码 <!DOCTYPE HTML> <html lang="en-US"> <head> <me ...

  9. 从一到二:利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试

    通过从零到一的教程,我们已经得到了通过mnist训练集生成的caffemodel,主要包含下面四个文件: 接下来就可以利用模型进行测试了.关于测试方法按照上篇教程还是选择bat文件,当然python. ...

随机推荐

  1. 第三章 存储器的扩展(二)——> 重要

    3.2 主存储器 四.只读存储器(ROM)---->了解(考试也可能会考) 掩膜ROM(MROM) 行列选择线交叉处有 MOS 管为"1" 行列选择线交叉处无 MOS 管为& ...

  2. 如何解决Visual Studio 首次调试 docker 的 vs2017u5 exists, deleting Opening stream failed, trying again with proxy settings

    前言 因为之前我电脑安装的是windows10家庭版,然而windows10家庭没有Hyper-v功能. 搜索了几篇windows10家庭版安装docker相关的博客,了解一些前辈们走过的坑. 很多人 ...

  3. GitHub基础使用指南

    引言: 只要进行了一段时间的软件或者编程相关知识的学习,相信大家或多或少都会见过这只"猫猫",这可不是什么宠物店铺的商标,身为即将成为程序猿/媛的你,或者已经是一位程序猿/媛的你, ...

  4. oracle range分区表已经有了MAXVALUE 分区,如何添加分区?要不能删除MAXVALUE分区里的数据,不影响在线应用。

    来做个实验说明该问题:1.创建个分区表SQL> create table p_range_test 2 (id number,name varchar2(100)) 3 partition by ...

  5. Spring Cloud实战 | 第十篇 :Spring Cloud + Seata 1.4.1 + Nacos1.4.0 整合实现微服务架构中逃不掉的话题分布式事务

    Seata分布式事务在线体验地址:https://www.youlai.store 本篇完整源码地址:https://github.com/hxrui/youlai-mall 有想加入开源项目开发的童 ...

  6. 来不及解释!Linux常用命令大全,先收藏再说

    摘要:Linux常用命令,很适合你的. 一提到操作系统,我们首先想到的就是windows和Linux.Windows以直观的可视化的方式操作,特别适合在桌面端PC上操作执行相应的软件.相比较Windo ...

  7. 私有镜像仓库Harbor基础介绍与部署

    企业级私有镜像仓库Harbor 一:介绍 Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为dock ...

  8. PKU2186 Popular Cows 受欢迎的牛

    题目描述 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N(N<=10000)头牛,给你M(M<=50000)对整数(A,B),表示牛A认为牛B受欢迎.这种关系是具有传递性的,如果A认为B ...

  9. IDEA安装codota插件和使用,开发人员的知心伙伴

    打开IDEA 点击左上角的File之后,如下图 成功后如图所示

  10. uni-app开发经验分享十二: Android平台应用启动时读写手机存储、访问设备信息(如IMEI)等权限策略及提示信息

    Android平台从6.0(API23)开始系统对权限的管理更加严格,所有涉及敏感权限都需要用户授权允许才能获取.因此一些应用基础业务逻辑需要的权限会在应用启动时申请,并引导用户允许. 读写手机存储权 ...