谈谈网页应用的新潮流,虽是 Web App 却能读写本地文件(及三款代表App)

一直以来,网页应用程序(Web App)给人的感觉就是,用户数据总是在云端。网页本身就是云端的产物了,用户在里面生成的内容,自然也是在云端。

很长一段时间里, Web App 的确就是这样运作的。 所谓 Web App 在很多人眼里就是功能比较多的网页而已。而云端的网页无法自由的访问本地文件,这是浏览器守住的一条底线。 这样做的目的是保护用户不被一些恶意的网页所侵害,例如:通过网页窃取用户本地的信息,通过网页修改我们的本地文件,甚至执行脚本控制我们的电脑。

所以,我们以前一提到网页系统,总是感觉很麻烦,各种文件要上传/下载才能和网页交换信息。 而 上传/下载 都是在用户明确授意并指定哪些文件的基础上进行的。虽然每次指定文件很麻烦,但是整个过程相对安全,至少浏览器的本地访问底线就划在这里。

查看源图像

除了上传/下载 这类操作, 浏览器也能接受一些存放在用户本地电脑的少量信息,这些信息 有相当的保护和隔离机制,一般只有对应的网站(或调试工具)可以访问, 例如:很多人听到过的 cookie 和 其它本地存储机制。 这些信息虽然存储在用户本地,但完全由浏览器控制读写,不会和用户本地的其它文件发生交集,因此也算是受控的。

这种安全机制的缺点就是,将 Web App 的主要数据存储固定在了云端。网页版「云笔记」类应用就是最好的例子。

新方向

然而,近来情况发生了变化。 之前我们介绍过的 PWA(Progressive Web Apps)开始崛起。 PWA 可以离线使用,一些网页代码一次下载到本地后,之后就能像本地应用一样使用,不过如果数据仍旧要上传下载的话,PWA的意义就不是很大了。 本来就是为了脱离云端,最后还是被绑定在云端了。

另一方面,本地优先(local-first)隐私优先(privacy-first)的呼声也逐渐开始高涨,大家担心少数互联网巨头垄断所有个人信息,因此会有意识的把一些自己的内容留在本地,而不是交给云端。

对于一个网页应用来说,如果能直接访问用户本地文件,那么就能从技术上保证将数据留在用户手里,而不是云端服务器上。这样做的话, 同时也避免了上传下载时用户选择文件的麻烦,更加节约了网络带宽提升了运行速度(因为不需要和云端通信传输文件)。

这种朴素的想法,现在已经被主流浏览器实现, 浏览器将 一个新的 API 提供给了网页开发者,网页开发者可以 在用户 「授权一次」(指定某个文件夹)的情况下,自由读写那个本地文件夹下的内容。 理论上讲,做一个 网页版的 「本地文件管理器」 也是可能的。

顺便说一句,这个新的 本地文件 API 能得以推广,主要和 Chrome内核的普及有关,现在只要 Chrome内核支持,就约等于主流的浏览器全都支持。原本各个浏览器大厂各成一派,各自定一套标准的日子已经过去了,现在的 Web 新标准可以更快的来到用户面前。

代表作

这里火箭君列出三个 Web App 工具,都采用了上文提到的 本地文件访问 API。 这几个工具可以把用户的数据保存在本地的磁盘里, 除了第一次需要指定授权读写的文件夹以外,之后的体验就和一个本地 App 一样了。

LogSeq

这是一款 大纲类笔记工具(outliner),支持 markdown,支持双向链,可以生成图谱。适合 笔记整理,工作记录,任务分解,日志日记等场景。

LogSeq 的有些功能听起来就像是一个本地应用里提供的一样,例如: Obsidian,但是 LogSeq 却是一个 地道的 Web App, 而且,我们的笔记数据还可以被保存到了自己的本地文件夹里。

Logseq 创始人的故事本身就很励志,下次可以另外聊一下。

官网地址

https://logseq.com

Bangle.io

这是一款较新的 markdown 编辑器,也是一个Web App,但可以把文档存储到本地。 支持双屏打开编辑浏览,支持双链,支持/命令,。 难能可贵的是 其markdown 编辑也非常流畅。

App 主打 无需安装,完全离线,无需注册,数据自主, 深得和火箭君心意, 个人觉得有挖掘一下的潜力。

官网地址

https://bangle.io

VSCODE.DEV

这是 开发工具vscode 的在线版。在开发者圈子里, vscode 早就名声在外 ,除了开发程序,其实 vscode 也很适合 markdown 笔记(把 markdown 看作是一种程序语言的话),vscode 的插件也不少。

这次的 vscode.dev在浏览器内打开,但支持 github 接入 和 本地文件接入。 和上述两款工具一样,用户只要授权一次,之后的体验就像本地App一样。

官网地址

https://vscode.dev/

最后

我个人希望,WebApp 能逐渐变成一种全新的工具潮流。 而这其中,本地存储是重要的一环, 用户的数据只有回到用户自己手上,才能称得上是自己的工具。

WebApp 本地文件储的机制,正如 Bangle.io 在首页描述, 这是一个 for the next dcade 的新起点。

如果大家还知道更多这类 披着网页外壳,保存本地文件的 App ,欢迎留言,分享给更多的人知道。谢谢先!