有可能有一台只有浏览器的手机,但手机只有浏览器不太可能 cover

有可能有一台只有浏览器的手机,但手机只有浏览器不太可能

Web 与原生应用之争。

虽然本质上是用 web 做了一个「反 web 生态」,但微信小程序的成功,从某种程度上向我们证明了「一台只有浏览器的手机」并不是一个天方夜谭。

这个结论产生的逻辑是:从技术的角度而言,微信小程序本质上就是一个 Vue.js app,甚至现在也有 从微信小程序扩展到 web 甚至是原生 app 平台的开发框架。归功于在 web 之上的这套标准几乎没有任何底层技术门槛(基本上只需要在 app 里嵌入一个特殊的浏览器即可),现在只要是一个「入口级 app」都会集成「小程序」功能,甚至华为的 HarmonyOS 的生态建设也参考了小程序的逻辑,将 web 的技术栈引入到了原生应用的开发环境里

有关于「web 和原生应用」这个话题的另一个有趣的注脚是,基于 Electron 的 app 越来越流行。我之前偶然间翻到一个开源的、基于 Electron 的流媒体播放 app Nuclear 为 Electron 开脱的注解,翻译成人话就是,Electron 用起来这么方便,不用白不用。它其中对一些常见的、批评 Electron 的指责(例如很吃内存)也辩称「其实现在这种问题已经被解决」。我们先把「实际上有没有解决」这种事先放一边,这样的辩解并没有解决一个我对 Electron 最根本的疑问:既然你这个东西是需要套一个浏览器运行的,那我为什么不直接在浏览器里运行而去单独下载一个 app?

你看,QQ 最近也换到了 QQNT 架构。虽然传说底层很多逻辑依然是用 C++ 编写,但 UI 层已经是一个如假包换的 Electron——毕竟写网页肯定比写 Qt 来得方便得多。不过,我们再把眼光放远一点:在网页上运行一个聊天 app 它也不是不可能啊:例如微信和 QQ 都(曾)有过网页版;而很多聊天工具(例如 Google Chat、Discord 或者 Telegram)的网页版也是全功能、无功能妥协网页版。Web 现在已经连推送通知都有 API 支持了

即使是如同 Nuclear 和 Visual Studio Code 这种需要读写本地文件的 app 不方便搞真正的网页版,它的限制也是来自人为而非技术。具体到这两个 app 中,是因为在浏览器中的 web app 无法持续监听、读取和写入硬盘上的文件,这更多是出于隐私缘故而未在 web 中实现,而非做这个 API 在技术上有什么问题(毕竟现在 web 还能读写 USB 设备,就这一点而言,实现读写本地文件的 API 根本不是什么难事)。

从这种角度上来说,ChromeOS 可能是最接近「桌面版微信」的存在:整个系统就只有一个浏览器。Chrome 和它背后的 Google 的愿景十分远大:它们希望将所有吃性能的工作都交到云端,而本地就可以只有一个只用于交互渲染的设备,而且有了云端运算的助力,这种体验是十分协作友好和灵活部署的。但有个问题…… 这样的定位让大家对这种「只有浏览器」的设备的硬件预期十分低,以至于它的最低标准实际上并不能运行真正的性能密集型的 app(例如 Figma)。

喔对,Figma!虽然我已经买了一些 Figma 的股票(当然不是溢价如此多倍地买)而且十分看好这家公司的前景,但我不止一次地在各种场合中吐槽过「Figma 是一个令前端工程师十分大脑发光的产品」,因为「在 web 做视觉设计」本身就十分 tricky。这个世界上不止一个浏览器(别说都是 Chromium,不同 Chromium 版本号实现也不同。更别说还有 Firefox!),不同浏览器对于 web API 的实现也有可能是千奇百怪的,特别是对于各种各样的视觉渲染相关的 API。所以就很有可能出现的一种情况是,你在 A 浏览器里将一个元素放置在了 x 和 y,那么在 B 浏览器里,它的位置就变成了 x-a 和 y+b,这在视觉设计领域绝对是一种不可接受的结果。

但是,应该没有人精神变态到要在手机上使用 Figma,所以我觉得,一台「只有浏览器的手机」要比「只有浏览器的电脑」更现实。当然,你无法反驳的确有人这么做过却失败了,但既然当下连微信都能做成「整个社会的 OS」,那么我觉得一台「只能运行(开放很多的)小程序的手机」也并非是一个天方夜谭。